.
2665944699【第一套】
一、单项选择
1.下列数据中,为字符串常量的是(d)。
A、'A'
B、How do you do.关于printf函数正确的是
C、$abc
D、"house"
2.以下所列的C语言常量中,错误的是(b )。
A、0xFF
B、1.2e0.5
C、2L
D、'\72'
3.以下程序的输出结果是(d)。
main()
{float x=3.6;
int  i;
i=(int)x;
printf("x=%f,i=%d\n",x,i);
}
A、x=3.600000,i=4
B、x=3 i=3.600000
C、x=3,i=3
D、x=3.600000,i=3
4.若k是整型,则以下程序段的执行结果是:(b )
k=-3;
if(k<=0) printf("####")
else printf("&&&&");
A、####
B、有语法错误,无结果
C、&&&&
D、####&&&&
5.若x=2,y=3则x||y的结果是( c)。
A、3
B、0
C、1
D、2 6.针对下列程序段回答问题(b ).
for(t=1;t<=100;t++)
{
scanf("%d",&x);
if(x<0) continue;
printf("%3d",t);
}
A、x>=0时什么也不输出
B、最多允许输出100个非负整数
C、printf函数永远也不执行
D、当x<0时整个循环结束
7.以下程序的执行结果是(b )。
main()
{  int  num = 0;
while( num <=    2 ) {  num++;  printf( "%d,",num ); }  }
A、0,1,2
B、1,2,3,
C、1,2,3,4,
D、1,2,
8.选择正确的输入语句(d )。:(其中:char string[20];)使得string的内容为"I am student".
A、scanf("%s", string);
B、scanf("%c", &string);
C、scanf("%s", &string);
D、gets(string);
9.对以下说明语句int a[10]={6,7,8,9,10};  的正确理解是(b)。
A、将5个初值依次赋给a[6]至a[10]
B、将5个初值依次赋给a[0]至a[4]
C、因为数组长度与初值的个数不相同,所以此语句不正确
D、将5个初值依次赋给a[1]至a[5]
10.以下标识符中可以作为用户函数名的是(d).
A、struct
B、int
C、union
D、go_to
.
11.以下叙述错误的是( b).
A、函数调用可以出现在一个表达式中
B、函数调用可以作为一个函数的形参
C、函数调用可以作为一个函数的实参
D、函数允许递归调用
12.若用数组名作为函数的实参,传递给形参的是(b)。
A、数组第一个元素的值
B、数组的首地址
C、数组元素的个数
D、数组中全部元素的值
13.在C语言程序中(b)。
A、函数的定义可以嵌套,但函数的调用不可以嵌套
B、函数的定义不可以嵌套,但函数的调用可以嵌套
C、函数的定义和函数调用不可以嵌套
D、函数的定义和函数调用均可以嵌套
14.下列说法中正确的是(b ).
A、函数调用不占运行时间,只占编译时间.
B、宏替换不占运行时间,只占编译时间.
C、有参数的宏定义,就是函数.
D、在定义宏时,宏名与带参数的括弧之间可以加空格.
15.若有说明:int *p,m=5,n;以下正确的程序段是(d)。
A、scanf("%d",&n);*p=n;
B、p=&n;scanf("%d",*p)
C、p=&n;scanf("%d",&p);
D、p=&n;scanf("%d",p);
16.对于下述定义,不正确的叙述是(b ). union data
{int i;
char c;
float f;
}a,b;
A、变量a的地址和它的各成员地址都是相同的
B、可以在定义类型的同时定义变量a,并对a的任意成员初始化
C、变量a所占内存的长度等于成员f的长度
D、如果有定义语句union data a={6};则对变量a的初始化是正确的
17.有两个整型变量dog和cat,若要从磁盘文件把数据读到其中,
正确的形式是( b).
A、fscanf(dog ,2,1,fp);
B、fscanf(fp,"%d%d",&dog ,&cat);
C、fscanf(dog ,cat,2,1,fp);
D、fscanf(fp,"%d",&dog ,&cat);
DBDBC BBDBD BBBBD BB
二、判断
1.若a和b类型相同,在计算了赋值表达式a=b后,b中的值将放入a中,而b中的值不变2.char c[6]="abcde"; printf("%3s", c)表示输出的字段的宽度,如果被输出的数据的位数大于3,按实际位数输出.
3.条件表达式x?'a':'b'中,若x=0时,表达式的值为'a'.
4.在逻辑运算符中的运算级别由高向低依次为&&->||->!
5.do-while循环由do开始,while结束,循环体可能一次也不做。
6.continue语句用于终止循环体的本次执行.
7.若有定义和语句:
int a[3][3]={{3,5},{8,9},{12,35}},i,sum=0;
for(i=0;i<3;i++) sum+=a[i][2-i];则sum=21. 8.int a[3][4]={{1},{5},{9}}; 它的作用是将数组各行第一列的元素赋初值,其余元素值为0。
9.定义一维数组的形式为:类型说明数组名[表达式],其中表达式可以是正整型常量表达式、字符常量表达式.
10.在C语言中,函数名代表函数的入口地址.
11.函数调用语句:func(rec1,rec2+rec3,(rec4,rec5));中,含有
.
的实参个数是5.
12.数组名可以作为函数的实参和形参. 13.一个include 命令只能指定1个被包含的文件。
14.若p 为指针变量,a 为数组名,则a-p是合法的表达式.
15.在程序中定义了一个结构体类型后,可以多次用它来定义具有该类型的变量。16.C语言中,关闭一个文件就删除了这个文件.
对对错错错对对对对对错对对对对错
三、填空
1.已知float i=5.6;int a;写出语句a=(int)i; 执行后变量i 的值是_5.6____.
2.设有int x=11,则表达式(x++ * 1/3)的值是___3__。
3.若int x=6;则x+=x-=x*x表达式最后x的值是__-60___.
4.设x=2&&2||5>1,x的值为__1___.
5.连接字符串的函数是_____,只写函数名即可.
6.函数不可以进行嵌套定义,但可以进行嵌套_____.
7.设有以下结构类型说明和变量定义,则变量b在内存所占字节数是_____。
struct stud { short int age; char num[3];  float s[2];  double ave; } b,*p;
8.若有fp=fopen("a1.dat","r+")打开文件语句,这个文件的数据是以_____的形式存放在内存中,该文件的使用方式为读/_____。
5.6  3  -60  1  strcat  调用21  ASCII码或ASCII 文本
四、程序设计
1./*------------------------------------------------ 【程序设计】
--------------------------------------------------
功能:输入n个数,并求出小于平均值的数的个数。
------------------------------------------------*/ #include "stdio.h"
int average_num(int a[],int n)
{
/*********Begin**********/
/**********  End  **********/ }
main()
{
int n,a[100],i,num;
void TestFunc();
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
num=average_num(a,n);
printf("the num is:%d\n",num); TestFunc();
}
void TestFunc()
{
FILE *IN,*OUT;
int n;
int i[10];
int o;
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("Read File Error");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{
printf("Write File Error");
}
for(n=0;n<5;n++)
{
fscanf(IN,"%d",&i[n]);
}
.
o=average_num(i,5);
fprintf(OUT,"%d\n",o);
fclose(IN);
fclose(OUT);
}
【参考代码】
int i,sum=0,k=0;
double average;
for(i=0;i<n;i++)
sum=sum+a[i];
average=sum*1.0/n;
for(i=0;i<n;i++)
if(average>a[i]) k++;
return(k);
===============
2./*------------------------------------------------ 【程序设计】
--------------------------------------------------
功能:从字符串中删除指定的字符。同一字母的大、小写按不同字符处理。
例如:若程序执行时输入字符串为:turbocandborlandc++从键盘上输入字符:n,则输出后变为:turbocadborladc++,如果输入的字符在字符串中不存在,则字符串照原样输出。
------------------------------------------------*/
#include "stdio.h"
void fun(char s[],char c)
{
/*********Begin**********/
/**********  End  **********/
}
void TestFunc() {
FILE *IN,*OUT;
char i[200];
/*char o[200];*/
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("Read File Error");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{
printf("Write File Error");
}
fscanf(IN,"%s",i);
fun(i,'n');
fprintf(OUT,"%s",i);
fclose(IN);
fclose(OUT);
}
main()
{
static char str[]="turbocandborlandc++"; char ch;
printf("原始字符串:%s\n", str);
printf("输入一个字符:");
scanf("%c",&ch);
fun(str,ch);
printf("str[]=%s\n",str);
TestFunc();
}
【参考代码】
char *q=s;
for(; *q; q++)
if(*q != c) *(s++)=*q;
*s=0;
===============
五、程序改错
1./*---------------------------------------------------
.
【程序改错】
--------------------------------------------------------
功能:依次取出字符串中所有数字字符, 形成新的字符串, 并取代原字符串。
例如:输入ab12c3d,则输出123。
注意:不得增行或删行,也不得更改程序的结构!
------------------------------------------------------*/
#include "stdio.h"
/**********ERROR**********/
void fun(char s)
{
int i,j;
for(i=0,j=0; s[i]!='\0'; i++)
if(s[i]>='0'&&s[i]<='9')
/**********ERROR**********/
s[j]=s[i];
/
**********ERROR**********/
s[j]="\0";
}
main()
{
char item[80];
printf("\nEnter a string: ");
gets(item);
printf("\n\nThe string is: \"%s\"\n",item);
fun(item);
printf("\n\nThe string of changing is: \"%s\"\n",item);
}
【改错1】
【学生答案】
void fun(char s)
【参考答案】
void fun(char *s)
void fun(char s[])
void fun(char s[80])
===================================== 【改错2】
【学生答案】
s[j]=s[i];
【参考答案】
s[j++]=s[i];
{ s[j]=s[i];  j++; }
=====================================
【改错3】
【学生答案】
s[j]="\0";
【参考答案】
s[j]='\0';
=====================================
/*------------------------------------------------------ 【程序改错】
-
-------------------------------------------------------
功能:读入一个整数m( 5≤m≤20 ),函数rnd 获得m个随机整数,函数sortpb将这m个随机整数从小到大排序。例如:若输入整数7,则应输出:3 10 17 28 32 36 47。
------------------------------------------------------*/
#include "conio.h"
#include "stdio.h"
void sortpb ( int n, int a[] )
{
/**********ERROR**********/
int i, j, p;
for ( j = 0; j < n-1 ; j++ )
{
p = j;
for ( i = j + 1; i < n ; i ++ )
/**********ERROR**********/
if ( a[p] > a[j] ) p = i;
/**********ERROR**********/
if ( p == j )
{