一、单项选择题 (本大题共20小题,每小题1分,共20分)
在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。
1.存储容量1KB等于 ( )
A.23字节 B.210字节
C.220字节 D.230字节
2.下面哪种设备是输出设备? ( )
A.扫描仪 B.键盘
C.鼠标 D.显示器
3.设有int a=3,b=-4,c=5;表达式++a-c+b++的值是 ( )
A.-6 B.-5
C.-4 D.-3
4.设有int x,y;表达式y=(x=1,++x,x+2)的值是 ( )
A.1 B.2
C.3 D.4
5.以十六进制形式输出整型数的格式说明符是 ( )
A.%x B.%u
C.%o D.%d
6.下列语句中,有语法错误的是 ( )
A.if(x>y);
B.if(x= =y)x+y;
C.if(x!=y) scanf(″%d″,&x)else scanf (″%d″,&y);
D.if(x 7.设有程序段 int x=1,y=-1; if(y<0)x-=y; else x+=y; 执行完该程序段后,x的值为 ( ) A.-1 B.0 C.1 D.2 8.下面程序段的循环次数是( ) int k=2; while(k= =0) printf (″%d″,k); k--;printf (″\n″); A.0次 B.1次 C.2次 D.无限次 9.下面程序段的输出结果是( ) for(i=1;i<3;i++) for(j=1;j<3;j++) printf(″%d”,i+j); A.2 3 3 4 B.2 3 4 10.若有定义int a[4]={1,2,3,4};则表达式a[a[2]- 3*a[0]+1]的值是( ) A.1 B.2 C.3 D.4 11.在C语言程序中,关于函数的定义和调用,以下描述正确的是( ) A.函数的定义可以嵌套,但函数的调用不可以嵌套 B.函数的定义不可以嵌套,但函数的调用可以嵌套 C.函数的定义和函数的调用均不可以嵌套 D.函数的定义和函数的调用均可以嵌套 12.关于main函数,以下说法中正确的是 ( ) A.C语言程序总是从有定义的函数起顺序执行,在main函数中结束 B.在C语言程序中,被调用的函数必须在main()函数中定义 C.C语言程序中的main()函数必须放在程序开始部分 D.C语言程序总是从main()函数开始执行 13.若要定义一个长整型的变量a和一个指向变量a的指针变量q,下面正确的定义语句是( ) A.long a,*q=a; B.long a,*q=&a; C.long*q=&a,a; D.long a,q=&a; 14.若有说明long int x[5];下面能正确表示数组元素地址的是( ) A.&x[3] B.&x C.&x+1 D.*x 15.下面关于结构体类型的定义正确的是( ) A.struct ABC B.struct ABC { { int a int a; char b char b; char *p char *p; } } C.struct ABC D.struct ABC { { int a; int a, char b; char b, char *p; char *p, }; }; 16.下面列出的位运算符中,表示按位与操作的是 ( ) A.~ B.! C.& D.^ 17.下面各个位运算符优先级从左到右依次升高的是 ( ) A.> > | & ~ B.| > > & ~ C.| & > > ~ D.~ | & > > 18.设有说明:int u=1,v=3;表达式:u<<=v的值是( ) A.0 B.1 C.3 D.8 19.如果将文件指针fp指向文件末尾,正确的语句是 ( ) A.feof(fp); B.rewind(fp); C.fseek(fp,0L,0); D.fseek(fp,0L,2); 20.若要在C盘TC目录下,建立一个a1.dat的文本文件,正确使用打开文件的函数是( ) A.fopen(″C:\\ TC \\ a1.dat″,″r″) B.fopen(″C:\ TC \ a1.dat″,″r″) C.fopen(″C:\\ TC \\ a1.dat″,″w″) D.fopen(″C:\ TC \ a1.dat″,″w″) 二、多项选择题 (本大题共5小题,每小题2分,共10分) 在每小题列出的五个备选项中至少有两个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选、少选或未选均无分。 21.下面属于合法的C语句的有 ( ) A.表达式语句 B.函数调用语句 C.子程序调用语句 D.空语句 E.循环语句 22.下面循环语句中,没有“无限循环”错误的循环语句有 ( ) A.for(;;); B.for(i=1;i<10;i++); C.while(1); D.while(0); E.do{循环体)while(1); 23.设有声明:int a[5]={1,3,5,7,9);下面表达式的结果为10的有 ( ) A.a[l]+a[3] B.a[2]-2*a[1] C.2*a[2] D.a[0]+a[4] E.a[1]+[-a[2]+a[3] 24.若有如下定义及赋值: int x=5,*p,*pl; p=&x; pl=p; 则可以输出变量x的值的语句有 ( ) A.printf(″%d\n″,x); B.printf(″%d\n″,*p); C.printf(″%d\n″,p1); D.printf(″%d\n″,&x); E.printf(″%d\n″,*p1); 25.设有关于结构体类型的定义: struct boat { char name[10]; int weight; }myboat,*ps; 下面各项中语句都正确的有 ( ) A.myboat.name=″Li″。 myboat.weight=1600; B.ps=&myboat; strcpy(ps->name,″Wuhan″); C.ps=&myboat; ‘ Ps->weight=2700; D.strcpy(myboat.name,″Wine″); ps=&myboat; E.ps=&myboat,strcpy(myboat.name,″Shanghai″); Ps->weight=5512; 三、简答题 (本大题共4小题,每小题4分,共16分) 26.写出将x,y,z,w分别声明为整型变量、短整型变量、长整型变量和无符号整型变量的语句。 27.将下面for循环的程序段,用含while循环的程序段实现。 for(s=0,i=1;i<=10;i++) s+=i; 28.简述声明语句:char *p[4];的含义。 29.设有声明: struct cjd { long bh; long int xq; char xm[9]; float score[3]; }x={201101,2,″张大力″,76,85.0,90); 简单回答(1)结构体名;(2)结构体类型变量;(3)结构体类型变量所占字节数;(4)结构体成 员x.score[2]的值。 四、阅读分析题 (本大题共6小题,每小题5分,共30分) 30.写出下面程序的运行结果 main() { int a=1,b=2,c=3; ++a; b=b+a: c=c/2; printf(″%d,%d,%d\n″,a,b,c); } 31.写出下面程序的运行结果 main() { char ch; ch=′a′; switch(ch) { case′a′:printf(″*\n″); case′b′:printf(″**\n″); case′c′:printf(″***\n″); } ch=′b′; switch(ch) { case ′b′:printf(″**\n″); case ′a′:printf(″*\n″);break; case ′c′:printf(″***\n″); } } 32.写出下面程序的运行结果 void main(void) { int x; for(x=1;x<10;x+=2) printf(″%d\t%d\n″,x,x*x); } 33.写出下面程序的运行结果 #include main() { char a[5][8]={ ″java″,″fortran″,″basic″,″cobol″,″pascal″},b[8],c[8]; int i; strcpy(b,a[0]); strcpy(c,a[0]); for(i=1;i<5;i++) { if(strcmp(b,a[i])<0)strcpy(b,a[i]); if(strcmp(c,a[i])>0)strcpy(c,a[i]); } printf(″%s\n″,b); printf(″%s\n″,c); } 34.写出下面程序的运行结果 void main(void) { int x; for(x=1;x<=5;x++) printf(″%d,%d\n″,x,fun(x)); } int fun(int x) { static int fac=1; fac*=x; return fac; } 35.写出下面程序的运行结果 void f2(char*t,char*s) { while(*t!=′\0′)t++; while(*s!= ′\0′) { *t=*s: s++;t++; } *t=*s; } void main(void) { char s[80]= ″ ″,*ps[3]={ ″there″,″is a″,″car″}; int i; for(i=0; i<3;i++) f2(s,ps[i]); printf(″%s\n″,s); } 五、编程题 (本大题共2小题,每小题12分,共24分) 36.从键盘输入10个整数并存放到一维数组中,计算下标为奇数的元素的累加和并输出运行结果。 37.从键盘上输入10个浮点型数,求出10个数的总和与平均值,并将总和与平均值写到d盘根目录下的文本文件array.dat中。