C语言程序设计.docx
《C语言程序设计.docx》由会员分享,可在线阅读,更多相关《C语言程序设计.docx(30页珍藏版)》请在冰豆网上搜索。
C语言程序设计
第2章C语言程序设计
赋值语句
(1)以下叙述中正确的是
A)赋值语句是一种执行语句,必须放在函数的可执行部分
B)scanf和printf是C语言提供的输入和输出语句
C)由printf输出的数据都隐含左对齐
D)由printf输出的数据的实际精度是由格式控制中的域宽和小数的域宽来完全决定的
(2)有以下程序
main(){
inta=3;
a+=a-=a*a;
printf("%d\n",a);}
程序的输出结果是
A)9
B)3
C)-12
D)0
数据输出
(3)有如下程序段:
intx=12;
doubley=3.141593;
printf("%d%8.6f",x,y);
其输出结果是
A)123.141593
B)12,3.141593
C)123.1415930
D)123.141593
(4)若有以下程序
#include
main(){
intb=10,a=-11;
a%=b%=4;
printf("%d%d\n",a,b);}
则程序的输出结果是
A)12
B)-1-2
C)-12
D)1-2
(5)有以下程序
main(){
inta=2,c=5;
printf("a=%%d,b=%%d\n",a,c);}
程序的输出结果是
A)a=%2,b=%5
B)a=%d,b=%d
C)a=2,b=5
D)a=%%d,b=%%d
(6)有以下程序
main(){
chara,b,c,d;
scanf("%c%c",&a,&b);
c=getchar();
d=getchar();
printf("%c%c%c%c\n",a,b,c,d);}
当执行程序时,按下列方式输入数据(从第1列开始,代表回车,注意:
回车也是一个字符)1234则输出结果是
A)12
B)1234
C)123
D)1234
数据输入
(7)若变量已正确定义为int型,要通过语句scanf("%d,%d,%d",&a,&b,&c);给a赋值1、给b赋值2、给c赋值3,以下输入形式中错误的是(注:
□代表一个空格符)
A)□□□1,2,3
B)1,□□□2,□□□3
C)1,2,3
D)1□2□3
(8)设变量均已正确定义,若要通过scanf("%d%c%d%c",&a1,&c1,&a2,&c2);语句为变量a1和a2赋数值10和20,为变量c1和c2赋字符X和Y。
以下所示的输入形式中正确的是(注:
□代表空格字符)
A)10□X20□Y
B)10□X20□Y
C)10X20Y
D)10□X□20□Y
(9)设有定义:
inta;floatb;执行scanf("%2d%f",&a,&b);语句时,若从键盘输入876543.0则a和b的值分别是
A)876和543.0
B)87和6.0
C)87和543.0
D)76和543.0
(10)若有定义:
inta,b;通过语句scanf("%d;%d",&a,&b);能把整数3赋给变量a,5赋给变量b的输入数据是
A)3,5
B)35
C)3;5
D)35
(11)若有定义inta;floatb;doublec;程序运行时输入:
345能把值3输入给变量a、4输入给变量b、5输入给变量c的语句是
A)scanf("%d%lf%lf",&a,&b,&c);
B)scanf("%d%f%lf",&a,&b,&c);
C)scanf("%d%f%f",&a,&b,&c);
D)scanf("%lf%lf%lf",&a,&b,&c);
(12)设有定义:
doublea,b,c;若要求通过输入分别给a、b、c输入1、2、3,输入形式如下(注:
此处□代表一个空格)□□1.0□□2.0□□3.0则能进行正确输入的语句是
A)scanf("%lf%lf%lf",a,b,c);
B)scanf("%f%f%f",&a,&b,&c);
C)scanf("%lf%lf%lf",&a,&b,&c);
D)scanf("%5.1lf%5.1lf%5.1lf",&a,&b,&c);
(13)以下叙述中正确的是
A)当用scanf从键盘输入数据时,每行数据在没按下回车键(Enter键)前,可以任意修改
B)花括号对{}只能用来表示函数的开头和结尾,不能用于其他目的
C)空语句就是指程序中的空行
D)复合语句在语法上包含多条语句,其中不能定义局部变量
(14)以下叙述中正确的是
A)在scanf函数中的格式控制字符串是为了输入数据用的,不会输出到屏幕上
B)在使用scanf函数输入整数或实数时,输入数据之间只能用空格来分隔
C)在printf函数中,各个输出项只能是变量
D)使用printf函数无法输出百分号%
(15)以下叙述中正确的是
A)在scanf函数的格式串中,必须有与输入项一一对应的格式转换说明符
B)只能在printf函数中指定输入数据的宽度,而不能在scanf函数中指定输入数据占的宽度
C)scanf函数中的字符串,是提示程序员的,输入数据时不必管它
D)复合语句也被称为语句块,它至少要包含两条语句
(16)有以下程序
#include
main(){
inta1,a2;
charc1,c2;
scanf("%d%c%d%c",&a1,&c1,&a2,&c2);
printf("%d,%c,%d,%c",a1,c1,a2,c2);}
若想通过键盘输入,使得a1的值为12,a2的值为34,c1的值为字符a,c2的值为字符b,程序输出结果是:
12,a,34,b则正确的输入格式是(以下□代表空格,代表回车)
A)12□a□34□b
B)12,a,34,b
C)12a34b
D)12□a34□b
(17)有以下程序
#include
main(){
charc1,c2,c3,c4,c5,c6;
scanf("%c%c%c%c",&c1,&c2,&c3,&c4);
c5=getchar();
c6=getchar();
putchar(c1);
putchar(c2);
printf("%c%c\n",c5,c6);}
程序运行后,若从键盘输入(从第1列开始)12345678则输出结果是
A)1256
B)1278
C)1245
D)1267
(18)若有定义语句:
doublex,y,*px,*py;执行px=&x;py=&y;正确的输入语句是
A)scanf("%f%f"&x,&y);
B)scanf("%f%f",x,y);
C)scanf("%lf%le",px,py);
D)scanf("%lf%lf",x,y);
(19)以下程序段完全正确的是
A)intk,*p=&k;scanf("%d",p);
B)int*p;scanf("%d",p);
C)int*p;scanf("%d",&p);
D)intk,*p;*p=&k;scanf("%d",p);
(20)若在定义语句:
inta,b,c,*p=&c;接着执行以下选项中的语句,则能正确执行的语句是
A)scanf("%d%d%d",a,b,c);
B)scanf("%d",a,b,c);
C)scanf("%d",p);
D)scanf("%d",&p);
(21)有以下程序段
intj;floaty;
charname[50];
scanf("%2d%f%s",&j,&y,name);
当执行上述程序段,从键盘上输入555667777abc后,y的值为
A)55566.0
B)7777.0
C)566.0
D)566777.0
(22)有以下程序段
charname[20];
intnum;
scanf("name=%snum=%d",name,&num);
if语句和用if语句构成的选择
(23)有以下程序
main(){
inta=0,b=0,c=0,d=0;
if(a=1)b=1;
c=2;
elsed=3;
printf("%d,%d,%d,%d\n",a,b,c,d);}
程序输出
A)0,0,0,3
B)1,1,2,0
C)编译有错
D)0,1,2,0
(24)有以下程序
main(){
intx=1,y=0;
if(!
x)y++;
elseif(x==0)
if(x)y+=2;
elsey+=3;
printf("%d\n",y);}
程序运行后的输出结果是
A)2
B)0
C)1
D)3
(25)若变量已正确定义,在if(W)printf("%d\n",k);中,以下不可替代W的是
A)ch=getchar()
B)a==b+c
C)a<>b+c
D)a++
(26)有以下程序段
inta,b,c;
a=10;b=50;c=30;
if(a>b)a=b,b=c;c=a;
printf("a=%db=%dc=%d\n",a,b,c);
程序的输出结果是
A)a=10b=50c=30
B)a=10b=30c=10
C)a=10b=50c=10
D)a=50b=30c=50
(27)设有定义:
inta=1,b=2,c=3;以下语句中执行效果与其它三个不同的是
A)if(a>b)c=a;a=b;b=c;
B)if(a>b){c=a,a=b,b=c;}
C)if(a>b)c=a,a=b,b=c;
D)if(a>b){c=a;a=b;b=c;}
(28)if语句的基本形式是:
if(表达式)语句,以下关于“表达式”值的叙述中正确的是
A)必须是整数值
B)必须是正数
C)可以是任意合法的数值
D)必须是逻辑值
(29)有如下嵌套的if语句if(a
if(aelsek=c;
else
if(belsek=c;
以下选项中与上述if语句等价的语句是
A)k=(a
((bc)?
b:
c);
B)k=(ab:
c;
C)k=(aa:
c;
D)k=(a
((aa:
c):
((bb:
c);
(30)有以下计算公式
y=
(x≥0)
(x<0)
若程序前面已经在命令行中包含math.h文件,不能够正确计算上述公式的程序段是
A)y=sqrt(x);if(x<0)y=sqrt(-x);
B)if(x>=0)y=sqrt(x);elsey=sqrt(-x);
C)if(x>=0)y=sqrt(x);if(x<0)y=sqrt(-x);
D)y=sqrt(x>=0?
x:
-x);
(31)有以下程序#includemain(){intx;scanf("%d",&x);if(x<=3);elseif(x!
=10)printf("%d\n",x);}程序运行时,输入的值在哪个范围才会有输出结果
A)不等于10的整数
B)大于3或等于10的整数
C)小于3的整数
D)大于3且不等10的整数
(32)有以下程序
main(){
inta=1,b=2,c=3,d=0;
if(a==1&&b++==2)
if(b!
=2||c--!
=3)
printf("%d,%d,%d\n",a,b,c);
elseprintf("%d,%d,%d\n",a,b,c);
elseprintf("%d,%d,%d\n",a,b,c);}
程序运行后的输出结果是
A)1,3,2
B)1,2,3
C)1,3,3
D)3,2,1
(33)下列条件语句中,输出结果与其他语句不同的是
A)if(a==0)printf("%d\n",x);elseprintf("%d\n",y);
B)if(a==0)printf("%d\n",y);elseprintf("%d\n",x);
C)if(a!
=0)printf("%d\n",x);elseprintf("%d\n",y);
D)if(a)printf("%d\n",x);elseprintf("%d\n",y);
(34)若有以下程序
#include
main(){
inta=1,b=2,c=3,d=4;
if((a=2)||(b=1))c=2;
if((c==3)&&(d=-1))a=5;
printf("%d,%d,%d,%d\n",a,b,c,d);}
则程序的输出结果是
A)2,1,2,-1
B)2,2,2,4
C)5,1,2,-1
D)1,2,3,4
(35)若有以下程序
#include
main(){
inta=1,b=2,c=3,d=4,r=0;
if(a!
=1);elser=1;
if(b==2)r+=2;
else;
if(c!
=3)r+=3;
else;
if(d==4)r+=4;
printf("%d\n",r);}
则程序的输出结果是
A)10
B)6
C)7
D)3
(36)若有以下程序
#include
main(){
inta=1,b=2,c=3,d=4;
if((a=2)&&(b=1))c=2;
if((c==3)||(d=-1))a=5;
printf("%d,%d,%d,%d\n",a,b,c,d);}
则程序的输出结果是
A)2,1,2,-1
B)2,2,2,4
C)1,2,3,4
D)5,1,2,-1
(37)若有以下程序
main(){
inta=1,b=2,c=3,d=4,r=0;
if(a!
=1);
elser=1;
if(b==2)r+=2;
if(c!
=3);r+=3;
if(d==4)r+=4;
printf("%d\n",r);}
则程序的输出结果是
A)7
B)10
C)6
D)3
(38)以下叙述中正确的是
A)if语句只能嵌套一层
B)不能在else子句中再嵌套if语句
C)if子句和else子句中可以是任意的合法的C语句
D)改变if-else语句的缩进格式,会改变程序的执行流程
switch语句以及用switch语句构成的选择
(39)有以下程序
main(){
intx=1,y=0,a=0,b=0;
switch(x){
case1:
switch(y){
case0:
a++;break;
case1:
b++;break;}
case2:
a++;b++;break;
case3:
a++;b++;}
printf("a=%d,b=%d\n",a,b);}
程序的运行结果是
A)a=2,b=2
B)a=1,b=1
C)a=1,b=0
D)a=2,b=1
(40)若有定义:
floatx=1.5;inta=1,b=3,c=2;则正确的switch语句是
A)switch(a+b){case1:
printf("*\n"); case2+1:
printf("**\n");}
B)switch((int)x);{case1:
printf("*\n");case2:
printf("**\n");}
C)switch(x){case1.0:
printf("*\n");case2.0:
printf("**\n");}
D)switch(a+b){case1:
printf("*\n");casec:
printf("**\n");}
(41)下列叙述中正确的是
A)在switch语句中必须使用default
B)break语句必须与switch语句中的case配对使用
C)在switch语句中,不一定使用break语句
D)break语句只能用于switch语句
(42)有以下程序
main(){
intk=5,n=0;
do{
switch(k){
case1:
case3:
n+=1;k--;break;
default:
n=0;k--;
case2:
case4:
n+=2;k--;break;}
printf("%d",n);}
while(k>0&&n<5)}
运行以后的输出结果是
A)0235
B)235
C)02356
D)2356
(43)以下选项中与if(a==1)a=b;elsea++;语句功能不同的switch语句是
A)switch(a==1){case0:
a=b;break;case1:
a++;}
B)switch(a){case1:
a=b;break;default:
a++;}
C)switch(a){default:
a++;break;case1:
a=b;}
D)switch(a==1){case1:
a=b;break;case0:
a++;}
(44)有以下程序
#include
main(){
intx=1,y=0,a=0,b=0;
switch(x){
case1:
switch(y)
{case0:
a++;break;
case1:
b++;break;}
case2:
a++;b++;break;}
printf("a=%d,b=%d\n",a,b);
}
程序运行后的输出结果是
A)a=1,b=1
B)a=1,b=0
C)a=2,b=1
D)a=2,b=2
(45)若以下选项中的变量a,b,y均已正确定义并赋值,则语法正确的switch语句是
A)switch(a*a+b*b){default:
break;case3:
y=a+b;break;case2:
y=a-b;break;}
B)switch(a+b){case1:
case3:
y=a+b;break;case0:
case4:
y=a-b;}
C)switch(a+9){casea:
y=a-b;caseb:
y=a+b;}
D)switcha*b{case10:
y=a+b;default:
y=a-b;}
条件表达式构成的选择结构
(46)以下程序段中,与语句:
k=a>b?
(b>c?
1:
0):
0;功能相同的是
A)if((a>b)||(b>c))k=1;elsek=0;
B)if(a<=b)k=0;elseif(b<=c)k=1;
C)if((a>b)&&(b>c))k=1;elsek=0;
D)if(a>b)k=1;elseif(b>c)k=1;elsek=0;
while语句和用while语句构成的循环
(47)关于“while(条件表达式)循环体”,以下叙述正确的是
A)循环体的执行次数总是比条件表达式的执行次数多一次
B)条件表达式的执行次数与循环体的执行次数一样
C)条件表达式的执行次数总是比循环体的执行次数多一次
D)条件表达式的执行次数与循环体的执行次数无关
(48)有以下程序
#include
main(){
inty=10;
while(y--);
printf("y=%d\n",y);}
程序执行后的输出结果是
A)y=0
B)y=-1
C)y=1
D)while构成无限循环
(49)有以下程序
main(){
intk=5;
while(--k)
printf("%d",k-=3);
printf("\n");}
执行后的输出结果是
A)2
B)4
C)1
D)死循环
(50)有以下程序
main(){
inty=10;
while(y--);
printf("y=%d\n",y);}
程序执行后的输出结果是
A)y=0
B)y=1
C)y=-1
D)while构成无限循环
(51)有以下程序
#include
voidmain()
{
ints;
scanf("%d",&s);
while(s>0)
{
switch(s)
{
case1:
printf("%d",s+5);
case2:
printf("%d",s+4);break;
case3:
printf("%d",s+3);
default:
printf("%d",s+1);break;
}
scanf("%d",&s);
}
}
运行时,若输入123450,则输出结果是
A)66656
B)6566456
C)66666
D)6666656
(52)有以下程序
#include
main(){
inta=7;
while(a--);
printf("%d\n",a);}
程序运行后的输出结果是
A)0
B)1
C)-1
D)7
(53)在以下给出的表达式中,与while(E)中的(E)不等价的表达式是
A)(E>0||E<0)
B)(!
E==0)
C)(E!
=0)
D)(E==0)
(54)要求通过while循环不断读入字符,当读入字母N时结束循环。
若变量已正确定义,以下正确的程序段是
A)while(ch=getchar()='N')printf("%c",ch);
B)while(ch=getchar()==”N”)printf("%c",ch);
C)while((ch=getchar())!
='N')printf("%c",ch);
D)while((ch=getchar())=='N')printf("%c",ch);
(55)若有以下程序
main(){
inta=-2,b=0;
while(a++)
++b;
printf("%d,%d\n",a,b);}
则程序的输出结果是
A)0,2
B)1,2
C)1,3
D)2,3
(56)由以下while构成的循环,循环体执行的次数是intk=0;while(k=1)k++;
A)一次也不执行
B)执行一次
C)无限次
D)有语法错,不能执行
(57)有以下程序