《 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’令数组全部的值为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("%d",(a=2)&&(b=-2);的输出结果是: A)无输出 B)结果不确定 C)-1 D)1
( ) 7、设有int a=2; 则执行printf("%d",5>a>1);的输出为:
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("%d ",--n);
}
( )10、给出以下定义: char x[ ]="abcdef"; char y[ ]={'a','b','c','d','e','f'}; 则正确的叙述为 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<n;k++)
{ t=t*10+a;
s+=t;
}
printf(“s=%ld”,s);
}
2.若以下程序输入为5,8 ↙,则输出为: ___
swap(int x, int y)
{ int t;
t=x;x=y;y=t;
}
main()
{ int a,b;
scanf(“%d,%d”,&a,&b);
swap(a,b);
printf(“a=%d,b=%d”,a,b);
}
3. 设输入为: C++ ProGraming LangUage↙ (其中”↙”表示回车),下面C程序的输出是:__ _
#include <stdio.h>
main()
{ 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 <stdio.h>
void change(int x,int m)
{ 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);
printf(“\n”);
change(10,8);
}
四、完善程序
1、下面的程序读入数组元素值,然后以每行4个元素的形式输出。
#define N 20
main()
{ int a[N],i;
for (i=0; i<N;i++)
scanf(“%d”, __ __);
for (i=0; i<N;i++)
{ if ( _ _ ) printf(“\n”);
printf(“%8d”, a[i]);
}
printf(“\n”);
}
2. 下面程序的功能是:使一个字符串按逆序存放,请填空#include <stdio.h>
main()
{ 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);
}
3. 以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差, 如果两串相同,则返回0;例如:输入的两个字符串分别为abcdef和abceef,则输出为-1,请填空。
#include <stdio.h>
main()
{ char str1[100],str2[100],j;
int s;
printf("\n input string 1:\n"); gets(str1);
printf("\n input string 2:\n"); gets(str2);
j=0;
while((str1[j]==str2[j])&&(str1[j]!=__ _)) j++;
s=__ __;
printf("%d\n",s);
}
4. 以下程序的功能是:将无符号八进制数字构成的字符串转换为十进制整数。例如:输入的字符串为:556,则输出十进制整数366。请填空。
#include <stdio.h>
main()
{ char s[6];
int i=0,n;
gets(s);
n=0;
while( s[i]!=0 ) _ ___;
printf("%d \n",n);
}
五、改错题
下面的程序中, a是输入数组, b是输出数组; 程序功能是出数组a中所有素数,
若a中某个元素为素数, 则将输出数组相同位置处的元素置为’T’; 否则置为’F’。
如: 若输入数组为: 则输出数组为:
6 2 13 14 F T T F
16 15 25 67 F F F T
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论