第二部分 C语言程序设计
一、选择题(用答题卡答题,答案依次填在21~30答题号内,共10分) 21.以下叙述中正确的是 (21) 。
A.在编译时可以发现注释中的拼写错误 B.C语言程序的每一行只能写一条语句 C.main( ){}必须位于程序的开始
D.C语言程序可以由一个或多个函数组成
22.以下选项中不能用作变量名的是 (22) 。
A._float B.switch C.sum D._123 23.已知sizeof(int)的值为2,为将10!的值存储到变量f中(10!=3628800),变量f的类型应声明为
(23) 。
A.long int B.int C.short int D.unsigned int 24.若有声明“double x=3,c,*a=&x,*b=&c;”,则下列语句中错误的是 (24) 。
A.a=b=0; B.a=&c,b=a; C.&a=&b; D.*b=*a; 25.数学式
a在C程序中正确的表示形式为 (25) 。 2bA.sqrt(a)/2*b B.sqrt(a)/2/b C.sqrt(a)/2b D.sqrt a/(2*b)
26.已知有程序段“char str[][10]={\; printf(\n\
则执行printf语句后输出为 (26) 。
A.Beijing B.Aoyun C.ing D.ng 27.以下声明中错误的是 (27) 。
A.int a[2]; B.int a[]={0,1}; C.int a[3]=0; D.int a[3][4]={0}; 28.已知有结构定义和变量声明如下:
struct student { char name[20]; int score;
struct student *h; }stu,*p; int *q;
以下选项中错误的是 (28) 。
A.p=&stu; B.q=&stu.score; C.scanf(\.stu.h=p;
29.已有声明“int a=3,b=3,c=2;”,以下选项中值为0的表达式是 (29) 。
A. !a&&!b&&c B. !a||!b||c C. a==b&&b>=c D. a>=b&&b>c 30.若有声明“char ss[8]=\”,则sizeof(ss)的值是 (30) 。
A.8 B.4 C.3 D.1
第4页 C语言 2008年秋
二、填空题(将答案填写在答题纸的相应答题号内,每个答案只占一行,共30分) ? 基本概念
1. 已知有函数定义“int fun(){return (3,4);}”,则调用fun后的函数返回值是 (1) 。 2. 设有声明“int a=3, b=4; float x=4.5, y=3.5;”,则表达式“(float)(a+b)/2+(int)x%(int)y”
的值是 (2) 。 3. 若已有定义“enum TP{A,B,C};”,则执行语句“printf(\\\n\ (3) 。 4. 若需要打开D盘上user子目录下已经存在的名为abc.txt的文本文件,先读出文件中数据,后追
加写入新数据,则正确的函数调用语句是:“fp=fopen(\”。 ? 阅读程序
5. 以下程序运行时输出结果的最后一行是 (5) 。 #include
{ int a=1,b=1,i; for(i=1;i<=2;i++) { a=a+b;
printf(\ b=a+b;
printf(\ }
printf(\}
6. 以下程序运行时输出结果为 (6) 。
#include
for (i=0;i<5;i++) { switch(i) { case 0:
case 1: sum++; case 3: sum++;
case 4: sum--; break; } }
printf(\}
7. 以下程序运行时输出结果是 (7) 。
#include
{ int a; a=b; b=10; }
第5页 C语言 2008年秋
void main()
{ int a=10,b=20; func(b);
printf(\}
8. 以下程序运行时输出结果的第一行是 (8) ,第二行是 (9) 。
#include
{ static int i=0,f=1; return f*=++i; }
int f2( ) { int i=0,f=1; return f*=++i; }
void main( )
{ printf(\ printf(\}
9. 以下程序运行时输出结果是 (10) 。
#include
void sf(char *s1,char *s2) { if(*s1=*s2)
sf(s1+1,s2+1); }
void main( )
{ char a[20]= \ sf(a+strlen(a),b); puts(a); }
10. 以下程序运行时输出结果的第一行是 (11) ,第三行是 (12) 。
#include
{ int i,j,a[3][3]; for(i=0;i<3;i++) for(j=0;j<3;j++) if(i a[i][j]=1; else a[i][j]=i-j+1; 第6页 C语言 2008年秋 for(i=0;i<3;i++) { for(j=0;j<3;j++) printf(\ printf(\ } } 11. 以下程序运行时输出结果是 (13) 。 #include void sort(int a[],int n) { int i,j,p; int t; for(i=1;i for(j=i+2;j { t=a[i]; a[i]=a[p]; a[p]=t; } } } void main( ) { int s[ ]={8,1,4,3},n=4,k; sort(s,n); for(k=0;k printf(\ printf(\} 12. 以下程序运行时输出结果的第一行是 (14) ,第二行是 (15) 。 #include { int x,*y; }*p; int d[5]={10,20,30,40,50}; struct s a[5]={100,&d[0],200,&d[1],300,&d[2],400,&d[3],500,&d[4]}; void main( ) { p=a; printf(\ printf(\ printf(\ printf(\} 第7页 C语言 2008年秋 13. 以下程序运行时若输入8,则输出结果中第一行是 (16) ,第二行是 (17) ,第三 行是 (18) 。 #include { int k,i,m,n,num[20]; scanf(\ for(i=0;i { printf(\ num[i]=0; k=0; m++; if(m%3==0) printf(\ } i++; if(i==n) i=0; } i=0; while(num[i]==0) i++; printf(\} ? 完善程序 14. 以下程序的功能是:求a数组中前4个元素之和及后6个元素之和。试完善程序以达到要求的功 能。 int fsum(int *array,int n) { int i,s; s=0; for(i=0; (19) ; i++) s+=array[i]; return(s); } 第8页 C语言 2008年秋