C语言自学考试模拟试题及答案(共11页).doc
精选优质文档-倾情为你奉上C语言自学考试模拟试题及答案一、单项选择题1.各种基本数据类型的存贮空间正确的长度排列为_C_.A.Char<long<int<float<double B.Double<float<long<int<charC.Char<int<long<float<double D.Float<int<long<char<double2.下面的变量说明中_C_是正确的。A.Char:a,b,c; B.Char a;b;c;C.Char a,b,c; D.Char a,b,c3.main() int n;( n=6*4,n+6),n*2;printf(“n=%dn”,n); 此程序的输出结果是_B_.A.30 B. 24 C. 60 D. 484.若有如下定义,则_C_和_D_是对数组元素的正确的引用。int a10 ,*p ;p=a ;A. *&a10 B. a11 C. *(p+2) D. *p5.设整型变量n的值为2,执行语句“n+=n-=n*n;”后,n的值是_C_A. 0 B. 4 C. - 4 D. 26.表达式y=(13>12?15:6>7?8:9)的值为_C_ .A 9 B 8 C 15 D. 17.若x=5,y=3 则y*=x+5; y的值为_D_.A. 10 B. 20 C. 15 D. 308.C语言的输入与输出操作是由_C_完成的。A.输入语句 B.输出语句C.输入与输出函数 D.输入与输出语句9.语句 for(k=0;k<5;+k) if(k= = 3) continue;printf(“%d”,k);的输出结果为_B_.A.012 B. 0124 C. 01234 D. 没有输出结果10.从循环体内某一层跳出,继续执行循环外的语句是:_A_.A. break语句 B.return语句C.continue语句 D.空语句。11.Break语句的正确的用法是_B_.A.无论在任何情况下,都中断程序的执行,退出到系统下一层。B.在多重循环中,只能退出最靠近的那一层循环语句。C.跳出多重循环。D.只能修改控制变量。12.两个指针变量的值相等时,表明两个指针变量是_B_.A.占据同一内存单元。 B.指向同一内存单元地址或者都为空。C.是两个空指针。 D.都没有指向。13.不正确的指针概念是_D_.A.一个指针变量只能指向同一类型的变量。B.一个变量的地址称为该变量的指针。C.只有同一类型变量的地址才能存放在指向该类型变量的指针变量之中。D.指针变量可以赋任意整数,但不能赋浮点数。14.设char ch=A;表达式ch!(ch>=A&&ch<=Z)?ch:(ch+32)的值是_.A.A B. a C. Z D. z15.根据C语言的语法规则,下列_A_个是不合法标识符。A.While B. Name C. Rern5 D. _exam16.设单精度变量f,g均为5.0,使f为10.0的表达式是_A_.A. f+=g B. f-=g+5 C. f*=g-15 D. f / =g*102003年10月甘肃省自考C语言程序设计真题 一、单项选择题(在每小题的四个备选答案中,选出一个正确的答案,并将其代码填入题干后的括号内。每小题1分,共20分)1.程序中定义以下宏 #define S(a,b) a*b,若定义 int area;且令area=S(3+1,3+4),则变量area的值为(A)A 10 B 12 C 21 D 282.正确的标识符是()A a B a=2 Ca.3 D a_33.表达式1&3&5&7的值为(A) A 1 B3 C5 D74.语句printf(st)的输出结果为(B) A st B st C s D s5. 执行下列语句中,sum变量的值是(B)int sum=0for(int i=0;i<10;i+,sum+=i);A 45 B 55 C 0 D编译错误6.已知有共用体变量data1定义如下:union data int i;char ch; float f; data1;则变量data1所占的内存存储空间可表示为(C)Asize of(int) Bsize of(char)Csize of(float)Dsize of(int)+size of(char)+size of(float)7.若fp是指向某文件的指针,且feof(fp)的返回值是非零值,则表示()A已读到此文件末尾 B未读到此文件的末尾C此文件已关闭 D此文件尚未被打开8.以下c语言函数声明中,不正确的是()Avoid fun (int x, int y); Bfun (int x, int y); Cint fun (int x,y); Dchar *fun (char *s);9.下列选项中,不合法的C语言关键字是()Aauto Bdefault Cstatic Dvar10.若x=4,则x*=x+2的值为()A36 B24 C18 D2011.函数调用语句func(exp1,exp2),(exp3,exp4,exp5);中,实参的个数为()A1 B2 C4 D512.设a为5,执行下列语句后,b的值不为2的是()Ab=a/2 Bb=6-(-a)Cb=a%2 Db=a>32:113.假设指针p1已经指向了某个整型变量,要使指针p2也指向同一个变量,则下面各项中正确的是() Ap2=*p1 Bp2=*&p1Cp2=*p1 Dp2=&*p114.以下运算符中,运算对象必须是整型的是()A/B%=C!=D=15.以下关于typedef的叙述中错误的是()A用typedef可以增加新的类型B用typedef可以定义各种类型名,但不能用来定义变量C用typedef只是将已有的类型用新的标识符来代表D使用typedef有利于程序的通用和移植16.若执行完成下列语句:int a=3,b=6,c;c=ab2;则变量c的二进制值为()A B C D17.设有定义int x=1; int y=a<Ax-:x+;,则变量y的值是()A0 B2 C1 D318.以下关于宏替换的叙述不正确的是()A宏替换只是字符替换 B宏名无类型C宏替换不占用运行时间 D宏替换不占用编译时间19. 以下对枚举类型名的定义中正确的是()Aenum s=a,b,c Benum s a=9,b=2,cCenum s=a, b, cDenum sa, b, c20. 假设指针p已经指向某个整型变量x,则*p相当于()A&x B&p Cx D*x 1A 2D 3A 4 B 5B 6C 7A 8C9D 10B 11B 12C 13D 14B 15A 16.D17C 18. D 19. B 20. C二、多项选择题(在每小题的五个备选答案中,选出二至五个正确答案,并将其代码填写在题干后的括号内;错选、多选不得分。每小题2分,共10分)1. C语言中的文件类型有()A索引文件 B文本文件CASCII文件D二进制文件E随机文件2. 以下关于C语言中循环的描述正确的是()A在while和do-while循环体内应包含使循环趋于结束的语句Bdo-while的循环体不能是复合语句Cdo-while的循环体至少无条件执行一次D在for循环中可以使用break语句跳出循环体Efor循环只能用于循环次数已经确定的情况3. 合法的变量名有()Aa_1_2 Bb2 C_abc DABC E$14. 整型变量的类型标识符是()Ashort Blong CUnsigned intDint Echar5. 以下叙述中正确的是()A一个C语言程序有且仅有一个main函数BC语言程序中,main函数是没有参数的C一个函数通过其他函数间接的调用了自身,这种情况也是一种递归调用Dmain函数是由系统调用的E若要通过函数参数带回一个或多个返回值,则应使用按地址传送的参数结合方式三、判断题(认为对的,在题后的括号内打,认为错的打×。每小题1分,共6分)1.若有说明int c;则while (c=getchar();是错误的C语句。()2.C语言中,共用体类型的变量在程序运行期间,所有成员都在内存中。()3.在一个函数内部的复合语句中定义的变量,只在该复合语句范围内有效。()4.C语言程序中,一个文件中的函数可以引用存储在另一个文件中的函数和变量。()5.使用continue和break语句,都可以使得C程序的执行直接从循环中跳出。()6.若a为一维数组名,则*(a+i)与ai等价。()四、阅读程序,将程序运行结果填写到题后的横线上(每小题5分,共25分)1 #include stdio.h main() static char str=Language; char *s=&str8; while (-s>=&str0) putchar (*s); putchar(n);输出结果:_2 main( ) int a6=12,4,17,24,27,16; int b6=27,13,4,25,23,16; for (int i=0;i<6;i+) for (int j=0;j<6;j+) if (ai=bj) break; if (j<6) printf(%d,ai) 输出结果:_3. #include <stdio.h> int mian( ) int i=0,sum=0; while (1) sum+=i; i+; if (i>5) break; printf (sum=%dn,sum);程序运行结果: 4. int fun(int n) if (n>0) return n*fun(n-1);else return 1;main() int a=fun(4); printf(a=%dn,a);程序运行结果:_5. fun (int i) static int s=3; s+=i return (s);main() int a=2,b=1,s; s=fun(a); s=fun(b); printf(%dn,s);程序运行结果:_五、程序填空题(根据题意要求,将程序补充完成。每空2分,共22分)1以下程序输入整数a,b的值,然后交换a,b的值,并输出交换后的结果。Vodi swap(_) int t; t=*a; _ main() int a,b;scanf(%d,%d,&a,&b);_printf(a=%d,b=%d,a,b); 2以下程序的功能是:从键盘输入一串字符(以回车换行符结束),统计 其中小写英文字母的个数,将结果保存在变量count中。 main() int _;char c;_while (c!=n) if (_) _;c=getchar(); printf(have typed %d lower letters,count);3. 下面程序的功能是用函数递归方法计算菲波那契数列,请填空完善之。 main() int n,m;scanf(%d,&n);m=_;printf(%d,m);int fibo(n); int n; if(n=1) _; else if(n=2) return(1); else return (_);六、编程题(第1小题8分,第2小题9分,共17分)1求出10至1000之内能同时被2、3、7整除的数,并输出。2输出整数n,求表达式 的值。要求,程序中求2x的功能部分必须在一函数中完成,函数名使 用expt。试题参考答案及评分标准一单项选择题(每小题1分,共20分)1A 2D 3A 4 B 5B 6C 7A 8C9D 10B 11B 12C 13D 14B 15A 16.D17C 18. D 19. B 20. C二多项选择题(错选、多选不得分。每小题2分,共10分) 1B C D 2A C D 3A B C D 4A B C D 5A C D E 三判断题(每小题1分,共6分) 1× 2× 3 4 5× 6 四、阅读程序,将程序运行结果填写到题后的横线上(每小题5分,共25分) 1. egaugnal 2. 4 27 16 3. 15 4. 24 5. 6五程序填空题(每空2分,共22分) 1 int *a, int *b *a=*b; *b=t; swap(&a,&b);2. count=0 c=getchar(); (或scanf%c,&c);) c>=a&&c<=z count+;3. fibo(n) return(o) fibo(n-2)+fibo(n-1) 六编程题(第1小题7分,第2小题8分,共15分)1. main() int i; for (i=10; i<=1000; i+) if (i%2=0&& i%3=0&& i%7=0) printf(%5d,i); 2. #include <stdio.h>float expt(int n) float r=1; if (n>0)for(int i=0; i<n; i+) r*=2; return r: main() int n; float sum=0; scanf(%d,&n); for (int i=0;i<=n;i+) for(int j=0;j<=i;j+)sum+=expt(j); printf(%f,sum); 发表于 2007年10月28日08:42:00 | | | | 专心-专注-专业