11.下列关于C语言的说法不正确的是 A)C语言既具有高级语言的一切功能,也具有低级语言的一些功能 B)C语言中的每一条执行语句都必须用分号结束,分号不是C语言的一部分,是语句之间的分隔符号 C)注释可以出现在程序中任意合适的地方 D)命令行后面不能加分号,命令行不是C语言的语句
A B C D
12.下列关于标识符的说法中错误的是 A)合法的标识符是由字母、数字和下划线组成 B)C语言的标识符中,大写字母和小写字母被认为是两个不同的字符 C)C语言的标识符可以分为三类,即关键字、预定义标识符和用户标识符 D)用户标识符与关键字不同时,程序在执行时将给出出错信息
A B C D
13.下列关于复合语句和空语句的说法错误的是 A)复合语句是由“{”开头,由“}”结尾的 B)复合语句在语法上视为一条语句 C)复合语句内,可以有执行语句,不可以有定义语句部分 D)C程序中的所有语句都必须由一个分号作为结束
A B C D
14.现有格式化输入语句,scanf("x=%d],sum]y=%d,line]z=%dL",&x,&y,&z);,现在已知在输入数据后,x,y,z的值分别是12,34,45,则下列数据是正确的输入格式的是 A)12,34,45 B)x=12,y=34,z=45 C)x=12C,sumy=34,z=45 D)x=12 ,sum y=34,line z=45 [注]:“ ”表示空格
A B C D
15.现有如下程序段,此程序段编译有错误,则程序段的错误出在 #include main() { int a=30,b=40,c=50,d; d=a>30?b:c; switch(d){ case a:printf("%d,",a); case b:printf("%d,",b); case c:printf("%d,",c); default:printf("#"); } } A)default:printf("#");这个语句 B)d=a>30?b:c;这个语句 C)case a:printf("%d,",a); case b:printf("%d,",b); case c:printf("%d,",c);这三个语句 D)switch(d)这个语句
A B C D
16.下列语句中,错误的是(x,y,a,b假设已经定义好) A)while(x=y)x--; B)do x++ while(x==10); C)while(0); D)do y++;while(a==b);
A B C D
17.下列说法中错误的是 A)只能在循环体内使用break语句 B)在循环体内使用break语句可以使流程跳出本层循环体,从而提前结束本层循环 C)在while和do-while循环中,continue语句并没有使整个循环终止 D)continue的作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再一次进行循环判断
A B C D
18.下面关于字符常量的说法错误的是 A)一个字符常量代表ASCII字符集中的一个字符 B)单引号中的大写字母和小写字母代表不同的字符常量 C)字符常量只能包含一个字符 D)字符常量可以用单引号或双引号括起来
A B C D
19.现有如下程序 #include "stdio.h" int fun(int x) { printf("x=%d\n",++x);} main() { fun(12+5);} 则程序的输出结果是 A)12 B)13 C)17 D)18
A B C D
20.现有如下程序段 #include "stdio.h" int aa(int x,int y); main() { int a=24,b=16,c; c=aa(a,b); printf("%d\n",c);} int aa(int x,int y) { int w; while(y) { w=x%y; x=y; y=w;} return x;} 则程序段的输出结果是 A)8 B)7 C)6 D)5
A B C D
21.下列说法错误的是 A)函数调用时,函数名必须与所调用的函数名字完全相同 B)实参的个数必须与形式参数的个数一致 C)实参可以是表达式,在类型上必须与形参一一匹配 D)C语言规定,函数必须先定义,后调用(函数的返回值类型为int或char时除外)
A B C D
22.函数的值通过return语句返回,下面关于return语句的形式描述错误的是 A)return表达式; B)return(表达式); C)一个return语句可以返回多个函数值 D)一个return语句只能返回一个函数值
A B C D
23.现有如下程序段 #include "stdio.h" int *fun(int *a,int *b) { int c; c=*a%*b; return &c;} main() { int a=5,b=19,*c; c=fun(&a,&b); printf("%d\n",++*c);} 则程序段执行后的结果为 A)8 B)7 C)6 D)5
A B C D
24.现有如下程序段 #include "stdio.h" main() { int k[30]={12,324,45,6,768,98,21,34,453,456}; int count=0,i=0; while(k[i]) { if(k[i]%2==0‖k[i]%5==0)count++; i++; } printf("%d,%d\n",count,i);} 则程序段的输出结果为 A)7,8 B)8,8 C)7,10 D)8,10
A B C D
25.现有如下定义语句 int *p,s[20],i; p=s; 表示数组元素s[i]的表达式不正确的是 A)*(s+i) B)*(p+i) C)*(s=s+i) D)*(p=p+i)
A B C D
31.现在有如下程序 #include "stdio.h" main() { char s[80]; int i,j; gets(s); for(i=j=0;s[i]!=′\0′;i++) if(s[i]!=′H′) s[j]=′\0′; puts(s);} 这个程序段的功能是删除输入的字符串中字符′H′,则空线上应当添入的是 A)s[j++]=s[i];j++; B)s[j]=s[i++];j++; C)s[j++]=s[i]; D)s[j]=s[i];
A B C D
32.阅读下列程序段,则程序的输出结果为 #include "stdio.h" #define M(X,Y)(X)*(Y) #define N(X,Y)(X)/(Y) main() { int a=5,b=6,c=8,k; k=N(M(a,b),c); printf("%d\n",k);} A)3 B)5 C)6 D)8
A B C D
33.若有以下定义和语句 struct a { int n,m;}; struct a st[3]={{1,20},{2,19},{3,21}}; struct a *p=st; 则以下错误的引用是 A)(p++)->n; B)st[0].n; C)(*p).n; D)p=&st.m;
A B C D
34.下面函数的功能是将指针t2所指向的线性链表,链接到t1所指向的链表的末端。假定t1所指向的链表非空,要实现此功能则应该添入的选项是 struct node{ float x;struct node *next;}; connect(struct node *t1, struct node *t2) { if(t1->next==NULL)t1->next=t2; else connect( ,t2); } A)t1.next B)++t1.next C)t1->next D)++t1->next
A B C D
35.阅读如下程序段 #include "stdio.h" void fc(FILE *); main(int argc,char *argv[]) { FILE *fp; int i=1; while(--argc>0) { fp=fopen(argv[i++],"r"); fc(fp); fclose(fp);}} void fc(FILE *p) { char c; while((c=getc(p))!=′#′) putchar(c-32); } 这个程序段编译、连接以后生成可执行文件50.exe,假定磁盘当前目录下有3个文 本文件,其文件名和内容分别为: 文件名 内容 k1.txt china# k2.txt ese# k3.txt year# 当在DOS当前目录下键入:50?k1.txt?k2.txt?k3.txt(注:" ?"表示空格,表 示回车),则输出结果为 A)china?ese?year B)Chinaeseyear C)CHINA?ESE?YEAR D)CHINAESEYEAR
A B C D
31.现在有如下程序 #include "stdio.h" main() { char s[80]; int i,j; gets(s); for(i=j=0;s[i]!=′\0′;i++) if(s[i]!=′H′) s[j]=′\0′; puts(s);} 这个程序段的功能是删除输入的字符串中字符′H′,则空线上应当添入的是 A)s[j++]=s[i];j++; B)s[j]=s[i++];j++; C)s[j++]=s[i]; D)s[j]=s[i];
A B C D
32.阅读下列程序段,则程序的输出结果为 #include "stdio.h" #define M(X,Y)(X)*(Y) #define N(X,Y)(X)/(Y) main() { int a=5,b=6,c=8,k; k=N(M(a,b),c); printf("%d\n",k);} A)3 B)5 C)6 D)8
A B C D
33.若有以下定义和语句 struct a { int n,m;}; struct a st[3]={{1,20},{2,19},{3,21}}; struct a *p=st; 则以下错误的引用是 A)(p++)->n; B)st[0].n; C)(*p).n; D)p=&st.m;
A B C D
34.下面函数的功能是将指针t2所指向的线性链表,链接到t1所指向的链表的末端。假定t1所指向的链表非空,要实现此功能则应该添入的选项是 struct node{ float x;struct node *next;}; connect(struct node *t1, struct node *t2) { if(t1->next==NULL)t1->next=t2; else connect( ,t2); } A)t1.next B)++t1.next C)t1->next D)++t1->next
A B C D
35.阅读如下程序段 #include "stdio.h" void fc(FILE *); main(int argc,char *argv[]) { FILE *fp; int i=1; while(--argc>0) { fp=fopen(argv[i++],"r"); fc(fp); fclose(fp);}} void fc(FILE *p) { char c; while((c=getc(p))!=′#′) putchar(c-32); } 这个程序段编译、连接以后生成可执行文件50.exe,假定磁盘当前目录下有3个文 本文件,其文件名和内容分别为: 文件名 内容 k1.txt china# k2.txt ese# k3.txt year# 当在DOS当前目录下键入:50?k1.txt?k2.txt?k3.txt(注:" ?"表示空格,表 示回车),则输出结果为 A)china?ese?year B)Chinaeseyear C)CHINA?ESE?YEAR D)CHINAESEYEAR
A B C D
6.阅读下面语句,则程序的执行结果是 【6】 。 #include "stdio.h" main() { int a=-1,b=1,k; if((++a<0)&&!(b--<=0)) printf("%d,%d\n",a,b); else printf("%d,%d\n",b,a);}
输入答案,中间不含空格:
7.阅读下面语句,则执行后的输出结果为 【7】 。 #include "stdio.h" main() { char a,b; for(a=′0′,b=′9′;a printf("%c%c",a,b); printf("\n");}
输入答案,中间不含空格:
8.阅读下面程序,则执行后程序的结果为 【8】 。 #include "stdio.h" main() { int a=0,b=0; while(a<15)a++; while(b++<15); printf("%d,%d\n",a,b);}
输入答案,中间不含空格:
9. 下列程序的输出结果是 【9】 , 【10】 。 #include main() { float a=-1.3;b=1.3; printf("%f,%f",fabs(a),fabs(b);}
输入答案,中间不含空格:
10.设有以下定义和语句,则*(*(p+2)+1)的值为 【11】 。 int a[3][2]={10,20,30,40,50,60},(*p)[2]; p=a;
输入答案,中间不含空格: