收藏 分享(赏)

C语言等级考试题目.doc

上传人:精品资料 文档编号:8539083 上传时间:2019-07-02 格式:DOC 页数:49 大小:182.50KB
下载 相关 举报
C语言等级考试题目.doc_第1页
第1页 / 共49页
C语言等级考试题目.doc_第2页
第2页 / 共49页
C语言等级考试题目.doc_第3页
第3页 / 共49页
C语言等级考试题目.doc_第4页
第4页 / 共49页
C语言等级考试题目.doc_第5页
第5页 / 共49页
点击查看更多>>
资源描述

1、C 语言等级考试复习资料题型一 单项选择题考点 1:运算符与表达式1. 已知 int i=10; 表达式“5void main()enum color Black=1,Red,Blue,Green;enum color c1,c2;c1=Red; c2=Blue;printf(“%d,%dn“,c1,c2);函数 fun 的功能是:求出无符号十进制数 n 中包含 0 的个数,及各位数字的最大值(A) 2,3 (B) 1,2 (C) 1,1 (D) 0,-116. 根据下面的结构体类型及其结构数组的定义,值等于A的表达式是( D ) 。struct seasonchar name10;int d

2、ay;struct season s4=“Spring”,90,”Summer”,91,”Autumn”,92,”Winter”,92;(A) s3.name0 (B) s3.name(C) s2.name (D) s2.name0按照程序算得17.对于如下枚举类型定义,枚举量 Pasica的值为(C ) 。enum languageBasic=3,Assembly=6,Ada=100,COBOL,PasicaA) 4 B) 7 C) 102 D) 10318.设有以下定义:union dataint d1;float d2;demo;则以下叙述中,错误的是(D ) 。A) 变量 demo与成

3、员变量 d2所占的内存字节数相同B) 变量 demo中各成员的地址相同C) 变量 demo和各成员的地址相同D) 若给变量 demo.d1赋 89后,demo.d2 中的值是 89.0赋值后其中的值应为 9019.设有如下说明typedef structint n;char c;double x;STD;则以下选项中,能正确定义结构体数组并赋初值的语句是( A) 。A)STD s2=1,A,62,2,B,75;B)STD s2=1,“A“,62,2,“,75; 格式错位C)struct s2=1,A,2,B;D)struct s2=1,“A“,62.5,2,“B“,75.020.若有以下说明和

4、定义union dtint a;char b;double c;data;以下叙述中,错误的是( C) 。A)data的每个成员起始地址相同B)变量 data所占的内存字节数与成员 C所占字节数相等C)程序段:data.a=5;printf(“%fn“,data,c);输出结果为 5.000000 正确结果应为 5D)data可以作为函数的实参21.设有如下枚举类型定义:enum language Basic=3,Assemble,Ada=100,COBOL,Fortran;则枚举量 Fortran的值为(A ) 。A) 102 B) 103 C) 4 D) 7考点 4:宏定义22. 以下程序

5、的输出结果是( D ) 。# include # define f(x) x*xvoid main()int a=6,b=2,c;c=f(a+b)/f(a-b);printf(“%dn“,c); (A) -2.5 (B) -2 (C) 64 (D) 423. 运行以下程序的输出结果为( B ) 。#include “stdio.h“#define R 1+2#define S(r) r*r#define V(r) S(r)*Rvoid main()int r1=1+2;printf(“%d“,V(r1); 通过程序要求算得(A) 27 (B) 11 (C)9 (D)724.运行以下的程序,输出

6、结果为( D ) 。#define M 3*2#define N M+2#define S(r) M*N*r/2#inlcude void main()int a=4;printf(“%d“,S(a);A) 96 B) 144 C) 22 D) 4025.以下程序的输出结果是(A ) 。#define MAX(x,y) (x)(y)?(x):(y)void main()int a=5,b=2,c=3,d=3,t;t=MAX(a+b,c+d)*10;printf(“%dn“,t);, 的优先级比赋值= 的优先级高的A) 7 B) 6 C) 5 D) 没有答案26.运行下面程序的输出结果为(D )

7、 。#define X 5#define Y X+1#define Z Y*X/2int main(void)int a;a=Y;printf(“%d,%dn”,Z,-a); 输出等于 a+b*b+c-c+a =1+2*2+3-3+1 =6 (A)15,6 (B)15,5 (C)12,5 (D)7,5考点 5:文件操作27. C语言中 fscanf函数的正确调用形式是( D ) (A) fscanf(文件指针,格式字符串,输出列表); 顺序错误(B) fscanf(格式字符串,输出列表,文件指针);(C) fscanf(格式字符串,文件指针,输入列表);(D) fscanf(文件指针,格式字符

8、串,输入列表);考点 6:选择结构28. 设有定义:int a=1,b=2,c=3; ,以下语句中执行效果与其它三个不同的是( C ) 。(A) if(ab) c=a,a=b,b=c; (B) if(ab) c=a,a=b,b=c; (C) if(ab) c=a;a=b;b=c; (D) if(ab) c=a;a=b;b=c;C的结果为 329. 以下选项中与 if(a=1)a=b; else a+; 语句功能不同的 switch语句是 ( B ) 。(A) switch(a) (B) switch(a=1) case 1: a=b;break; case 0: a=b;break;defau

9、lt:a+; case 1:a+; (C) switch(a) (D) switch(a=1) default:a+;break; case 1:a=b;break;case 1: a=b; case 0:a+; 30. 有如下程序#include “stdio.h“void main()int a=2,b=-1,c=2;if(a1); 结果应为 10+3 所以等于 13(A) 1 (B) 13 (C) 12 (D) 535.表达式 15|127的值是(B ) 。A) 15 B) 127 C) 0 D) 1考点 9:常用函数36. 以下程序的输出结果是(C ) 。#include void m

10、ain()char p20=a,b,c,d,q=“abc“,r=“abcde“;strcpy(p+strlen(q),r);strcat(p,q);printf(“%d %dn“,sizeof(p),strlen(p);(A) 20 9 (B) 9 9 (C)20 11 (D)11 1137.以下程序的输出结果是( C) 。#include void main()char p=1,2,3,q=“123“;printf(“%d,%dn“,sizeof(p),sizeof(q);指针存放的也就是内存地址,在 32位系统下,内存地址是 32位的,也就是 4个字节。所以 32位系统下,指针始终占用 4

11、个字节。所以结果为 4A) 4,4 B) 3,3 C) 3,4 D) 4,338.以下程序段的运行结果是( C ) 。char a10=”abcd”;strcpy(a+2,”ABCD”);printf(“%sn”,a);(A)ABCD (B)aABCD (C)abABCD (D)abcABCD39.运行下面程序的输出结果为( C ) 。int main(void)char s20=”CLanguage.”;printf(“%d,%d”,sizeof(s),strlen(s); 数组定义(A)10,11 (B)10,10 (C)20,10 (D)10,20考点 10:数组40. 下列对 C语言字

12、符数组的描述中错误的是( C ) 。(A) 字符数组可以存放字符串(B) 字符数组的字符串可以整体输入、输出(C) 可以在程序中用赋值运算符“=”对字符数组进行整体赋值(D) 不可以用关系运算符对字符数组中的字符串进行比较可以在程序中用赋值运算符“=”对字符数组进行整体赋值41.以下不能对二维数组 a进行正确初始化的语句是 ( A ) 。(A) int a 2 3 =1,2,3,4,5,6;(B) int a 3 =1,2,0;(C) int a 2 3 =0;(D) int a 3 =1,2,3,4,5,6; 其中 不能省略42.若有以下声明和语句:int a=1,2,3,4,5,6,*p;

13、p=a;则下列说法正确的是(B ) 。A) 数组 a中值为 6的元素的地址可用表达式 p+6表示B) 表达式 p4和 a4的值相等 两表达式算出的结果都为同一个值C) p+和 a+都是正确的表达式D) 表达式则对 arr数组元素的正确引用是( D) 。A) arr55 B) a00 C) arr1,3 D) arr1+10arr1+1044.以下能对二维数组 a进行正确初始化的语句是( C ) 。(A)int a2 =1,0,1,5,2,3; 未能满足省略的条件(B)int a24=1,2,3,4,5,6;(C)int a 3=1,2,3,4,5,6;(D)int a =1,0,1,1,1;考

14、点 11:指针45.以下程序的运行结果是(A ) 。#include void main()int a10=1,2,3,4,5,6,7,8,9,10,*p=printf(“%dn“,*p+*q);A) 14 B) 15 C) 8 D) 9输出 1,6.因为本身数组名也是一种指针,其指针类型与数组类型相同。46.若有说明:int i,j=5,*p=则与 i=j;等价的语句是( D ) 。A) i=*p; B) *p=* C) i= D) i=*p;47.若有以下定义和语句:int a10=1,2,3,4,5,6,7,8,9,10,*p=p=p+2;则 printf(“%d“,*p);的输出结果是

15、( A) 。1 处的索引号地址给指针 q,1 处的索引号处的值为 2 printf(“%dn“,*p+*q); A) 6 B) 5 C) 4 D) 348.设有以下语句struct st int n; struct st *next;static struct st a3=5,p=则表达式的值为 6的是( D ) 。(A)p+-n (B)p-n+ (C)(*p).n+ (D)+p-n考点 12:变量的作用域和生存期49.以下叙述中正确的是( B) 。(A)全局变量的作用域一定比局部变量的作用域范围大(B)静态(static)变量的生存期贯穿于整个程序的运行期间(C)函数的形参都属于全局变量(D

16、)未在定义语句中赋初值的 auto变量和 static变量的初值都是随机值静态(static)变量的生存期贯穿于整个程序的运行期间考点 13:函数的定义与调用50.以下不正确的函数首部是(B ) 。(A)f(int a) (B)fun(float a5) 字符出错(C)function(double *a) (D)fun(int *a10)题型二 读程序回答问题考点 1:变量的作用域1. 有如下程序:# include int k=1;void fun(int m)m+=k; k+=m;char k=D;printf(“n%d“,k-C); /* */void main()int i=4;fu

17、n(i);printf(“n%d,%d“,i,k); /* */ 处输出结果为( B ) 。(A) 2 (B) 1 (C) 3 (D) A、B、C 参考答案都不对 处输出结果为( A ) 。(A) 4,1 (B) 5,6 (C) 4,6 (D) A、B、C 参考答案都不对2.阅读下面的程序:#include void num()extern int x,y;int a=15,b=10;x=a-b;y=a+b;int x,y;void main()int a=7,b=5;x=a-b;y=a+b;num();printf(“%d,%dn“,x,y);(1)程序的输出结果是( B) 。 运算结果为

18、a+bA) 2,12 B) 5,25 C) 1,12 D) 输出不确定(2)如果删除程序中的 extern,则输出结果是( C) 。A) 2,12 B) 5,25 C) 1,12 D) 输出不确定3.阅读下面的程序:#include void main()int m=10,n=20,t=30;+m;t+=+n;int n=10,t;t=n*2;m+=t;printf(“%d,%d,%dn“,m,n,t);printf(“%d,%d,%dn“,m,n,t);(1)程序的运行结果是( D) 。 依次为 53 21 41A) 31,11,22 B) 31,10,20 C) 53,21,42 D) 5

19、3,21,4131,10,20 31,21,51 53,21,42 53,21,41(2)若将程序中的 int n=10,t;语句删除,则程序的运行结果是( A) 。A) 31,11,22 B) 31,10,20 C) 53,21,42 D) 53,21,4131,10,20 31,21,51 53,21,42 53,21,41 理由同上考点 2:字符串处理4. 有如下程序# include void fun(char *s)int i;char c;c=s0;for(i=1;si!=0;i+)si-1=si;si-1=c;void main()char s10=“abcdefg“;int i

20、;for(i=1;i# include long fun(char str) int i; long s=0,t;for(i=0; stri!=0;i+) t=0;while(stri=0 else if(fgint i,j;gets(s);for(i=j=0;si!=0;i+)if(si!=c)sj+=si;sj=0;puts(s);程序的功能是( A) 。(A)只保留字符串 s中的所有字符 c (B)将字符串 s中所有的字符 c删除(C)将字符串 s中所有的子字符串 c保留 (D)将字符串 s中所有的子字符串 c删除只保留字符串 s中的所有字符 c如果把 if(si!=c)改为 if(si

21、=c),则程序的功能是(B ) 。(A)只保留字符串 s中的所有字符 c (B)将字符串 s中所有的字符 c删除(C)将字符串 s中所有的子字符串 c保留 (D)将字符串 s中所有的子字符串 c删除考点 3:递归函数9. 有下列程序# include void fun(int n) int m; m=n/10;if(m!=0) fun(m);putchar(n%10+0);void main() int n;scanf(“%d“,if(n=10)fun(n/10);remind=n%10;sum+=remind;if(tempn)printf(“%d+“,remind);elseprintf(

22、“%d“,remind);return sum;(1)程序中的 fun函数被调用次数为( C ) 。(A)2 (B) 3 (C) 4 (D) 5(2)程序的输出结果为( B ) 。(A)5+6+8+4=23 (B) 5+6+8+4+=23 (C)4+8+6+5+=23 (D) 4+8+6+5=2312. 读下面程序,回答问题。#include “stdio.h“int fun(int *a,int n)if(n1) return *a+fun(a+1,n-1);elsereturn *a;void main()int a10=1,2,3,4,5,6,7,8,9,10,s;s=fun(a+3,3

23、);printf(“%dn“,s);()函 id main() unsigned int a=3,b=10; printf(%dn,a1); 17 (A) 1 (. inti,n=5; abc(name,n); for(i=0;i=10) fun(n/10); remind=n%10; sum+=remind;数 fun与下面非递归程序等价的是( C ) 。(A)int fun(int *a,int n) (B) int fun(int *a,int n) int i,s=0; int i,s=0;for(i=0;iint fun(int n)if(n=1)return 1;elseretur

24、n(n+fun(n-1);void main()int x;scanf(“%d“,x=fun(x);printf(“%dn“,x);(1)执行程序时,给变量 x输入 100,程序的输出结果是( B ) 。A) 5050 B) 5040 C) 6050 D) 4050 100X5+40(2)该函数的功能是( A ) 。A)利用递归函数计算 n+n+1 B)利用递归函数计算 n+n-1+.+1C)利用递归函数计算 n+n-1+1 D)以上都不是14.阅读下面的程序:#include fun(int n)if(nvoid fun1(int *x,int *y) int *z;z=x; x=y; y=

25、z;void fun2(int *x,int *y) int z;z=*x; *x=*y; *y=z;(*x)+; (*y)+;void main() int a=5,b=9;fun1(printf(“a=%d,b=%dn“,a,b);fun2(printf(“a=%d,b=%dn“,a,b);main函数中第一个 printf输出结果为( A ) 。 (A) a=9,b=5 (B) a=5,b=9 (C) a=10,b=6 (D) a=6,b=10 a=9,b=5main函数中第二个 printf输出结果为( B ) 。(A)a=9,b=5 (B) a=5,b=9 (C) a=10,b=6

26、(D) a=6,b=10) a=5,b=916.阅读下面的程序:#include void findmax(int *s,int t,int *k)int p:for(p=0,*k=p;ps*k)*k=p;void main()int a10=12,34,21,56,98,67,58,48,19,37;int k;findmax(a,10,printf(“%d,%dn“,k,ak);(1)程序的输出结果是(B ) 。A) 0,12 B) 4,98 C) 3,21 D) 9,37 int a10=12,34,21,56,98,67,58,48,19,37;(2)如果将 void findmax(

27、int *s,int t,int *k)中的*k 改为 k,findmax(a,10,char name10;int age;void fun(struct stu *p)printf(“%sn“,(*p).name);void main()struct stu students3=9801,“Zhang“,20,9802,“Wang“,21,9803,“Zhao“,19;fun(students+2);输入结构体数组的数据(1)fun()函数的功能是( C) 。A) 结构体数组排序 B) 计算 students数组加 2后的值C) 输入结构体数组的数据 D) 输出结构体的 name成员(2)

28、该函数的输出结果是( C ) 。A) Zhao B) Wang C) Zhang D) 980118. 有如下程序int main(void)int x,a100,n,i;void fun(int ,int ,int *);printf(“nPlease enter an integer number:n“);scanf(“%d“,fun(x,a,printf(“nResult is:“);for(i=0;ivoid main(int argc,char *argv) int i; char *p;printf(“%dn“,argc);if(argc2) p=argv1;puts(p+1);

29、若运行该程序时,在命令提示符后输入(表示回车换行符):2-5 file1 file2 file3则执行 printf(“%dn“,argc); 时,输出结果为( C ) 。(A) 1 (B) 2 (C) 3 (D) 4执行 puts(p+1); 时,输出结果为( C ) 。(A) file1 (B) file2 (C) ile1 (D) ile2在命令提示符后输入(表示回车换行符):2-5 file1 file2 file3考点 6:循环选择结构20. 有如下程序:# include void main() static char s=“SSSWiL TECH111W1WALLMP1“;int

30、 j;char ch;for(j=2;(ch=sj)!=0;j+) switch(ch)case A: putchar(a); continue;case 1: break;case 1: while( (ch=s+j)!=n case 9: putchar(#);case E:case L: continue;default : putchar(ch); continue;putchar(*); printf(“n“); 程序的运行结果是(D(A) SWi TCH*# (B) SSSWi TCH*#(C) SWi TCH*#W# (D) SSSWi L TECHWWALLMP 字符串“SSS

31、WiL TECH111W1WALLMP1“中的 “1”是(B ) 。(A) 字符 1 (B) 十制制数值 1 (C) 两个字符 (D) 八进制数值 1十制制数值 121. 读下面程序并回答问题:#include “stdio.h“void main()int x=1,y=0,a=0,b=0;switch(x)case 1:switch(y)case 0:a+;break;case 1:b+;break;case 2:a+;b+;break;printf(“%d,%dn“,a,b);(1)程序的运行结果为( A ) 。 循环可得(A) 2,1 (B) 1,2 (C) 1,1 (D) 0,0(2)

32、将程序中的 switch(x)更改为 switch(x!=1),其程序运行结果是( D ) 。(A) 2,1 (B) 1,2 (C) 1,1 (D) 0,022.阅读下面的程序:#include void main()char *s=“12134211“;int a4=0,0,0,0,k,i;for(k=0;sk;k+)switch(sk)case 1:i=0;case 2:i=1;case 3:i=2;case 4:i=3;ai+;for(k=0;kvoid main()int s;scanf(“%d“,if(s100)printf(“Error.“);elseswitch(s/20)cas

33、e 0:case 1:case 2:printf(“%c“,D);case 3:printf(“%c“,C);break;case 4:case 5:switch(s/45)case 1:printf(“%c“,B);break;case 2:printf(“%c“,C);break;(1)若运行该程序时从键盘输入 45,则运行输出为( ) 。A) DCBA B) DCB C) DC D) D(2)若运行该程序时从键盘输入 45,则运行输出为( ) 。 结果应为 DCBAA) DCBA B) DBA C) BA D) A24.阅读下面的程序:#include void main()int a=

34、1,b=2,c=2,t;while(abc)x=y;y=z;z=x;printf(“%d,%d,%dn“,x,y,z);若运行改程序时从键盘输入 3,2,1,则程序的输出结果为( C) 。(A)2,3,2 (B)1,3,1 (C)2,3,1 (D)1,2,3若运行改程序时从键盘输入-3,-2,-1,则程序的输出结果为(C ) 。(A)2,3,2 (B)1,3,1 (C)2,3,1 (D)1,2,327. 有如下程序int main(void)int x=1,a=0,b=0;switch(x)case 0:b+;case 1:a+;case 2:a+,b+;printf(“a=%d,b=%dn“

35、,a,b);程序的运行结果为( B ) 。(A)a=2,b=1 (B)a=1,b=1 (C)a=1,b=0 (D)a=2,b=2当在 case 1:a+;后面添加语句 break;程序的运行结果为( B ) 。(A)a=2,b=1 (B)a=1,b=1 (C)a=1,b=0 (D)a=2,b=2考点 7:文件操作28. 在下面程序中,若 file.dat文件中原有内容为:abc,则运行程序后 file.dat文件中的内容为( C ) 。# include void main() FILE *fp;fp=fopen(“file.dat“,“w“);fprintf(fp,“def“);fclose

36、(fp); (A) abcdef (B) abc (C) def (D) NULL fp=fopen(“file.dat“,“w“);fprintf(fp,“def“);fclose(fp); 29. 读下面程序并回答问题。#include “stdio.h“char x48=“First“,“Second“,“Third“,“Four“;int a4=6,7,6,5;void main()int i;char y48;FILE *fp;fp=fopen(“TEST.txt“,“w“);for(i=0;i0) k=j;if(i!=k) temp=namei;namei=namek;namek=

37、temp; void main()static char *name=“turbo c“,“fortan“,“basic“,“forbase“,“java“;int i,n=5;abc(name,n);for(i=0;ivoid main()char *p4=“abcd“,“efgh“,“ijkl“,“mnop“;int i;for(i=0;iai)t=aj;aj=ai;ai=t;void main()int x10=1,0,-76,4,8,12,65,100,-45,123;int i;sort(x+5,5);printf(“%d“,x5);(1)程序中 sort函数的功能是( B ) (A

38、)用起泡法对含有 n个元素的数组 a从小到大的排序(B)用选择法对含有 n个元素的数组 a从小到大的排序(C)用二分法对含有 n个元素的数组 a从小到大的排序(D)用起泡法对含有 n个元素的数组 a从大到小的排序(2)该程序的运行输出结果为( A )(A) -76 (B) -45 (C) 8 (D) 123考点 10:变量的生存期33.阅读下面的程序:#include fun(int x)int a=3;a+=x;return(a);void main()int k=2,m=1,n;n=fun(k);n=fun(n);printf(“%dn“,n);(1)程序的运行结果为( B) 。A) 9 B) 6 C) 5 D) 8D(2)如果在 fun()函数的 int a=3;前添加 static,则程序的运行结果是( C) 。A) 8 B) 5 C) 10 D) 934.阅读下面的程序:#include int s=0;fun(int m)static int i=10;int k;s+=i+;s+=m+;int i=1;for(k=1;kstruct NODEint num;struct NODE *next;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报