程序填空题注意 分号; 写上
| char str[] = "ab\n\012\\\""; |
| printf("%d", sizeof(str)); |
| printf("%d", strlen(str)); |
| 3.为了避免嵌套的条件语句if-else的二义性,C语言规定:与else配对的是( )。 |
| A.if同一行上的if |
| B.缩排位置相同的if |
| C.其之前最近的if |
| D.其之后最近的if |
| |
| C |
| 4.设有定义: float a=2,b=4,h=3; 以下C语言表达式与代数式(a+b) /2*h计算结果不相符的是( )。 |
| A. (1/2)* (a+b) *h |
| B. h/2*(a+b) |
| C. (a+b) *h/2 |
| D. (a+b) *h*1/2 |
| -------------------------------- |
| printf("%d", 1/2);//0 |
| printf("%f\n", b/a);//2.000000 |
| printf("%f\n", 1.0/2.0);//0.500000 |
| A |
| 5.设变量t为int型,下列选项中不正确的赋值语句是( )。. |
| A. ++t; B. nl=(n2=(n3=0)); C. k=i==m; D. a=b+c=1; |
| -------------------------------- |
| b,c的值无法确定 |
| D |
| 6.有以下程序的输出结果是( )。 |
| void swap1(int c[]) |
| { int t; |
| t=c[0] |
| } |
| void swap2(int c0,int cl) |
| { int t; |
| t=c0 |
| main |
| { int a[2]={3,5},b[2]={3, 5}; |
| swapl (a) |
| swap2(b[0],b[1]); |
| printf("%d %d %d %d')n",a[0],a[1],b[0],b[1]); |
| } |
| A.5353 B.5335 |
| C.3535 D.3553 |
| -------------------------------- |
| B swap1里是a的地址所以改变了内部数组,swap2是数值 |
| |
| 7.若有以下程序段: |
| char str[]="ab\n\012\\\""; printf( “%d”,strlen(str)); |
| 该程序段的输出结果是( )。 |
| A. 3 B.4 C. 6 D.12 |
| -------------------------------- |
| C |
| |
| printf("%5d", 3); |
| printf("%05d", 3); |
| printf("%-3d", 3); |
| |
| float a = 57.666; |
| printf("%1.2f\n",a); |
| printf("%2.3f\n",a); |
| |
| float a; |
| scanf("%6f", &a); |
| |
| char str[10]; |
| scanf("%s",str); |
| 15.执行语句for(i=1;i++<4;); 后变量i的值是( 5 )。 |
| 16.不能把字符串“Hello!" 赋给数组b的语句是( )。 |
| A. char b[10]={ 'H','E','L','L','0','!'}; |
| B. char b[10];b="Hello!"; |
| C. char b[10]; strcpy(b,"Hello!" ); |
| D. char b[10]="Hello!"; |
| -------------------------------- |
| B。不能先定义再赋值 |
| |
| 20.以下程序的输出结果是( )。 |
| main() |
| { |
| int a=0, i; |
| for(i=l; i<5; i++) |
| switch(i){ |
| case 0: |
| case 3:a+=2; |
| case l: |
| case 2:a+=3; |
| default: a+=5; |
| } |
| printf("%d\n",a); |
| } |
| -------------------------------- |
| 没有break,把后面都执行一遍。 |
| 31 |
| 21.下面程序的输出是( )。 |
| fun(int x){ |
| static int a=3; |
| a+= X; |
| return(a); |
| } |
| main(){ |
| int k=2,m=1, n; |
| n=fan(k); |
| n=fun (m); |
| printf(""%d" ,n); |
| } |
| -------------------------------- |
| static 静态,编译时只赋值一次 |
| 6 |
| |
| 22.以下函数值的类型是( ) 。 |
| fun( float x){ |
| float y; |
| y= 3*x-4; |
| return y; |
| } |
| A. int B.不确定 C. void D. float |
| -------------------------------- |
| 不指定就是默认int |
| A |
| 3、以下叙述中错误的是 |
| A、在程序中凡是以"#"开始的语句行都是预处理命令行 |
| B、预处理命令行的最后不能以分号表示结束 |
| C、#define MAX是合法的宏定义命令行 |
| D、C程序对预处理命令行的处理是在程序执行的过程中进行的 |
| -------------------------------- |
| 解析:预处理命令不是C语言本身的组成部分,不能直接对它进行编译(因为编译程序不能识别它们),必须在对程序进行通常的编译之前,先对程序中这些特殊的命令进行"预处理",经过预处理后程序不再包括预处理命令了,最后再由编译程序对预处理后的程序进行通常的编译。故本题答案为D。 |
| 21、设有两行定义语句: |
| int scanf; |
| float case; |
| 则以下叙述正确的是 |
| A、第2行语句不合法 B、两行定义语句都合法 |
| C、第1行语句不合法 D、两行定义语句都不合法 |
| |
| case是关键字,scanf是预定义标识符(标准库函数名),可以被定义成变量名,但是失去原有含义。故本题答案为A。 |
| 24、以下叙述错误的是 |
| A、若用户标识符的命名与关键字相同,将产生编译错误 |
| B、若用户标识符的命名与预定义标识符相同,命名无效 |
| C、若用户标识符的命名与预定义标识符相同,预定义标识符失去原有含义 |
| D、若用户标识符的命名与预定义标识符相同,可能引发运行错误 |
| -------------------------------- |
| 解析: 如果用户标识符与关键字相同,则在对程序进行编译时系统将给出出错信息,故选项A正确;如果用户标识符与预定义标识符相同,系统并不报错,只是该预定义标识符将失去原定含义,代之以用户确认的含义,这样有可能会引发一些运行时错误,故选项C、D正确。所以本题答案选B。 |
| 9、设有定义:inta;floatb;执行scanf("%2dwf”,&a,&b);语句时,若从键盘输入876 543.0<回车>则a和b的值分别是 |
| A、76和543.0 B、876和543.0 C、87和543.0 D、87和6.0 |
| -------------------------------- |
| "scanf("%2d%f", &a, &b);"中,"%2d%f"中的2代表输入数据所占宽度。所以a的数据宽度为两位,即值为87;数字字符串随后的1位赋值给了b。即a和b分别为87和6.0。故本题的答案为D。 |
| 10、若变量已正确定义,在if(W) printf("%dNn",k);中,以下不可替代的是 |
| A、a==b B、a<>b C、chr=getchar() D、b++ |
| -------------------------------- |
| if后面的表达式,可以是关系表达式或逻辑表达式,也可以是其他类型的数据,如整型、实型、字符型等。C语言中"不等于"是用"!="来表示的,而不是"<>"。B |
| |
| 3、有以下程序 |
| main() |
| {int i; |
| for(i=1;i<=40;i++) |
| { if(i++%5==0) |
| if(++i%8==0) printf(“%d",i); |
| } |
| printf("\n"); |
| } |
| 执行后的输出结果是 |
| -------------------------------- |
| i%5==0 |
| (i+2)%8==0 |
| 32 |
| |
| 4、有以下程序 |
| void f(int v,int w) |
| {int t; |
| t=v;v=w;w=t; |
| } |
| main() |
| {int x=5,y=7,z=6; |
| if(x>y) f(x,y); |
| else if(y>z) f(y,z); |
| else f(×,z); |
| printf("%d,%d,%d\n",x,y,z); |
| } |
| 执行后输出结果 |
| -------------------------------- |
| 本题涉及函数传输问题,f函数的形参是基本类型变量,并非指针类型,所以不会更改实参的。x,y,z的值。 |
| 5,7,6 |
| |
| void swap(int *x, int *y) |
| { |
| int t; |
| t = *x; |
| *x = *y; |
| *y = t; |
| } |
| int main() |
| { |
| int a = 1, b = 2; |
| swap(&a, &b); |
| printf("a=%d,b=%d", a, b); |
| return 0; |
| } |
| 3、有以下程序 |
| main() |
| {int a=5,b=4,c=3,d=2; |
| if(a>b>c) |
| printf("%d\n",d); |
| else if((c-1>=d)==1) |
| printf("%d\n",d+1); |
| else |
| printf("%d\n",d+2); |
| } |
| 执行后输出的结果是 |
| -------------------------------- |
| a>b>c,要先判断a>b,5>4,表达式为真;然后再判断1>c,不成立;接着执行(c-1>=d)==1中c-1>=d成立,为真,即1。1==1成立。输出d+1即3。 |
| char a[]="xyz",b[]={'z','y','z'}; |
| |
| char str[20] = "0123456"; |
| scanf("%s", str); strcat(str, "789"); |
| puts(str); |
| |
| |
| main() { |
| int i, a = 0; |
| for (i = 0; i < 5; i++)a += f(); |
| printf("%d\n", a); |
| } |
| int f() { |
| static int i = 0; |
| int s = 1; |
| s += i; i++; |
| return s; |
| } |
| -------------------------------- |
| 一个变量被指定为静态变量,在编译时就为其分配了存储空间,程序一开始执行便被建立,直到该程序执行结束都存在,而不像动态变量只存在于函数或分程序被调用期间。在函数多次被调用的过程中静态局部变量的值具有可继承性。 |
| 15 |
| int a = 3;//全局变量 |
| main() { |
| int s = 0; |
| {int a = 5; s += a++; } |
| s += a++; printf("%d\n", s); |
| } |
| -------------------------------- |
| 作用域 |
| 8 |
| int a=2; |
| int f(int n){ |
| static int a=3; |
| int t=0; |
| if(n%2){static int a=4;t+=a++;} |
| else {static int _a=5;t+=a++;} |
| return t+a++; |
| } |
| main(){ |
| { |
| int s=a,i; |
| for(i=0;i<3;i++) s+=f(i); |
| printf("%d\n",s); |
| } |
| -------------------------------- |
| 29 |
| |
| main{ |
| a=1,b=2,c=3; |
| AA(a+b,b+c,a+c); |
| } |
| AA(x,y,z){ |
| reture x*y+z; |
| } |
| a+b*b+c+a+c=1+4+3+1+3=12 |
| int x=1,y=1,z=1; |
| z=x++,y++,++x; |
| printf("%d,%d,%d",x,y,z);//3,2,1 |
| //如果是逗号表达式 |
| z=(x++,y++,++x);//这样的话是3,2,3 |
| int x = 10; |
| printf("%d,%d,%d",x,x++,++x); |
| <---------------------------- |
| 12,11,12 |
| x++不变 |
| x,x++变 |
| |
| char s[50]; |
| int i,j=0; |
| scanf("%s"%,s); |
| for(i=0;s[i]!='\0' ; i++) |
| if((s[i]>='A'&&s[i]<='Z')||(s[i]>='a'&&s[i]<='z')) |
| j++; |
| printf(“j=%d\n”,j); |
| |
| int a[50]; |
| average(a); |
| int average(int a[]){} |
| c语言中的PI |
| #define PI 3.1415926 |
| char str[]="abcd"; |
| char str="abcd"; |
| 7.语句char str[20];说明str是一个字符串,最多能表示 |
| A.20个字符 B.19个字符 C.18个字符 D.21个字符 |
| |
| B。'/0'结束不算字符 |
| char a[80]; |
| sacnf("%s",a);//这里的a等价于&a[0],数组地址 |
| 25.下列程序 |
| int c=1; |
| main() |
| {static int a=5;int b=6; |
| printf(“a=%d b=%d c=%d\n" ,a,b,c); |
| func(); |
| printf(“a=%d, b=%d, c=%d\n”,a,b,c); |
| func() ; |
| } |
| func (){ |
| static int a=4;int b=10; |
| a+=2; |
| c+=10; |
| b+=c; |
| printf(“a=%d, b=%d, c=%d\n”,a,b,c); |
| } |
| 运行后输出的数据为 |
| -------------------------------- |
| a=5 b=6 c=1 |
| a=6 b=21 c=11 |
| a=5 b=6 c=11 |
| a=8 b=31 c=21 |
| |
| 6.假设有条件int x=1,y=2,z=3;则表达式z+=x>y?++x:++y的值是______ |
| |
| 6。z+=3,考察运算符优先级。 |
| 3.语句printf("%f%%",1.0/3);输出为0.333333。 |
| -------------------------------- |
| 错误 |
| %%时转义字符。0. 333333%。 |
| 11. C语言中只能逐个引用数组元素而不能一次引用整个数组、 |
| -------------------------------- |
| 正确 |
| 13.)通过return语句,函数可以带回一个或一个上的返回值. |
| -------------------------------- |
| 错误。就只能一个 |
| 1.下列程序的输出结果是(), |
| main() |
| { |
| printf("%d\n" ,nu11): |
| } |
| A.0 B.变量无定义 C.-1 D.1 |
| -------------------------------- |
| B |
| 2.用下列语句定义a,b,c,然后执行b=a、 c='b'+b,则b,c的值是(). |
| long a=0xfffff; |
| int b; |
| char C; |
| A.0ffffff和0x61 B.-1和98 |
| C.-1和97 D.指向同一地址 |
| -------------------------------- |
| C。这里a时补码 |
| 补 1111 1111 1111 1111 1111 1111 1111 |
| 原 1000000000000000000000000000000001 -1 |
| c=98-1=97 |
| 5.若a是float型变量,b是unsigned型变量,以下输入语句中合法的是(). |
| A. scanf ("%6.2f%d" , &a, &b); |
| B. scanf("%f%n" , &a, &b) ; |
| C. scanf ("%f%3o" , &a, &b); |
| D. scanf( "%f%f”, &a, &b) ; |
| -------------------------------- |
| C。printf("this%n is a test\n",&count);//调用后count为4 |
| %n指针相关不考 |
| 8.下列各m的值中,能使m%3==2&&m%5==3&&m%7==2 为真的是(). |
| A.8 B.23 C.17 D.6 |
| -------------------------------- |
| B。带回 |
| 17.在C语言中,引用数组元素时,其数组下标的数据类型允许是() |
| A.整型常量 B.整型表达式 |
| C.整型常量或整型表达式 D.任何类型的表达式 |
| -------------------------------- |
| C |
| 8.若输入字符串: abcde<回车〉,则以下while循环体将执行____次 |
| While((ch=getchar())=='e')printf("*"); |
| -------------------------------- |
| 0 |
| 4.若有说明int c;则while (c=getchar());是正确的C语句。 |
| -------------------------------- |
| 正确 |
| 13.在执行switch语句时,default和各个case的出现次序不影响执行结果。 |
| -------------------------------- |
| 正确 |
| 15.若i =3,则printf("%d",-i++);输出的值为-4。 |
| -------------------------------- |
| 错误。-3 |
| 6、以下变量x、y、Z均为double类型且已正确赋值,不能正确表示数学式子: |
| (x)/(y*z)的c语言表达式是( ) 。 |
| A. x/y*z B.x*(1/ (y*z)) C.x/y*1/z D.x/y/z |
| -------------------------------- |
| A。x/(y*z) |
| 11.下列程序执行后的输出结果是( ) 。 |
| main (){ |
| char arr[2][4]; strcpy(arr,"you"); strcpy(arr[1],"me"); |
| arr[0][3]='&'; |
| printf("%s\n", arr); |
| } |
| (A) you&me (B) you (C)me (D)err |
| |
| A。strcpy(arr,"you");把you放到arr[0]第一行 |
| 26.以下程序的输出结果是( ) 。 |
| int a,b; |
| void fun(){ |
| a=100;b=200; |
| } |
| main(){ |
| int a=5, b=7; |
| fun(); |
| printf("%d%d\n",a, b); |
| } |
| (A) 100200 (B) 57 (C) 200100 (D)75 |
| -------------------------------- |
| B |
| 31.请选择正确的运行结果( )。 |
| include <stdio. h> |
| int x,y; |
| num(){ |
| int a=15,b=10; |
| int x,y; |
| y=a-b; |
| y=a+b; |
| return; |
| } |
| main(){ |
| int a=7,b=5; |
| x=a+b; |
| y=a-b; |
| num(); |
| printf("%d,%d\n", x,y); |
| } |
| (A)12,2 (B)5,25 (C)2,12 (D)不确定 |
| -------------------------------- |
| A |
| 32.以下程序的输出结果是( )。 |
| |
| main() |
| { int a=1, b=2,c=3; |
| printf("%d\n", M(a+b, b+c, c+a)); |
| (A) 19 (B)17 (C)15 (D)12 |
| -------------------------------- |
| D。a+b*b+c+c+a=12 |
| |
| 2、语句 while(!E) { ....}中的条件 !E 等价于____ |
| A.E==0 B.E!=1 C.E!=0 D.~E |
| -------------------------------- |
| A。!E==1 --> E==0 |
| 11、为了判断两个字符串s1和s2是否相等,应当使用___ |
| A.if(s1==s2) B.if(s1=s2) |
| C.if(strcmp(s1,s2)) D.if(strcmp(s1,s2)==0) |
| -------------------------------- |
| D。strcmp相同为0。if(!strcmp(s1,s2))才对 |
| 18、以下叙述中正确的是____ |
| A.全局变量的作用域一定比局部变量的作用域范围大 |
| B.静态(static) 类型变量的生存期贯穿于整个程序的运行期间 |
| C.函数的形参都属于全局变量 |
| D.未在定义语句中赋初值的auto变量和static变量的初值都是随机值 |
| -------------------------------- |
| B |
| 19、 有以下程序,执行后输出的结果是 |
| main() |
| { int i=l,j=l,k=2; |
| if ((j++||k++)&&i++) |
| printf(“%d,%d, %d\n”,i,j,k); |
| } |
| A.1,1,2 B.2,2,1 C.2,2,2 D.2,2,3 |
| -------------------------------- |
| C |
| (18)设有以下函数: |
| f(int a){ |
| int b=0; |
| static int c=3; |
| b++; c++; |
| return(a+b+c); |
| } |
| 如果在下面的程序中调用该函数,则输出结果是( )。 |
| main(){ |
| int a=2, i; |
| for (i=0;i<3;i++) |
| printf ("%d\n",f(a)); |
| } |
| -------------------------------- |
| 7 |
| 8 |
| 9 |
| (20) 以下选项中,非法的字符常量是( )。 |
| A) '\t' B) '\17' C)"\n" D)'\xaa' |
| |
| C。'\n',B选项八进制17Q结果为15D |
| (23)假设int型变量占两个字节的存储单元,若有定义int x[10]={0,2,4};,则数组x在内存中所占字节数为( )。 |
| A) 3 B) 6 C) 10 D) 20 |
| -------------------------------- |
| D |
| (12)有以下程序段 |
| int x=3; |
| do{printf ("%d", x-=2);}while(!(--x)); |
| 其输出结果是 |
| A) 1 B) 30 C) 1-2 D)死循环 |
| -------------------------------- |
| C |
| 当执行下面的程序时,如果输入ABC,则输出结果是( )。 |
| A) ABC6789 B) ABC67 C) 12345ABC6 D)ABC456789 |
| |
| |
| main () |
| { char ss[10]="12345"; |
| gets(ss); strcat(ss,"6789"); printf("%s\n",ss);} |
| -------------------------------- |
| A |
| (31)以下程序的输出结果是( )。 |
| A) 16 B) 2 C) 9 D) 1 |
| |
| main (){ |
| int a=16,k=2, m=l; |
| a/=SQR(k+m)/SQR(k+m); |
| printf ("%d\n",a); |
| } |
| -------------------------------- |
| B。k+m*k+m/k+m*k+m=16,a=16/7 |
| 已知int a=0x167,则a/2为 |
| A. B2H |
| B.179.5 |
| C.0263 |
| D.101100011 |
| -------------------------------- |
| C |
| 若有以下代码: |
| char a[10] = "123567"; |
| char b[10] = "abcdefg"; |
| strcpy(a,b); |
| printf("0%-05o" ,a[b[4]-b[b[5]-b[3]]]-32); |
| 如有空格请使用小写字母v代表 |
| -------------------------------- |
| 0103vv |
| 凡事函数中未指这存储类别的局部变量,其隐含的存储类别为 |
| -------------------------------- |
| auto |
| int a=2,b=4,c=0; |
| printf("%d,%d,%d,%d" ,(a+=b&&c++||++b+!c&&pow(2,c++)),c,b,a); |
| 输出的结果是 |
| -------------------------------- |
| 3,2,5,3 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~