《历年全国计算机二级C语言题.pdf》由会员分享,可在线阅读,更多相关《历年全国计算机二级C语言题.pdf(10页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、50道 C语言知识题1.以下叙述中正确的是A)用 C程序实现的算法必须要有输入和输出操作B)用 C程序实现的算法可以没有输出但必须要有输入C)用 C程序实现的算法可以没有输入但必须要有输出D)用 C程序实现的算法可以既没有输入也没有输出2.下列可用于 C语言用户标识符的一组是A)void,define,WORD B)a3_3,_123,Car C)For,-abc,IF Case D)2a,DO,sizeof 3.以下选项中可作为C语言合法常量的是A)-80 B)-080 C)-8e1.0 D)-80.0e 4.若有语句:char*line5;,以下叙述中正确的是A)定义 line 是一个数组
2、,每个数组元素是一个基类型为char 为指针变量B)定义 line 是一个指针变量,该变量可以指向一个长度为5的字符型数组C)定义 line 是一个指针数组,语句中的*号称为间址运算符D)定义 line 是一个指向字符型函数的指针5.以下定义语句中正确的是A)int a=b=0;B)char A=65+1,b=b;C)float a=1,*b=&a,*c=&b;D)double a=00;b=1.1;6.有以下程序段char ch;int k;ch=a;k=12;printf(%c,%d,ch,ch,k);printf(k=%d n,k);已知字符 a 的 ASCII码值为 97,则执行上述程
3、序段后输出结果是A)因变量类型与格式描述符的类型不匹配输出无定值B)输出项与格式描述符个数不符,输出为零值或不定值C)a,97,12k=12 D)a,97,k=12 7.有以下程序main()int i,s=1;for(i=1;i=2&c=2&c=2&cb)a=b;c=a;if(c!=a)c=b;printf(%d,%d,%dn,a,b,c);其输出结果是A)程序段有语法错B)3,5,3 C)3,5,5 D)3,5,7 10.有以下程序#include main()int x=1,y=0,a=0,b=0;switch(x)case 1:switch(y)case 0:a+;break;case
4、 1:b+;break;case 2:a+;b+;break;case 3:a+;b+;printf(a=%d,b=%dn,a,b);程序的运行结果是A)a=1,b=0 B)a=2,b=2 C)a=1,b=1 D)a=2,b=1 11.下列程序的输出结果是#include stdio.h main()int i,a=0,b=0;for(i=1;i10;i+)if(i%2=0)a+;continue;b+;printf(a=%d,b=%d,a,b);A)a=4,b=4 B)a=4,b=5 C)a=5,b=4 D)a=5,b=5 已知#int t=0;while(t=1).则以下叙述正确的是A)循
5、环控制表达式的值为 0 B)循环控制表达式的值为 1 C)循环控制表达式不合法D)以上说法都不对12.下面程序的输出结果是main()int a10=1,2,3,4,5,6,7,8,9,10,*p=a;printf(%dn,*(p+2);A)3 B)4 C)1 D)2 13.以下错误的定义语句是A)int x3=0,1,1,2,3;B)int x43=1,2,3,1,2,3,1,2,3,1,2,3;C)int x4=1,2,3,1,2,3,1,2,3,1,2,3;D)int x3=1,2,3,4;14.有以下程序void ss(char*s,char t)while(*s)if(*s=t)*s
6、=t-a+A;s+;main()char str1100=abcddfefdbd,c=d;ss(str1,c);printf(%sn,str1);程序运行后的输出结果是A)ABCDDEFEDBD B)abcDDfefDbD C)abcAAfefAbA D)Abcddfefdbd 15.有如下程序main()char ch25=6937,8254,*p2;int i,j,s=0;for(i=0;i2;i+)pi=chi;for(i=0;i 0;j+=2)s=10*s+pij-0;printf(%dn,s);该程序的输出结果是A)69825 B)63825 C)6385 D)693825 16.有
7、定义语句:char s10;,若要从终端给 s输入5个字符,错误的输入语句是A)gets(&s0);B)scanf(%s,s+1);C)gets(s);D)scanf(%s,s1);17.以下叙述中错误的是A)在程序中凡是以#开始的语句行都是预处理命令行B)预处理命令行的最后不能以分号表示结束C)#define MAX 是合法的宏定义命令行D)C程序对预处理命令行的处理是在程序执行的过程中进行的18.设有以下说明语句typedef struct int n;char ch8;PER;则下面叙述中正确的是A)PER 是结构体变量名B)PER 是结构体类型名C)typedef struct 是结构
8、体类型D)struct 是结构体类型名19.以下叙述中错误的是A)gets函数用于从终端读入字符串B)getchar函数用于从磁盘文件读入字符C)fputs函数用于把字符串输出到文件D)fwrite 函数用于以二进制形式输出数据到文件20.以下能正确定义一维数组的选项是A)int a5=0,1,2,3,4,5;B)char a=0,1,2,3,4,5,0 ;C)char a=A,B,C;D)int a5=0123;21.有以下程序#include main()char p=a,b,c,q10=a,b,c;printf(%d%dn,strlen(p),strlen(q);以下叙述中正确的是A)在
9、给 p和 q 数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3 B)由于 p数组中没有字符串结束符,长度不能确定,但 q 数组中字符串长度为3 C)由于 q数组中没有字符串结束符,长度不能确定,但 p 数组中字符串长度为3 D)由于 p 和 q 数组中都没有字符串结束符,故长度都不能确定22.有以下程序#include#include void fun(char*s,int n)char*t;int i,j;for(i=0;in-1;i+)for(j=i+1;jstrlen(sj)t=si;si:sj;sj=t;main()char*ss=bcc,bbcc,xy,aaaacc,aa
10、bcc;fun(ss,5);printf(%s,%sn,ss0,ss4);程序的运行结果是A)xy,aaaacc B)aaaacc,xy C)bcc,aabcc D)aabcc,bcc 23.有以下程序#include int f(int x)int y;if(x=0|x=1)return(3);y=x*x-f(x-2);return y;main()int z;z=f(3);printf(%dn,z);程序的运行结果是A)0 B)9 C)6 D)8 24.下面程序段的运行结果是char str=ABC,*p=str;printf(%dn,*(p+3);A)67 B)0 C)字符 C的地址D)
11、字符 C25.若有以下定义:struct link int data;struct link*next;a,b,c,*p,*q;且变量 a和 b 之间已有如下图所示的链表结构:26.指针 p 指向变量 a,q 指向变量 c。则能够把 c 插入到 a 和 b 之间并形成新的链表的语句组是:A)a.next=c;c.next=b;B)p.next=q;q.next=p.next;C)p-next=&c;q-next=p-next;D)(*p).next=q;(*q).next=&b;27.对于下述程序,在方式串分别采用 wt 和wb 运行时,两次生成的文件TEST 的长度分别是#include v
12、oid main()FILE*fp=fopen(TEST,);fputc(A,fp);fputc(n,fp);fputc(B,fp);fputc(n ,fp);fputc(C ,fp);fclose(fp);A)7字节、7字节B)7字节、5字节C)5字节、7字节D)5字节、5字节28.变量 a 中的数据用二进制表示的形式是01011101,变量 b 中的数据用二进制表示的形式是 11110000。若要求将 a 的高4位取反,低4位不变,所要执行的运算是A)ab B)a|b C)a&b D)a429.下面的程序段运行后,输出结果是int i,j,x=0;static int a88;for(i=
13、0;i3;i+)for(j=0;j3;j+)aij=2*i+j;for(i=0;i=A&kk=A|kk=a&(kk+32)=ZD)isalpha(kk)&(kk=2&c=2&c=2&c=6)&(c%2!=1)39.若有条件表达式(exp)?a+:b-,则以下表达式中能完全等价于表达式(exp)的是A)(exp=0)B)(exp!=0)C)(exp=1)D)(exp!=1)40.以下不正确的定义语句是A)double x5=2.0,4.0,6.0,8.0,10.0;B)int y5=0,1,3,5,7,9;C)char c1=1,2,3,4,5;D)char c2=x10,xa,x8;41.下列
14、程序执行后的输出结果是main()int a33,*p,i;p=&a00;for(i=1;i2!1 47.有定义语句:char s10;,若要从终端给 s 输入5个字符,错误的输入语句是A)gets(&s0);B)scanf(%s,s+1);C)gets(s);D)scanf(%s,s1);48.有以下程序#include#define N 5#define M N+1#define f(x)(x*M)main()int i1,i2;i1=f(2);i2=f(1+1);printf(%d%dn,i1,i2);程序的运行结果是A)12 12 B)11 7 C)11 11 D)12 749.若有以
15、下说明和定义union dt int a;char b;double c;data;以下叙述中错误的是A)data的每个成员起始地址都相同B)变量 data 所占内存字节数与成员c 所占字节数相等C)程序段:data.a=5;printf(%fn,data.c);输出结果为 5.000000 D)data 可以作为函数的实参50.有以下程序#include main()FILE*fp;int k,n,a6=1,2,3,4,5,6;fp=fopen(d2.dat,w);fprintf(fp,%d%d%dn,a0,a1,a2);fprintf(fp,%d%d%dn,a3,a4,a5);fclose(fp);fp=fopen(d2.dat,r);fscanf(fp,%d%d,&k,&n);printf(%d%dn,k,n);fclose(fp);程序运行后的输出结果是A)1 2 B)1 4 C)123 4 D)123 456答案12345678910CBAABDDBBD11121314151617181920BBACBCDDBB21222324252627282930BAACBDBACA31323334353637383940DBBAADBBBB41424344454647484950BBCACDDBDD
限制150内