18.若有条件表达式x?
a++:
b--,则以下表达式中能完全等价于表达式x的是【】。
A)(x==0) B)(x!
=0) C)(x==1) D)(x!
=1)
19.结构化程序设计的三种基本结构是【】。
A)顺序结构、选择结构、循环结构 B)顺序结构、转移结构、递归结构
C)嵌套结构、选择结构、递归结 D)嵌套结构、循环结构、顺序结构
20.下面的程序
main()
{
inti;
for(i=0;i<10;i++);
printf("%d\n",i);
}
的输出结果是【】。
A)0 B)123456789 C)0123456789 D)10
21. do语句的循环次数为【】。
inta=10;
do{a--;}while(a!
=0)
A)10 B)9 C)11 D)12
22.下面程序段的运行结果是【】。
intn=0;
while(n++<=2);
printf(“%d”,n);
A)2 B)3 C)4 D)出错信息
23.对以下程序段的叙述正确的是【】。
intk=0;
while(k=0)k=k-1;
A)while循环之行10次 B)无线循环
C)循环体一次也不执行 D)循环体被执行一次
24.下面程序的运行结果是【】。
main()
{inti,b,k=0;
for(i=1;i<=5;i++)
{ b=i%2;
while(b-->=0)k++; }
printf(“%d,%d\n”,k,b);
}
A)3,-1B)8,-1C)3,0D)8,-2
25.以下不正确的定义语句是【】。
A)doublex[5]={2.0,4.0,6.0,8.0,10.0};
B)inty[5]={0,1,3,5,7,9};
C)charc1[]={'1','2','3','4','5'};
D)charc2[]={'\x10','\xa','\x8'};
26.以下不能对二维数组a进行正确初始化的语句是【】。
A)inta[2][3]={0};
B)inta[][3]={{1,2},{0}};
C)inta[2][3]={{1,2},{3,4},{5,6}};
D)inta[][3]={1,2,3,4,5,6};
27.下面的程序运行时,若从键盘输入Whatdoes
thisword
mean?
则输出Whatdoesthiswordmean?
请将程序填完整。
#include
main()
{chars1[10],s2[10],s3[10],s4[10];
scanf("%s%s\n",s1,s2);
【】;
scanf("%s",s4);
printf("%s%s%s%s\n",s1,s2,s3,s4);
}
A)gets(s3);B)scanf("%s\n",s3);
C)scanf("%s",s3);D)getchar(s3);
28.设有说明char*a="Nosmoking!
";则以下不能正确输出的语句是【】。
A)printf("%s",&a);B)printf("%s",a);
C)puts(a);D)puts("Nosmoking!
");
29.以下程序的输出结果是【】。
#include
main()
{charstr[12]={'s','t','r','i','n','g',’\0’};
printf("%d",strlen(str));}
A)12B)11C)7D)6
30.以下程序的输出结果是【】。
main()
{inti,x[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)printf("%d,",x[i][2-i]);
}
A)1,5,9,B)1,4,7,C)3,5,7,D)3,6,9,
31.若有说明intx;则下面判断不正确的是【】。
A)x和(&x)[0]等价B)x和*&x等价C)&x和x[0]等价D)*&x和(&x)[0]等价
32.下面说明不正确的是【】。
A)chara[10]="china";B)chara[10],*p=a;p="china"
C)char*a;a="china";D)chara[10],*p;p=a="china"
33.设己定义staticinta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;
其中0<i<9,则对a数组元素的引用不正确的是【】。
A)p[p–a]B)*(&a[i])C)p[i]D)*(*(a+i))
34.若有以下定义和语句:
ints[4][5],(*ps)[5];
ps=s;
则下列叙述中不正确的是【】。
A)ps+1与ps[1]等价B)*(ps+1)与ps[1]等价
C)ps[1][1]与*(*(ps+1)+1)等价D)**(ps+1)与ps[1][1]等价
35.C语言规定,函数返回值的类型是由【】。
A)return语句的表达式类型所决定
B)调用该函数时的主调函数类型所决定
C)调用该函数时系统临时决定
D)在定义该函数时所指定的函数类型所决定
36.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是【】。
A)地址传递B)单向值传递
C)由实参传给形参,再由形参传回实参D)传递方式由用户指定
37.请读程序:
#include
fun(char*s)
{char*p=s;
while(*p!
='\0')
p++;
return(p-s);
}
main()
{printf(“%d\n”,fun(“abcdef”));}
上面输出结果是【】。
A)3B)6C)8D)0
38.在一个C源程序文件中,若要定义一个只允许在该源程序文件中所有函数使用的变量,则该变量需要的存储类别是【】。
A)static B)extern
C)register D)auto
39.以下程序的输出结果是【】。
intf()
{staticinti=0;
ints=1;
s+=i;
i++;
returns;
}
main()
{inti,a=0;
for(i=0;i<5;i++)
a+=f();
printf("%d\n",a);
}
A)20B)24C)25D)15
40.若定义enumcolor{red,green,blue,purple,yellow,black,orange}cl;,执行语句c1=green+blue;后,以下选项中cl的结果正确的是【】。
A)greenblueB)purpleC)yellowD)编译出错
41.使用typedef定义一个新类型的正确步骤是【】。
1.把变量名全部删除换成一个新类型名
2.按定义变量的方法写出定义体
3.用新类型名定义变量
4.在最前面加上关键字typedef
A)2,3,1,4 B)1,3,2,4 C)2,1,4,3 D)4,2,3,1
42.为了显示一个文本文件的内容,在打开文件时,文件的打开方式应当是【】。
A)“r+”B)“w+”C)“wb+”D)“ab+”
43.在进行文件操作时,写文件的一般含义是【】。
A)将计算机内存中的信息存入磁盘B)将磁盘中的信息存入计算机内存
C)将计算机CPU中的信息存入磁盘D)将磁盘中的信息存入计算机CPU
44.已知函数的调用形式:
fread(buffer,size,count,fp);其中buffer代表的是【】。
A)一个整型变量,代表要读入的数据项总数
B)一个文件指针,指向要读入的文件
C)一个指针,指向要存放读入数据的首地址
D)一个存储区,存放要读入的数据项
45.若调用fputc函数输出字符成功,则其返回值是【】。
A)输出的字符B)0C)1D)EOF
46.当读写二进制文件,没到文件末尾时,feof函数的值是【】。
A)非零值B)0C)1D)TRUE
47.编译预处理命令不可以放在【】。
A)源文件末尾B)函数内部C)函数外部D)源程序文件的开头
48.下列程序的运行结果是【】。
#defineN2
#defineMN+2
#defineCUBE(x)(x*x*x)
main()
{inti;i=CUBE(M);printf("%d\n",i);}
A)12 B)53C)64D)41
49.下列程序的运行结果是【】。
#defineM3
#defineNM+1
#defineNNN*N/2
main()
{printf("%d\n",5*NN);}
A)17 B)18 C)30D)40
50.以下程序段的输出结果是【】。
main()
{chars[]="\\141\141abc\t";
printf("%d\n",strlen(s));
}
A)9B)12C)13D)14
二、阅读程序题(每空2分,共24分)
请将正确答案按【 】中的序号写入文字答题卡,否则不得分。
1.执行下面程序段后,x的值是【51】;i的值是【52】。
inti,x;
for(i=1,x=1;i<=50;i++)
{ if(x>=10) break;
if(x%2==1)
{ x+=5;
continue; }
x-=3;
}
2.以下程序数据顺序输入为:
86541回车,则的输出结果是【53】。
main()
{inti,b[5];
for(i=0;i<5;i++)
scanf("%d",&b[i]);
for(i=4;i>-1;i--)
printf("%5d",b[i]);
printf("\n");
}
3.下列程序的输出结果是【54】。
#include
main()
{inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
printf("%d,%d\n",*(*a+2),*a[2]);
}
4.下列程序的输出结果是【55】。
main()
{inta[5]={12,21,13,6,18};
int*p,*s;
for(p=a,s=a;p-a<5;p++)
if(*p>*s)s=p;
printf("%d\n",*s);
}
5.下列程序的输出结果是【56】。
main()
{char*a="IloveChina!
";
a=a+7;
printf("%s\n",a);
}
6.有如下程序,该程序的输出结果是【57】。
main()
{charch[2][5]={“6937”,”8254”},*p[2];
inti,j,s=0;
for(i=0;i<2;i++)p[i]=ch[i];
for(i=0;i<2;i++)
for(j=0;p[i][j]>’\0’;j+=2)
s=10*s+p[i][j]-’0’;
printf(“%d\n”,s);
}
7.以下程序则输出结果是
f(inta)
{intb=0;
staticintc=3;
b++;c++;
return(a+b+c);
}
main()
{inta=2,i;
printf("%d\n",f(a));【58】
printf("%d\n",f(a));【59】
}
8.下列程序的输出结果是【60】。
intb=2;
intfunc(int*a)
{b+=*a;return(b);}
main()
{inta=2,res=2;
res+=func(&a);
printf("%d\n",res);
}
9.以下程序的输出结果是【61】。
intd=1;
func(intp)
{intd=7;
d=p;
printf(“%d”,d);
return(d);
}
main()
{inta=3;
printf(“%d\n”,func(a+func(d)));
}
10.以下程序的输出是【62】。
structst
{intx;int*y;}*p;
intdt[4]={10,20,30,40};
structstaa[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]};
main()
{p=aa; printf("%d\n",++p->x); }
三、完善程序填空题(每空2分,共26分)
请将正确答案按【 】中的序号写入答题卡,否则不得分。
1.求1~100以内能被3整除且含数字5的数
#include
main()
{ inti,a,b,c;
for(i=1;i<100;i++)
{a=i%10; b=i/10;
if(【63】)
printf("%d\t",i);
}}
2.以下程序输入了20个数存放在一个数组中,并且输出其中最大者与最小者、,20个数的和及它们的平均值。
请填空。
voidmain()
{chararray[20];
intmax,min,average,sum=0;
inti;
for(i=0;i<20;i++)
{
printf("请输入第%d个数:
",i+1);
scanf("%d",&array[i]);
}
max=array[0];
min=array[0];
for(i=0;i<=19;i++)
{if(max【64】;
if(min>array[i])
【65】;
sum=【66】;
}
average=sum/20;
printf("20个数中最大值是%d,",max);
printf("最小值是%d,",min);
printf("和是%d,",sum);
printf("平均值是%d.\n",average);
}
3.下面程序的功能是:
将字符数组a中下标值为偶数的元素从小到大排列,其它元素不变。
请