一、单选 共40题 (共计40分)
第1题 (1.0分) 题号:6132 难度:中 第1章
以下叙述正确的是
A:通过分解成简单子任务,可以完成任何复杂任务
B:每个结构化程序都要包含全部三种基本结构
C:C语言程序的所有自定义函数只能写在同一个源文件中
D:C语言程序允许使用多个main函数,只要它们的函数体各不相同即可
答案:A
第2题 (1.0分) 题号:6597 难度:中 第2章
有以下程序
#include
main()
{
int a, b, c=241;
a = c/100 % 9;
b = ( -1 )&&( -1 );
printf("%d, %d\n", a, b );
}
程序运行后的输出结果是
A:2,1
B:6,1
C:6,0
D:2,0
答案:A
第3题 (1.0分) 题号:7190 难度:较易 第2章
以下选项中合法的实型常量是
A:0
B:3.13e-2.1
C:0.914
D:2.0*10
答案:C
第4题 (1.0分) 题号:6869 难度:中 第2章
若有定义语句:int x=10; ,则表达式x-=x+x的值为().
A:0
B:-20
C:-10
D:10
答案:C
第5题 (1.0分) 题号:7103 难度:中 第2章
若有以下程序
#include
main()
{ int a=0,b=0,c=0;
c= (a -= ++a), (a+=b, b+=4);
printf("%d,%d,%d\n",a,b,c);
}
则程序的输出结果是
A:0,4,0
B:0,4,4
C:1,4,1
D:1,4,4
答案:A
第6题 (1.0分) 题号:6529 难度:中 第3章
若有定义:int a,b,c;,想通过语句:scanf("%d,%d%d",&a,&b,&c);把1、2、3分别输入给变量a、b、c,则正确的键盘输入是().
A:1,2,3<回车>
B:1,2
C:1<回车>
D:1<回车>2<回车>3
答案:B
第7题 (1.0分) 题号:6322 难度:中 第3章
设有如下语句:
int k=0;
k=printf("OK\n");
则以下叙述中正确的是().
A:printf必须作为独立语句出现
B:变量k得到的是输出的可见字符个数2
C:变量k得到的是输出字符的总个数3
D:变量k仍保持初值0
答案:C
第8题 (1.0分) 题号:7194 难度:较易 第3章
有以下程序
#include
main()
{ int x=35, B; char z='B' ;
B = (( x ) && ( z <'b' ));
printf("%d\n", B );
}
程序运行后的输出结果是
A:1
B:0
C:35
D:66
答案:A
第9题 (1.0分) 题号:7046 难度:较易 第4章
以下选项中与
if(a==1)a=b;
else a++;
语句功能不同的switch语句是
A:switch(a==1)
{case 0:a=b;break;
case 1:a++;
}
B:switch(a)
{case 1:a=b;break;
default : a++;
}
C:switch(a)
{default:a++;break;
case 1:a=b;
}
D:switch(a==1)
{case 1:a=b;break;
case 0:a++;
}
答案:A
第10题 (1.0分) 题号:6462 难度:中 第4章
以下选项中,当且仅当x的绝对值在1至6范围内表达式值为"真"的是( ).
A:(x>=-6)&&(x<=-1)||(x>=1)&&(x<=6)
B:(x>=1)&&(x<=6)&&(x>=-6)&&(x<=-1)
C:(x>=-6)||(x<=-1)||(x>=1)||(x<=6)
D:(x>=1)&&(x<=6)||(x>=-1)&&(x<=-6)
答案:A
第11题 (1.0分) 题号:6930 难度:中 第4章
有如下嵌套的if语句
if(a
if(a else k=c; else if(b else k=c; 以下选项中与上述if语句等价的语句是 A:k=(ac)?b:c); B:k=(a
C:k=(a
D:k=(a
答案:B 第12题 (1.0分) 题号:7138 难度:较易 第4章 若有以下程序 #include main() { int a=1,b=2,c=3,d=4, r=0; if (a!=1) ; else r=1; if (b==2) r+=2; if (c!=3); r+=3; if (d==4) r+=4; printf("%d\n", r); } 则程序的输出结果是 A:3 B:7 C:6 D:10 答案:D 第13题 (1.0分) 题号:6018 难度:中 第5章 有以下程序 #include main( ) { char ch = 'B'; while (ch < 'E') { printf("%d", ch - 'A'); ch++; } printf("\n"); } 程序运行后的输出结果是 A:123 B:ABC C:abc D:012 答案:A 第14题 (1.0分) 题号:7225 难度:较易 第5章 以下叙述中正确的是 A:循环发生嵌套时,最多只能两层 B:三种循环for,while,do-while可以互相嵌套 C:循环嵌套时,如果不进行缩进形式书写代码,则会有编译错误 D:for语句的圆括号中的表达式不能都省略掉 答案:B 第15题 (1.0分) 题号:6655 难度:中 第5章 有如下程序 #include main() { int i; for (i=0; i<5; i++) putchar('9' - i); printf("\n"); } 程序运行后的输出结果是 A:54321 B:98765 C:9''8''7''6''5' D:43210' 答案:B 第16题 (1.0分) 题号:6903 难度:中 第5章 有以下程序 #include main() { int y=10; while(y--); printf("y=%d\n", y); } 程序执行后的输出结果是 A:y=0 B:y=-1 C:y=1 D:while构成无限循环 答案:B 第17题 (1.0分) 题号:6905 难度:较难 第5章 有以下程序 #include main() { int i=5; do { if (i%3==1) if (i%5==2) { printf("*%d", i); break; } i++; } while(i!=0); printf("\n"); } 程序的运行结果是 A:*2*6 B:*3*5 C:*5 D:*7 答案:D 第18题 (1.0分) 题号:6845 难度:中 第5章 有以下程序: #include main() { int y=9; for( ; y>0; y--) if(y%3==0) printf("%d", --y); } 程序的运行结果是(). A:852 B:963 C:741 D:875421 答案:A 第19题 (1.0分) 题号:6827 难度:中 第6章 有以下程序: #include main() { char s[]="012xy\08s34f4w2"; int i, n=0; for ( i=0; s[i]!=0; i++ ) if(s[i] >= '0' && s[i] <= '9') n++; printf("%d\n",n); } 程序运行后的输出结果是(). A:0 B:3 C:7 D:8 答案:B 第20题 (1.0分) 题号:6085 难度:中 第6章 设有以下程序段 float a[8] = {1.0, 2.0}; int b[1] = {0}; char c[] = {"A", "B"}; char d == "1"; 以下叙述正确的是 A:只有变量c的定义是合法的 B:只有变量a,b,c的定义是完全合法的 C:所有变量的定义都是完全合法的 D:只有变量a, b的定义是完全合法的 答案:D 第21题 (1.0分) 题号:6306 难度:中 第6章 若有定义语句:int x[][3]={1,2,3,4,5,6}; ,则以下选项中与该语句等价的是(). A:int x[][3]={{1,2,3},{4,5},{6}}; B:int x[][3]={{1,2},{3,4},{5,6}}; C:int x[][3]={{1},{2,3},{4,5,6}}; D:int x[][3]={{1,2,3},{4,5,6}}; 答案:D 第22题 (1.0分) 题号:6472 难度:中 第6章 有以下程序 #include main( ) { int i,j=0; char a[]="How are you!"; for ( i=0; a[i]; i++ ) if ( a[i] != ' ' ) a[j++] = a[i]; a[j] = '\0'; printf( "%s\n",a ); } 程序运行后的输出结果是 A:Howareyou! B:areyou! C:you! D:Howareyou!u! 答案:A 第23题 (1.0分) 题号:5938 难度:较易 第6章 有如下程序 #include #include main( ) { printf("%d\n", strlen("0\t\nA011\1")); } 程序运行后的输出结果是 A:8 B:9 C:7 D:10 答案:A 第24题 (1.0分) 题号:6253 难度:中 第6章 若有定义: char s1[100 ]="name", s2[ 50]="address", s3[80]="person";,要将它们连接成新串:"personnameaddress",正确的函数调用语句是(). A:strcat(strcat(s1,s2),s3); B:strcat(s3,strcat(s1,s2)); C:strcat(s3,strcat(s2,s1)); D:strcat(strcat(s2,s1),s3); 答案:B 第25题 (1.0分) 题号:6336 难度:中 第7章 有以下程序 #include #define SWAT(t,a,b) t=a; a=b; b=t; main() { int x=6,y=4,z=3,s=0; if(x if(x if(y printf("%d,%d,%d\n", x,y,z); } 执行后的输出结果是 A:6,4,3 B:3,4,6 C:0,3,4 D:3,0,0 答案:D 第26题 (1.0分) 题号:6715 难度:较易 第7章 以下关于函数的叙述中正确的是 A:函数调用必须传递实参 B:函数必须要有形参 C:函数必须要有返回值 D:函数形参的类型与返回之的类型无关 答案:D 第27题 (1.0分) 题号:6822 难度:较难 第7章 有以下程序: #include void fun( int a[], int n) { int i, t; for(i=0; i } main() { int k[10]={ 1,2,3,4,5,6,7,8,9,10},i; fun(k,5); for(i=2; i<8; i++) printf("%d",k[i]); printf("\n"); } 程序的运行结果是(). A:321678 B:876543 C:1098765 D:345678 答案:A 第28题 (1.0分) 题号:6876 难度:中 第7章 有以下程序: #include int f( int x,int y) { return((y-x)*x); } main() { int a=3,b=4,c=5,d; d=f(f(a,b),f(a,c)); printf("%d\n",d); } 程序运行后的输出结果是(). A:7 B:10 C:8 D:9 答案:D 第29题 (1.0分) 题号:6601 难度:中 第7章 函数调用语句:fun( ( exp1, exp2 ), ( exp1, exp2, exp3) ); 含有的实参个数是 A:1 B:4 C:5 D:2 答案:D 第30题 (1.0分) 题号:7325 难度:较难 第7章 有以下程序 #include #define N 3 void fun( int a[][N], int b[] ) { int i, j; for( i=0; i { b[i] = a[i][0]; for( j=1; j if ( b[i] < a[i][j] ) b[i] = a[i][j]; } } main() { int x[N][N] = {1, 2, 3, 4, 5, 6, 7, 8, 9}, y[N] ,i; fun( x, y ); for ( i=0; i printf( "\n" ); } 程序运行后的输出结果是 A:3,5,7 B:1,3,5, C:2,4,8, D:3,6,9, 答案:D 第31题 (1.0分) 题号:6301 难度:难 第8章 有以下程序 #include int f1(int a) { return a*3;} int f2(int *b) { return *b*5;} main() { int x=3,y=5; printf("%d ,%d\n",f1(x),f2(&y)); } 程序的运行结果是(). A:9 ,125 B:9,25 C:3,15 D:3,45 答案:B 第32题 (1.0分) 题号:6084 难度:较难 第8章 有以下程序 #include void change( char* array, int len ) { for (len--; len>=0; len--) array[len] += 1; } main( ) { int i; char array[5] = "ABCD"; change(array, 4); for (i=0; i<4; i++) printf("%c,", array[i]); } 程序运行后的输出结果是 A:B,C,D,E, B:A,B,C,D, C:C,D,E,F, D:B,D,F,H, 答案:A 第33题 (1.0分) 题号:7174 难度:中 第8章 以下选项中函数形参不是指针的是 A:fun( int *a ){…} B:fun( int a[10] ){…} C:fun( int &p ){…} D:fun( int p [ ] ){…} 答案:C 第34题 (1.0分) 题号:6603 难度:中 第8章 有以下程序 #include main() { int a[10] = { 11,12,13,14,15,16,17,18,19,20 },*p=a,i=9 ; printf( "%d,%d,%d\n",a[ p-a ], p[i],*( &a[i] ) ); } 程序运行后的输出结果是 A:11,19,19 B:12,20,20 C:11,20,20 D:12,19,20 答案:C 第35题 (1.0分) 题号:6663 难度:中 第8章 以下涉及字符串数组、字符指针的程序段,不会产生编译错误的是 A:char* str, name[10]; str = "Hello World"; B:char* str, name[10]; name = "Hello World"; C:char str1[10] = "prog.c", str2[10]; str2 = str1; D:char head_line[]; head_line = "============="; 答案:A 第36题 (1.0分) 题号:7234 难度:中 第8章 下面选项中的程序段,没有编译错误的是 A:char* sp, s[10]; sp = "Hello"; B:char* sp, s[10]; s = "Hello"; C:char str1[10] = "computer", str2[10]; str2 = str1; D:char mark[]; mark = "PROGRAM"; 答案:A 第37题 (1.0分) 题号:6700 难度:较难 第9章 有如下程序 #include struct S { int x, y; }; main() { struct S data[2] = {4, 3, 1, 9}; int i; for (i=0; i<2; i++) printf("%d,%d;", data[i].x, data[i].y >> 1); printf("\n"); } 程序运行后的输出结果是 A:4,1;1,4; B:4,1;2,4; C:4,3;1,9; D:4,3;2,3; 答案:A 第38题 (1.0分) 题号:6859 难度:较易 第9章 以下叙述中错误的是(). A:可以通过typedef增加新的类型 B:可以用typedef将已存在的类型用一个新的名字来代表 C:用typedef定义新的类型名后,原有类型名仍有效 D:用typedef可以为各种类型起别名,但不能为变量起别名 答案:A 第39题 (1.0分) 题号:7123 难度:中 第9章 若有以下程序 #include #define S(x) x*x #define T(x) S(x)*S(x) main() { int k=5, j=2; printf("%d,%d\n", S(k+j),T(k+j)); } 则程序的输出结果是 A:17,289 B:492,401 C:17,37 D:49,289 答案:C 第40题 (1.0分) 题号:7007 难度:易 第10章 设文件指针fp已定义,执行语句fp=fopen("file","w");后,以下针对文本文件file操作叙述的选项中正确的是 A:只能写不能读 B:写操作结束后可以从头开始读 C:可以在原有内容后追加写 D:可以随意读和写 答案:A 二、程序填空 共1题 (共计18分) 第1题 (18.0分) 题号:309 难度:中 第1章 /*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 题目:程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的信息。 函数fun的功能是输出这位学生的信息。 -------------------------------------------------------*/ #include typedef struct { int num; char name[9]; char sex; struct { int year,month,day ;} birthday; float score[3]; }STU; /***********SPACE***********/ void show(STU 【?】) { int i; printf("\n%d %s %c %d-%d-%d", tt.num, tt.name, tt.sex, tt.birthday.year, tt.birthday.month, tt.birthday.day); for(i=0; i<3; i++) /***********SPACE***********/ printf("%5.1f", 【?】); printf("\n"); } main( ) { STU std={ 1,"Zhanghua",'M',1961,10,8,76.5,78.0,82.0 }; printf("\nA student data:\n"); /***********SPACE***********/ show(【?】); } 答案: =======(答案1)======= tt =======(答案2)======= tt.score[i] =======(答案3)======= std 三、程序改错 共1题 (共计18分) 第1题 (18.0分) 题号:300 难度:易 第2章 /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能:编写函数fun求20以内所有5的倍数之积。 ------------------------------------------------------*/ #include #define N 20 int fun(int m) { /**********FOUND**********/ int s=0,i; for(i=1;i /**********FOUND**********/ if(i%m=0) /**********FOUND**********/ s=*i; return s; } main() { int sum; sum=fun(5); printf("%d以内所有%d的倍数之积为: %d\n",N,5,sum); } 答案: =======(答案1)======= int s=1 , i ; =======(答案2)======= if(i%m==0) =========或========= if(0==i%m) =========或========= if(!(i%m)) =======(答案3)======= s=s*i; =========或========= s=i*s; =========或========= s*=i; 四、程序设计 共1题 (共计24分) 第1题 (24.0分) 题号:205 难度:中 第1章 /*------------------------------------------------------- 【程序设计】 --------------------------------------------------------- 题目:编程求100以内所有能同时被5和7整除的自然数之和。 -------------------------------------------------------*/ # include "stdio.h" main() { int i,s=0; /**********Program**********/ /********** End **********/ printf("%d",s); } 答案: for(i=1;i<=100;i++) if(i%5==0&&i%7==0) s=s+i;