C语言第四章习题(1)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.若要求在if后表示条件“a不等于0成立”,则能正确表示这一关系的表达式为()
A.a<>0
B.!a
C. a=0
D. a
2.以下错误的if语句是()
A. if(x>y) ;
B.if(x= =y) x+=y;
C. if(x!=y) scanf(“%d”,&x);else scanf(“%d”,&y);
D.if(x<y) {x++;y++;}
3.C语言对嵌套if的规定是:else总是与()配对。

A.其之前最近的if
B.第一个if
C.缩进位置相同的if
D.其前面最近的且尚未配对的if
4.若有说明int x,y;不能实现以下函数关系的程序段是()
-1 x<0
y= 0 x=0
1 x>0
A.if(x<0) y=-1;
else if (x= =0) y=0;
else y=1;
B.y=-1;
if (x!=0)
if (x>0) y=1;
else y=0;
C.y=0;
if(x>=0)
{if (x>0) y=1;}
else y= -1;
D.if(x>=0)
if(x>0) y=1;
else y=0;
else y= -1;
5.已知int x,a,b;则下列选项中错误的if语句是()
A.if(a=b) x++;
B.if(a=<b) x++;
C.if(a-b) x++;
D.if(x) x++;
6.若int i=10;则执行下列程序后,变量i的正确结果是()
switch(i)
{case 9: i+=1;
case 10: i+=1;
case 11: i+=1;
default: i+=1;
} A. 10 B.11 C.12 D. 13
7.设有说明语句int a=1,b=0;则执行下列语句后,输出为()
switch(a)
{case 1:
switch(b)
{case 0: printf(“**0**”);break;
case 1: printf(“**1**”);break;}
case 2: printf(“**2**”);break;
}
A.**0**
B.**0****2**
C. **0****1****2**
D.语法错误
8.下列程序的运行结果是()
#include<stdio.h>
main()
if(a<b)
if(b<c) c=0;
else c+=1;
printf(“%d\n”,c);
} A.0 B.1 C.2 D.3
9.阅读程序,选择运行结果()
#include<stdio.h>
main()
{int a,b,c;
a=1;b=2;c=3;
if(a>b)
if(a>c)
printf(“%d”,a);
else printf(“%d”,b);
printf(“%d”,c);
} A. 1 2 B. 2 3 C. 3 D. 以上都不对
10.选择运行结果()
#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);
} A.-1 1 B.0 1 C. 1 0 D.0 0
11.执行下列程序,运行结果为()
#include<stdio.h>
main()
{ int a=10,b=0;
if(a=12)
{a=a+1;b=b+1;}
else
{a=a+4;b=b+4;}
printf(“%d ; %d\n”,a,b);
} A. 13;1 B.14;4 C. 11;1 D.10;0
12.选择运行结果。

#include<stdio.h>
main()
{char ch;
ch=getchar();
switch (ch)
{ case 65: printf(“%c”,‟A‟);
case 66: printf(“%c”,‟B‟);
default: printf(“%s”,”other”);
}
}
如果程序可以正常运行,则从键盘输入字符A时,输出的结果为()
A.A
B.ABother
C.Aother
D.编译错误,无法运行
第五章习题
1.与语句while(!x)等价的语句是()
2.若a.b均为int 类型变量,a=100,则对以下for语句的正确判断是()
for(b=100;a!=b;++a,b++)
printf(“----\n”);
A.循环体只执行一次
B.死循环
C.循环体一次也不执行
D.输出----
3.若int i,x;则for(i=x=0;i<9&&x!=5;i++,x++)控制的循环体将执行()次
A. 10
B. 9
C. 5
D. 6
4若a=1,b=10为int类型变量,则执行下列语句后,b的值为(),a的值为()do{
b-=a;
a++;}while(b--<0);
①A. 9 B.-2 C.-1 D.8②A.4 B.2 C.1 D.3
5.若int x;且有下面的程序片段,则输出的结果为()
for(x=3;x<6;x++)
printf((x%2)?”**%d”:”##%d\n”,x);
A.**3
B.##3
C.##3
D.**3##4
##4 **4 **4##5 **5
**5 ##5
#include<stdio.h>
main()
{ int n=4;
while(n--)
printf(”%d ”,--n);
}
A. 2 0
B. 3 1
C. 3 2 1
D.2 1 0
7.选择运行结果。

#include<stdio.h>
main()
{int i,j;
for(i=0,j=10;i<j;i+=2,j--);
printf(”%d\n”,i);
printf(”%d\n”,j);
}
①i的值为 A. 5 B.6 C.7 D.8
②j的值为 A. 5 B.6 C.7 D.8
8.读程序写结果。

#include<stdio.h>
main()
{int i=0,j=0,k=0;
for(m=0;m<4;m++)
switch(m)
{case 0:i=m++;
case 1:j=m++;
case 2:k=m++;
case 3: m++;
}
printf(“\n%d,%d,%d,%d”,i,j,k,m);
}
A. 0,0,2,4
B.0,1,2,3
C.0,1,2,4
D.0,1,2,5
9.读程序,写出运行结果()
main()
{int k,j,m;
for(k=5;k>=1;k--)
{m=0;
for(j=k;j<=5;j++)
m=m+k*j;
}
printf(”%d\n”,m);
}
A.124
B.25
C.36
D.15
10.读程序。

写结果
main()
{int i,j;
float s;
for(i=7;i>4;i--)
{s=0;
s=s+i*j;
}
printf(”%f\n”,s);
}
A.154.000000
B.90.000000
C.45.000000
D.60.000000
11.读程序,写结果。

main()
{int x=10,y=10,i;
for(i=0 ;x>8 ;y=++i)
printf(“%d %d“,x--,y) ;
}
A.10 1 9 2
B.9 8 7 6
C.10 9 9 0
D.10 10 9 1
12 运行下列程序,输入指定数据,选择输出结果。

main()
{int s;
while((s=getchar())!=‟\n‟)
{switch(s-…2‟)
{case 0:putchar(s+4);
case 1:putchar(s+4);break;
case 2:putchar(s+3);
case 3:putchar(s+2);break;
}
}
printf(“\n”);
}
输入数据:2473<回车>
A.6688766
B.66767
C.668966
D.668977
13.下列程序的运行结果是
main()
{int i=1;
while(i<=15)
if(++i%3!=2)
continue;
else printf(“%d “,i);
printf(“\n”);
}
14.下列程序的运行结果是
main()
{int i=0,j=0;
while(i<10)
i++;
while(j++<10) ;
printf(“i=%d,j=%d\n”,i,j);
}
15.下列程序的运行结果是
main()
{int i,j,k;
char space=‟‟;
{for (j=1;j<=i;j++)
printf(”%c”,space);
for(k=0;k<=5;k++)
printf(“%c”,‟*‟);
printf(”\n”);
}
}
16.下列程序的运行结果是
main()
{int i,j,k=0;
for(j=11;j<=30;j++)
{ if(k%10==0) printf(”\n”);
for(i=2;i<j;i++)
if(!(j%i)) break;
if(i>=j-1)
{ printf(”%d\t”,j);
k++;
}
}
}
答案:
1. A
2. C
3. C
4. AB
5. D
6. A
7. DB
8. D
9. D
10. C
11. D
12. B
13. 2 5 8 11 14
14. i=10,j=11
15. ******
******
******
******
******
******
16. 11 13 17 19 23 29
第三章
1.已知int a=256;执行语句printf(“%x”,a);的结果是()
A. 100
B. 256
C. ffe
D.00ff
2.将字符g赋给字符变量c,正确的表达式是()
A. c=”g”
B.c=101
C.c=‟\147‟
D.c=‟0147‟
3.在C语言库函数中,可以输出double型变量x值的函数是()
A. getchar
B.scanf
C.putchar
D.printf
A. ,
B. 空格
C. 回车
D. tab
5.已知int x=10,y=3,z;则下列语句的输出结果是()Printf(“%d\n”,z=(x%y , x/y));
A. 1
B. 0
C. 4
D. 3
6.语句printf(“%d”,(a=2)&&(b= -2));的输出结果是()
A. 无输出
B.结果不确定
C. - 1
D. 1
7.已知int x=15,y=5;则执行下列语句后的输出结果是()printf(“%d\n”,x%=(y%=2));
A. 0
B. 1
C. 6
D.12
8.已知unsigned int x=65535;则执行下列语句后输出的值为()printf(“%d\n”,x);
A. 65535
B.1
C. 无定值
D.- 1
9.已知int x,y,z,w;则为使以下语句的输出结果为1234+123+12+1,正确的输入形式应该是()
scanf(“%4d-%3d-%2d-%1d”,&x,&y,&z,&w);
printf(“4d+%3d+%2d+%1d”,x,y,z,w);
A. 1234123121
B.1234 123 12 1
C.1234-123-12-1
D.1234+123+12+1
10.已知int w=3,x=10,z=7;则执行下列语句后的输出结果是()printf(“%d”,x>10?x+100:x-10);printf(“%d”,w++||z++);
printf(“%d”,!w>z);printf(“%d”,w&&z);
A. 0111
B. 11111
C. 0101
D.0100
11.已知int x;float y;所用的scanf调用语句格式为:
Scanf(”x=%d,y=%f”,&x,&y);则为了将数据10和66.6分别赋给x和y,正确的输入应当是()
A. x=10,y=66.6<回车>
B.10,66.6<回车>
C. 10 <回车>66.6 <回车>
D.x=10<回车>y=66.6<回车>
12.已知a=b=c=1且都为int型变量,则执行下列语句:++a||++b&&++c;变量a值为(),变量b值为()
①A.不正确B. 0 C. 2 D. 1 ②A. 1 B. 2 C. 不正确 D. 0
13.已知int w=1,x=2,y=3,z=4,a=5,b=6;则执行以下语句:(a=w>x)&&(b=y>z);变量a值为(),变量b值为()
①A.5 B. 0 C. 1 D. 2 ②A. 6 B. 0 C. 1 D. 4
14.下述程序的输出结果是()
main()
{printf(“%f”,2.5+1*7%2/4);}
A. 2.500000
B.2.750000
C. 3.375000
D.3.000000
15.以下程序的输出结果是()
main()
{ int x=023;
printf(“%d\n”,- -x);}
A. 18
B. 22
C. 23
D.19
16.以下程序的输出结果是()
main()
{ int a=- 1,b=4,k;
k=(++a<0)&&!(b- -<0);
printf(“%d%d%d\n”,k,a,b);}
A. 104
B. 103
C.003
D.004
第六章数组
1.合法的数组说明语句是()
A.int a[ ]=”string”;
B.int a[5]={0,1,2,3,4,5};
C.char a=”string”;
D.char a[ ]={ 0,1,2,3,4,5};
2.调用strlen(“abcd\0ed\0g”)的返回值为()
A. 4
B.5
C. 8
D.9
3.若有以下语句,则正确的描述是()
char x[ ]=”12345”;
char y[ ]={‘1’,’2’,’3’,’4’,’5’};
A.两个数组长度相同
B.数组长度x大于y
C.数组长度x小于y
D.x数组等价于y数组
A. str1={”books”};
B.strcpy(str1,str2);
C.str1=str2;
D.strcpy(str2,str1);
5.已知char str1[20]=”abcde”,str2[20]=”xyz”;则执行语句printf(“%d”,strlen(strcpy(str1,str2)));输出的
结果是 A. 9 B. 3 C. 5 D.8
6.已知:int i,x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果是()
for (i=0;i<3;i++)
printf(“%d”,x[i][2-i]);
A.159
B.147
C.357
D.369
7.已知:char str[]=”ab\n\012\\\””;则执行语句
printf(“%d”,strlen(str));的结果是()
A. 3
B. 4
C.6
D.12
8.已知:int a[3][4];则对数组元素引用正确的是()
A.a[2][4]
B.a[1,3]
C.a[1+1][0]
D.a(2)(1)
9.在C语言中,二维数组元素在内存中的存放顺序是()
A. 按行存放
B.按列存放
C.由用户自己定义
D.由编译器决定
10.已知:int a[ ][3]={1,2,3,4,5,6,7};则数组a的第一维的大小是() A.2 B.3 C.4 D.无确定值
11.已知:char a[20],b[20];则以下正确的输入语句是()
A.gets(a,b);
B.scanf(“%s%s”,a,b);
C.scanf(“%s%s”,&a,&b);
D.gets(“a”),gets(“b”);
12.若要求:如果字符串s1大于字符串s2则执行if语句的语句1,应当使用()
A. if(s1>s2)
B.if(strcmp(s1,s2))
C. if(strcmp(s2,s1)>0)
D. if(strcmp(s1,s2)>0)
13.下面程序的运行结果是()
char c[5]={‘a’,’b’,’\0’,’c’,’\0’};
printf(“%s”,c);
A. ‘a’’b’
B.ab
C.ab c
D.以上均不正确
14.下面程序段的运行结果是()
char a[7]=”abcdef”,b[4]=”ABC”;
strcpy(a,b); printf(“%c”,a[5]);
A.~(空格)
B.\0
C. e
D.f
15.阅读程序,选择运行结果()
int m[3][3]={{1},{2},{3}};
int n[3][3]={1,2,3};
main()
{printf(“%d\n”,m[1][0]+m[0][0]);
printf(“%d\n”,n[0][1]+n[1][0]);}
① A.0 B.1 C.2 D.3
② A.0 B.1 C.2 D.3
16.选择下列程序的运行结果
#include<stdio.h>
main()
{ int n[3][3],i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
n[i][j]=i+j;
for(i=0;i<2;i++)
for(j=0;j<2;j++)
n[i+1][j+1]+=n[i][j];
}
A.14
B.0
C.6
D.不确定
第六章数组习题
A.10
B.11
C.12
D.以上都不对
12.字符串“\\\22a,0\n”的长度是()
A.8
B.7
C. 6
D.5
13.字符串”\t\”name\\address\n”的长度是()
A.19
B.15
C.18
D.以上都不对
14.已知char a=’\70’;则变量a中()
A.包含1个字符
B.包含两个字符
C.包含3
个字符 D.说明非法
15.已知int x=1,y=2,z;执行语句z=x>y?++x:++y;
后,z的值为()
A.1
B.2
C.3
D.4
16.已知int n,i=1,j=2;执行语句n=i<j?i++:j++;
后,i和j的值是()
A.1,2
B.1,3
C.2,2
D.2,3
17.已知float x=1,y ;执行语句y=++x*++x;的结果
为()
A.y=9
B.y=6
C.y=1
D. 表达式是错误的
18. 已知int y;float x=-3;执行语句y=x%3;后,变
量y的结果是()
A.1
B.-1
C. 0
D. 语句本身是错误的
19.选出使变量i的运行结果为4的表达式()
A.int i=0,j=0;(i=3,(j++)+i);
B.int i=1,j=0;j=i=((i=3)*2);
C.int i=0,j=1;(j==1)?(i=1):(i=3);
D. int i=1,j=1;i+=j+=2;
20.下列四组字符串中都可以用作C语言程序中的标
识符的是()
A.print _3d oodb aBc
B.I\am one_half start$it 3pai
C.Pxq My->book line# His.age
D.str_1
Cpp pow while
21.C语言中,下列运算符的操作数必须是int类型
的运算是()
A.%
B./
C.--
D.++
22.已知int x=6;则执行x+=x- =x*x;后,x的值为
()A.36 B.-60 C.60 D.-24
23.若w=1,x=2,y=3,z=4;则条件表达式
w>x?w:y<z?y:z的结果为()
A.4
B.3
C.2
D.1
24.已知int x;则使用逗号运算符的表达式
(x=4*5,x*5),x+25的结果为(①),变量x的值为(②)
①A.20 B.100 C.表达式不合法 D.45
②A.20 B.100 C. 125 D. 45
25.已知int i=6,j;则执行语句j=(++i)+(i++);后,
j的值是()A.4 B.14 C.13 D.15
11。

相关文档
最新文档