C语言模拟试卷.doc
长安大学继续教育学院2010-2011学年第 二 学期 试卷(A)站 名新疆年级专业(层次)课程名称C语言程序设计学 生姓 名学 号成 绩一、填空题(每小题2分,共 10 分)1. 计算机软件分为系统软件与应用软件,UNIX属于_.2. 以下程序运行后的输出结果是_ 。main() int p=30;printf("%dn",(p/3>0 ? p/10 : p%3);3.C语言中唯一的一个三目运算符的表达形式为_。4.C语言的所有基本语句按照结构可分为_、_、_、_。5.C语言提供的三个无条件转向语句,分别是_、_、_。二、选择题(每小题 2 分,共 70 分)注意:请务必把该题的答案按照顺序写在下面的表中!12345678910111213141516171819202122232425262728293031323334351. C语言规定,程序中各函数之间_。A)既允许直接递归调用也允许间接递归调用B)不允许直接递归调用也不允许间接递归调用C)允许直接递归调用不允许间接递归调用D)不允许直接递归调用允许间接递归调用2. 在使用程序流程图来表示算法时,菱形用来表示_。A)输入与输出B)子程序C)判断分支D)循环边界3. C语言中下列叙述正确的是_。A)不能使用dowhile语句构成的循环B)dowhile语句构成的循环,必须用break语句才能退出C)dowhile语句构成的循环,当while语句中的表达式值为非零时结束循环D)dowhile语句构成的循环,当while语句中的表达式值为零时结束循环4. 以下选项中属于C语言的数据类型是_。A)复数型B)逻辑型C)双精度型D)集合型5. 在C语言中,不正确的int类型的常数是_。A)32768B)0C)037 D)0xAF6. 以下程序输出的结果是_。main()int a=65535;printf("du",a,a);A)-1 -1B)65535 65535 C)-1 65535D)65535 -l7. 下列描述中不正确的是_。A)字符型数组中可以存放字符串B)可以对字符型数组进行整体输入、输出c)可以对整型数组进行整体输入、输出D)不能在赋值语句中通过赋值运算符"="对字符型数组进行整体赋值8. 以下程序的输出结果是_。main()int i,x33=9,8,7,6,5,4,3,2,1,*p=&x11;for(I=0;i<4;i+=2)printf("d",pI);A)52B)5lC)53D)979. 下列可用于C语言标识符的一组是_。A)voidWORDdefineB)a 6$sysForC)2a sizeof abc D)Int define sizeof10. 以下程序的运行结果是_。#include"stdioH"main()int a=1,2,3,4,5,6,7,8,9,10,1 1,12;int*p=a+5,*q=NULL;*q=*(p十5);printf("dd、n",'p,*q);A)运行后报错 B)66C)612D)5511. 以下说法中正确的是_。A)C语言程序总是从第一个函数开始执行B)在C语言程序中,要调用函数必须在main()函数中定义c)c语言程序总是从main()函数开始执行D)c语言程序中的main()函数必须放在程序的开始部分12. 有如下程序float fun(int x,int y)return(x+y);main()int a=2,b=5,c=8;printf("30fn",fun(int)fun(a+c,b),(a-c);程序运行后的输出结果为_。A)编译出错 B)9 C)21 D)9013. 能正确表示a和b同时为正或同时为负的逻辑表达式是_。A)(a>=b>=0)&&(a<Ob<O)B)(a>=0&&b>=O)&&(a<0&&b<O)C)(a+b>0)&&(a+b<=0)D)a*b>014. 若己定义:int a9,*p=a;并在以后的语句中未改变p的值,不能表示al地址的表达式是_。A)p+lB)a+lC)a+D)+p15. 以下程序的输出结果是_。main() int a=-1,b=1,k;if(+a<0)&&!(b-<=0)printf("ddn",a,b);elseprintf("ddn",b,a);A)-1lB)0lC)10 D)0016. 以下选项中可作为C语言合法整数的是_A)10110B B)0386 C)0Xffa D)x2a217. 以下不能定义为用户标识符的是_A)scanf B)Void C)_3com_ D)int18. 有以下程序main() int a; char c=10;float f=100.0; double x;a=f/=c*=(x=6.5);printf("%d %d %3.1f %3.1fn",a,c,f,x);程序运行后的输出结果是_A)1 65 1 6.5 B)1 65 1.5 6.5 C)1 65 1.0 6.5 D)2 65 1.5 6.519. 以下选项中非法的表达式是_A)0<=x<100 B)i=j=0 C)(char)(65+3) D)x+1=x+120. 有以下程序main() int a=1,b=2,m=0,n=0,k;k=(n=b>a)|(m=a<b);printf("%d,%dn",k,m);程序运行后的输出结果是_A)0,0 B)0,1 C)1,0 D)1,121. 设有如下程序段:int x=2002, y=2003;printf("%dn",(x,y);则以下叙述中正确的是_A)输出语句中格式说明符的个数少于输出项的个数,不能正确输出B)运行时产生出错信息C)输出值为2002D)输出值为200322. 设变量x为float型且已赋值,则以下语句中能将x中的数值保留到小数点后两位,并将第三位四舍五入的是_A)x=x*100+0.5/100.0; B)x=(x*100+0.5)/100.0;C)x=(int)(x*100+0.5)/100.0; D)x=(x/100+0.5)*100.0;23. 有定义语句:int a=1,b=2,c=3,x;,则以下选项中各程序段执行后,x的值不为3的是_A) if (c<a) x=1; B) if (a<3) x=3;else if (b<a) x=2; else if (a<2) x=2;else x=3; else x=1;C) if (a<3) x=3; D) if (a<b) x=b;if (a<2) x=2; if (b<c) x=c;if (a<1) x=1; if (c<a) x=a;24. 有以下程序main() int s=0,a=1,n;scanf("%d",&n);do s+=1; a=a-2; while(a!=n);printf("%dn",s);若要使程序的输出值为2,则应该从键盘给n输入的值是_A)-1 B)-3 C)-5 D)025. 有以下程序main() int k=4,n=0;for( ; n<k ; ) n+;if(n%3!=0) continue;k-; printf("%d,%dn",k,n);程序运行后的输出结果是_A)1,1 B)2,2 C)3,3 D)4,426. 要求以下程序的功能是计算:s= main() int n; float s;s=1.0;for(n=10;n>1;n-)s=s+1/n;printf("%6.4fn",s);程序运行后输出结果错误,导致错误结果的程序行是 _A)s=1.0; B)for(n=10;n>1;n-) C)s=s+1/n; D)printf("%6.4fn",s);27. 已定义ch为字符型变量,以下赋值语句中错误的是_A)ch='' B)ch=62+3; C)ch=NULL; D)ch='xaa'28. 若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是A)函数调用可以作为独立的语句存在 B)函数调用可以作为一个函数的实参C)函数调用可以出现在表达式中 D)函数调用可以作为一个函数的形参29. 已定义c为字符型变量,则下列语句中正确的是_A)c='97' B)c="97" C)c=97; D)c="a"30. 以下不能正确定义二维数组的选项是_A)int a22=1,2; B)int a2=1,2,3,4;C)int a22=1,2,3; D)int a2=1,2,3,4;31. 以下能正确定义一维数组的选项是A)int num; B) #define N 100 int numN;C)int num0.100; D) int N=100;int numN;32. 下列选项中正确的语句组是_A)char s8; s="Beijing" B)char *s; s="Beijing"C)char s8; s="Beijing" D)char *s; s="Beijing"33. 有以下程序main() int x=3, y=2, z=1;printf("%dn",x/y&z);程序运行后的输出结果是_A)3 B)2 C)1 D)034. 下列关于C语言数据文件的叙述中正确的是_A)文件由ASCII码字符序列组成,C语言只能读写文本文件B)文件由二进制数据序列组成,C语言只能读写二进制文件C)文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件D)文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件35. 有以下程序main() int a33,*p,i;p=&a00;for(i=0;i<9;i+) pi=i+1;printf("%d n",a12);程序运行后的输出结果是_A)3 B)6 C)9 D)2三、读程序写结果题(每小题10分,共分20 分)注意:请把运行结果写在下面的表中!121. 请写出下面程序的运行结果。#include “stdio.h”main( )int a, s, n, count;a=2; s=0; n=1; count=1;while(count <=5)n=n*a;s=s+n;count+;printf(“s=%d”,s);运行结果:2. 请写出下面的C程序段输出结果。int x1=3, x2=4;main( )int x3=1, x4=2; sub(x3, x4); sub(x1, x2); printf(“x1=%d, x2=%d, x3=%d, x4=%d”, x1, x2, x3, x4);sub(int x, int y)int x1; x1=x; x=y; y=x1;运行结果:长安大学继续教育学院2010-2011学年第 二 学期 试卷(B)站 名新疆年级专业(层次)课程名称C语言程序设计学 生姓 名学 号成 绩一、单项选择题(每小题2分,共 30 分)1、下面标识符中,均为不合法的用户标识符为 ( )A) AB、x_0、for B) float、1a0、_YC) x-y、goto、123 D) _123、tmp、CHAR2、C语言中,int型数据在内存中的存储形式是 ( )A) ASCII码 B) 原码C) 反码 D) 补码3、执行printf(“%x”, 100);后的输出结果为 ( )A) 100 B) 0x100C) 0x64 D) 644、能表示条件100x100的C语言表达式是 ( )A) 100<=x<=100 B) x>=100, x<=100C) 100x100 D) x>=100 && x<=1005、C程序中,注释部分的位置 ( )A) 必须在一行的开始 B) 必须在语句之后 C) 必须在一行的最后 D) 以上三种都可以6、对数组的描述正确的是 ( )A) 数组一旦定义其大小是固定的,但数组元素的类型可以不同B) 数组一旦定义其大小是固定的,但数组元素的类型必须相同C) 数组一旦定义其大小是可变的,但数组元素的类型可以不同D) 数组一旦定义其大小是可变的,但数组元素的类型必须相同7、有输入语句:scanf("a= %d,b= %d,c=%d",&a,&b,&c);为使变量a的值为1,b为3,c为2,从键盘输入数据的正确形式应当是 ( )A)132 (回车) B)1,3,2 (回车)C)a=1 b=3 c=2 (回车) D)a=1,b =3,c =2 (回车)8、已知ch是字符型变量,下面正确的赋值语句是 ( )A) ch= '123' B) ch= 'xff'C) ch= "08" D) ch=""9、以下程序的输出结果是: ( )main()int x=2, y=1, z=2;if (x<y)if(y<0) z= 0;else z+ =1;printf("%dn",z);A)3 B )2 C)1 D) 010、下面程序段的运行结果是: ( )a=1; b= 2; c=3;while(a<b<c) t= a; a= b; b=t; c- -;printf("%d,%d,%d",a,b,c);A)1,2,0 B)2,1,0C)1,2,1 D)2,1,111、下述对C语言字符数组的描述中错误的是 ( )A)字符数组可以存放字符串B)字符数组的字符串可以整体输入或输出C)可以在赋值语句中通过赋值运算符“”对字符数组整体赋值D)不可以用关系运算符对字符数组中的字符串进行比较12、以下正确的函数定义形式(即定义函数时函数首部的形式)是( )A) double fun(int x, int y)B) double fun(int x; int y)C) double fun(int x, y)D) double fun(int x, int y);13、C语言程序中,若对函数类型未加显式说明,则函数的隐含类型为( )类型。A)void B)double C)int D)char14、下面程序段输出结果是 ( )char str ="adcd", *ps=str;printf("%dn", *(ps+4);A)100 B) 0 C)字符'd'的地址 D)不确定15、下面四个程序中,被调用函数的实参、形参使用正确的是( )A) B) C) D)main() main() main() main() int a10,*p; int a10,*p; int a10,*p; int a10,*p; p=a; p=a; p=a; p=a; f(&p); f(p); f(p); f(&p); f(int *x) f(int *x) f(int x) f(int x ) . . . . 二、判断题(对的打“”,错的打“×”,每小题 1 分,共 10 分)1、C程序执行的入口是main函数,所以main函数必须放在程序的开头。2、注释内容太多会影响程序的执行效率。3、若i, sum都为整型,则语句:for(i=1, sum=0;i<=100;i+) sum=sum+i;执行完毕之后i为100。4、若定义int a510,则数组中最后一个有效元素是a510。5、若运行时输入:100(回车)时,下面的程序运行结果是:nomain()int a;scanf(“%d”,&a);printf(“%s”, (a%2)!=0? “no” : “yes”);6、字符串“that”小于字符串“The”。7、若调用一个函数,且此函数中没有return语句,则没有返回值。8、若i为整型变量,则以下循环体执行次数是0次。for(i=2; i= =0; )printf(“%d”, i-);9、对于“do 循环体 while (循环条件);”,这个循环结构有可能一次循环体的内容都无法执行。10、当定义了一个结构体变量时,系统分配给它的内存是各成员所需内存量的总和。 三、程序填空题(每小题 2分,共分20 分)1、下面程序的功能为:从字符串"Computer and C"中删去所有空格,请填空。#include <string.h>main()char str180="Computer and C", str280;int i,j=0;for(i=0; i< (1) ; i+)if(str1i (2) ' ')str2j=str1i; (3) ;str2j='0'printf("%s", str2);2、下面程序的功能为:把100200之间的不能被3整除的数输出,请填空。main( )int n;for ( (4) ; (5) ; (6) ) if (n%3= =0) (7) ;printf("%dn",n);3、下面程序的功能为:求两个同心圆面积差,请填空。struct pointfloat x;float y;struct circlestruct point dot;float r;main()struct circle cir1,cir2;float area1, area2;printf(“Please input the first circle information:n”);scanf(“%f,%f,%f”, &cir1.dot.x, (8) , &cir1.r);printf(“Please input the second circle information:n”);scanf(“%f,%f,%f”, &cir2.dot.x, &cir2.dot.y, &cir2.r);area1=3.14*cir1.r*cir1.r;area2= (9) ;if(area1>=area2)printf(“Area=%fn”, (10) );elseprintf(“Area=%fn”, area2-area1);四、读程序写结果题(每小题 4分,共20分) 1、有下列程序运行时,从键盘输入:ah2MA_Aha(回车)(注:_代表空格),请写出该程序的运行结果。提示:小写字母的ASCII码减去32为对应大写字母的ASCII码,反之,大写字母的ASCII码加上32为对应小写字母的ASCII码。#include “stdio.h”main( )char s80, c=a;int i=0;scanf(“%s”,s);while(si != 0)if(si= =c)si = si-32;else if(si= =c-32)si = si+32;i+;puts(s);运行结果:2、请写出下面程序的运行结果。#include “stdio.h”main( )int a, s, n, count;a=2; s=0; n=1; count=1;while(count <=5)n=n*a;s=s+n;count+;printf(“s=%d”,s);运行结果:3、当从键盘键入abcd(回车)时,请写出下面程序的输出结果。#include “stdio.h”try_me( )char ch;scanf(“%c”, &ch);if ( ch != n )try_me();printf(“%c”, ch);main( )try_me( );运行结果:4、请写出下面程序的输出结果。func(int x)x=1;return(x);main( )int x=3;func(x);printf("%d, %dn", x, func(x);运行结果:5、请写出下面的C程序段输出结果。int x1=3, x2=4;main( )int x3=1, x4=2;sub(x3, x4);sub(x1, x2);printf(“x1=%d, x2=%d, x3=%d, x4=%d”, x1, x2, x3, x4);sub(int x, int y)int x1;x1=x;x=y;y=x1;运行结果:五、编程题(每小题 10分,共20分)1、打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方5的三次方3的三次方。(10分)提示:对于一个三位数n,百位数i=n/100;十位数j=n/10%10;个位数k=n%10。 2、编写函数实现下面问题。题意要求:输入若干整数,其值均在1至4范围内,用1做为输入的结束标志,请编写函数f用于统计每个整数的个数。define M 50main()int aM, c5=0, n=0, i, x;printf(“Enter 1 or 2 or 3 or 4, to end with -1n”);scanf(“%d”, &x);while(x!=-1)if(x>=1 && x<=4)an=x;n+;scanf(“%d”, &x);f(a,c,n);/*调用函数f*/printf(“Output the result:n”);for(i=1;i<=4;i+)printf(“%d:%dn”, i, ci);printf(“n”);f(int a, int c, int n)1)请补充f函数,将f函数实现完整。f函数的功能:对a数组的前n个元素进行统计,为1的个数存放在c1中,为4的个数存放在c4中,c0弃之不用。(6分)2)请用流程图(或N-S流程图)描述出f函数的实现流程。(4分)