《 C语言 》课程期中考试试卷
一. 在A B C D四个选项中,选择一个正确的答案填入括号内 ( )1、用char定义的变量在IBM PC机中能表示的数的范围是:
A) 0 ~ +255 B) 0 ~ +65535 C) -128 ~ +127 D) 只能存字符,不能存数
( )2、设有int k=2; 则执行printf(“%d”,k++);的输出为:
A) 0 B) 1 C) 2 D) 3
( )3、在while(!x)中,!x与______等价。
A) x==0 B) x!=0 C) x==1 D) x!=1
( )4、设有声明int value=?5?;,则执行下列选项的赋值语句后,value的值不等于5
的是_____。
A.) value=value - ?0?; B) value=value - 0x30; C) value=value - 49; D) value=value - ?\\060?;
( )5、如int k=7;float x=2.5,y=4.7; 则表达式 x+k%3*(int)(x+y)%2/4 运
算后的值是:
A) 0 B) 2 C) 2.5 D) 2.75 ( ) 6、若有int a,b;则语句:printf(\的输出结果是: A)无输出 B)结果不确定 C)-1 D)1
( ) 7、设有int a=2; 则执行printf(\的输出为: A)0 B)1 C)2 D)3
( ) 8、执行语句c=(a=2,a+1,b=a++);后, a,b,c的值依次为:
A)2,3,4 B)3,3,3 C)4,5,4 D)3,2,2
( )9、以下程序的输出结果是
A)2 0 B)3 1 C)3 2 1 D)2 1 0 main( ) { int n=4;
while(n--)printf(\,--n); }
( )10、给出以下定义: char x[ ]=\
char y[ ]={'a','b','c','d','e','f'};
2
则正确的叙述为
A) 数组x和数组y等价 B) 数组x和数组y的长度相同 C) 数组x的长度大于数组y的长度 D) 数组x的长度小于数组y的长度 ( )11、若对一个函数调用在前, 定义在后,C语言将视其返回值为__________类型。 A) void B) int C) float D) 不合法 ( )12、如果用数组名作为函数调用的实参, 传递给形参的是_________。 A) 数组的首地址 B) 数组元素的个数 C) 数组的第一个元素的值 D) 数组中全部元素的值
二、填空题
1. C语言中的标识符可以由三种字符组成,它们是_ __、__ 和_ _。 2. 关键字case和default只能在__ _ 语句中出现。
3. 若有说明int a [][4]={1, 2,3,4,5,6,7,8, 9};,则数组a第一维的大小是____。 4.有声明: int a[3][4]={{1,2},{3},{6,7,8,8}}; 则a[1][2]的初值是____, a[2][1]的值是______。
三、阅读程序,写出其输出结果
1. 设输入为:3 3↙ (其中”↙”表示回车),则下面程序的输出是:___ ___ main()
{ int k,t,a,n; long s;
scanf(“%d%d”,&a,&n); for(s=t=k=0;k printf(“s=%ld”,s); } 2.若以下程序输入为5,8 ↙,则输出为: ___ swap(int x, int y) { int t; t=x;x=y;y=t; } main() { int a,b; 2 3 scanf(“%d,%d”,&a,&b); swap(a,b); printf(“a=%d,b=%d”,a,b); } 3. 设输入为: C++ ProGraming LangUage↙ (其中”↙”表示回车),下面C程序的输 出是:__ _ #include { int n1,n2,n3; char ch; n1=n2=n3=0; while((c=getchar())!=?\\n?) if(c>=?A?&&c<=?Z?) n1++; else if(c>=?a?&&c<=?z?) n2++; else n3++; printf(“n1=%d,n2=%d,n3=%d\\n”,n1,n2,n3); } 4.以下程序运行时,输出结果的第一行是 ,第二行是 __ __ 。 #include { char ch[]={’0’,’l’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’9’},b [80]; int i=0,r; while(x) { r=x%m; x/=m; b[i++]= ch[r]; } for(--i; i>=0; i--) printf(“%c”,b[i]); } main() { int a,b; change(10,2); 3 4 printf(“\\n”); change(10,8); } 四、完善程序 1、下面的程序读入数组元素值,然后以每行4个元素的形式输出。 #define N 20 main() 2. 下面程序的功能是:使一个字符串按逆序存放,请填空 #include { char m,str[60]; int i,j; printf(“input a string:”); gets(str); for(i=0,j=strlen(str)-1;i<_ __;i++,j--) { m=str[i]; str[i]=__ ___; str[j]=m; } puts(str); } { int a[N],i; } for (i=0; i scanf(“%d”, __ __); { if ( _ _ ) printf(“\\n”); printf(“?”, a[i]); for (i=0; i } printf(“\\n”); 3. 以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差, 如果两串相同,则返回0;例如:输入的两个字符串分别为abcdef和abceef,则输出为-1,请填空。 #include { char str1[100],str2[100],j; 4 5 int s; printf(\ gets(str1); printf(\ gets(str2); j=0; while((str1[j]==str2[j])&&(str1[j]!=__ _)) j++; s=__ __; printf(\ } 4. 以下程序的功能是:将无符号八进制数字构成的字符串转换为十进制整数。例如:输入的字符串为:556,则输出十进制整数366。请填空。 #include { char s[6]; int i=0,n; gets(s); n=0; while( s[i]!=0 ) _ ___; printf(\ } 五、改错题 下面的程序中, a是输入数组, b是输出数组; 程序功能是找出数组a中所有素数, 若a中某个元素为素数, 则将输出数组相同位置处的元素置为?T?; 否则置为?F?。 如: 若输入数组为: 则输出数组为: 6 2 13 14 F T T F 16 15 25 67 F F F T 17 51 6 73 T F F T 81 11 21 19 F T F T 要求: 改错时, 可以修改语句中的一部分内容, 调整语句次序, 除了允许增加变量说明或编译预处理命令外, 不允许增加整条语句, 也不能删除整条语句。 #include #define N 4 main() {int i, j, m, k, a [N][N]; char b[ ][N]; for(i=0; i for(j=0; j for(j=0; j 5