河南理工大学 2010~2011 学年第 1 学期
《C语言程序设计》试卷(A卷)
考试方式:闭卷本试卷考试分数占学生总评成绩的70 %
复查人
一、单项选择题(每题2分,共40分)在每小题列出的四个选
项中只有一个选项是符合题目要求的,请将正确选项前的字母
填在题后的下划线“”上。
1.根据C语言的特点以下选项中不正确的选项是
A)习惯用小写字母,大小写字母有区别。
B)C语言主要由语句构成,语句是C程序的基本单位。
C)C语言本身没有输入输出语句。
D)用C语言写的程序可移植性好。
2.C语言中运算对象必须是整型数据的运算符是
A)% B)/ C)! D)&&
3.在C语言中,字符型(char)数据在内存中存放的形式为
A)BCD码 B)原码 C)补码 D)ASCII码
4.下列可以正确表示字符型常量的是
A)"a" B)'\t' C)'\028' D)'xy'
5.已知int i,a;执行语句i=(a=2*3,a*5),a+6;后,变量i的值是
A)36 B)30 C)12 D)6
6.若w=1,x=2,y=3,z=4;则条件表达式w>x?w:y A)4 B)3 C)2 D)1 7.已知int x=6;则执行x+=x-=x*x;语句后,x的值为 A)36 B)-60 C)60 D)-24 8.以下程序的输出结果是 A)0,0,6 B)1,0,7 C)1,1,7 D)0,1,7 main( ) { int i=0,j=0,k=6; if ((++i>0) || (++j>0)) k++; printf("%d, %d , %d \n",i,j,k); } 9.字符串"m\x43\\\np\102q"的长度是 A)7 B)9 C)15 D)16 10.若变量已正确定义,以下语句的输出结果是 A)%# B)*%$ C)% D)%$* x=0;y=2;z=3; switch(x) { case 0:switch(y) { case 1: printf("*");break; case 2: printf("%");break; } case 1: switch(z) { case 1: printf("$"); case 2: printf("*");break; default: printf("#"); } } 11.若有以下宏定义 #define N 2 #define Y(n) ((N+1)*n) 则执行语句z=2*(N+Y(5));后的结果为 A)语句有错误 B)z=34 C)z=70 D)z值不确定12.以下不是死循环的语句为 A)for(;;x+=i); B)while(1){x++;} C)for(i=10;;i--)sum+=i D)for(;(c=getchar())!='\n';)printf("%c",c); 13.以下程序段的输出结果是 A)9 B)1 C)11 D)10 int k,j,s; for(k=2; k<6;k++,k++) { s=1; for(j=k;j<6;j++) 《C语言程序设计》第1 页共4 页 s+=j; } printf("%d\n",s); 14.已知:int a[10];则对a数组元素的正确引用是 A)a[10] B)a[3.5] C)a(5) D)a[10-10] 15.若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是 A) abs(x-y)<10 B) x-y>-10&& x-y<10 C) @(x-y)<-10||!(y-x)>10 D) (x-y)*(x-y)<100 16.下面关于字符串的说明中,错误的是 A)char str[7]="FORTRAN";B)char str[]="FORTRAN"; C)char *str="FORTRAN"; D)char str[]={'F','O','R','T','R','A','N'}; 17.下面对C语言的描述中,正确的是 A)在C语言中调用函数时,只能将实参的值传递给形参,形参的值不能传递给实参。 B)C语言函数既可以嵌套定义又可以递归调用。 C)函数必须有返回值,否则不能使用函数。 D)C语言程序中有调用关系的所有函数都必须放在同一源程序文件中。 18.已知int *p();这里的p是 A)指向int类型的指针变量。 B)int 类型的指针数组。 C)一个函数,该函数的返回值是指向int类型的指针变量。 D)一个指向函数的指针变量,该函数的返回值是int类型。 19.设有int a[]={2,4,6,8,10},*p=a;,则值为8的表达式是 A)*p+3 B)*p+4 C)*(p+4) D)*(a+3) 20.已知函数定义如下: abcd(char *s1,char *s2) { while(*s2++=*s1++); } 函数abcd的功能是 A)串复制 B)求串长 C) 串比较 D)串反向 二、程序填空题(每空3分,共30分)下面给出了若干个程序, 请按照题意将下划线处缺少的部分补上,使其能正确运行。 21.程序读入20个整数,统计非负数个数,并计算非负数之 和。请填空完成。 #include void main() { int i,a[20],s,count; s=count=0; for(i=0;i<20;i++) scanf("%d", ); for(i=0;i<20;i++) { if(a[i]<0) ; s+=a[i]; count++; } printf("s=%d\t count=%d\n",s,count); } 22..以下fun函数的功能是将一个字符串的内容颠倒过来,如:int str[ ]="12345",则调用该函数后,str数组中的内容变为:"54321"。请填空。 #include "string.h" void fun(int str[ ]) { int i,j,k; for(i=0,j= ; i { k=str[i]; str[i]=str[j]; str[j]=k; } } 23.下面给定的程序的功能是:输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是一个小写字母,则把它变成大写字母,其他字符不变。请填空完成。main() { char ch; scanf(“%c”,&ch); if() ch=ch+32; else if(ch>=‘a’&&ch<=’z’); printf(“%c”,ch); } 24.以下fun函数的功能是:用选择法对数组中的n个元素按从小到大的顺序进行排序。 《C语言程序设计》第2 页共4 页 请填空完成。 #include #define N 20 void fun(int a[],int n) { int i,j,k,t; for(i=0;i { ; for(j=i+1;j if() k=j; t=a[k];a[k]=a[i];a[i]=t; } } main() { int a[N]={9,6,8,3,-1},i,m=5; for(i=0;i fun(a,m); for(i=0;i } 25.以下程序是将字符串a复制为字符串b,请将程序补充完整。 main() { char a[]="I am a boy.",b[20],*p1,*p2; p1=a; p2=b; while( ) { *p2=*p1; p1++,p2++; } ; printf("string a is:%s\n",a); printf("string b is:%s\n",b); } 三、修改下列程序的错误(共5处,每处3分,共15分) 请改正下列程序中的错误,使之能得出正确的结果。 注意:不要改动main函数,不得增行或减行,也不得更改程 序的结构! 26.给定程序中函数fun的功能是:计算n!。例如:给n输入5,则输出120.000000。 请改正程序中的错误,使它能得出正确的结果。 #include /*********found*********/ double fun(int *n) { double result=1.0; if( n==0 || n==1) return 1.0; while(n>1) /**********found**********/ result*=--n; return result; } main() { int n; scanf("%d",&n); printf("\n\n%d!=%lf\n\n",n,fun(n)); } fun(s,c); printf("\nThe result is %s\n",s); } 27.给定程序中功能是:从键盘上输入2个整数,按从小到大的顺序输出这2个数。 /******found*******/ fun(int x, int y) { int temp; temp=*x;*x=*y; * y=temp; } main() { int a,b; /*******found******/ scanf("%d,%d",&a,&b); if(a 《C语言程序设计》第3 页共4 页 /********found*****/ fun(a, b) printf("\n%d,%d\n",a,b); } 四、程序设计(共2题,第一题7分,第二题8分,共15分) 29.编写程序,判断一个数是否是素数。 《C语言程序设计》第4 页共4 页