实验指导书基本概念测试习题答案bak.docx
《实验指导书基本概念测试习题答案bak.docx》由会员分享,可在线阅读,更多相关《实验指导书基本概念测试习题答案bak.docx(66页珍藏版)》请在冰豆网上搜索。
![实验指导书基本概念测试习题答案bak.docx](https://file1.bdocx.com/fileroot1/2023-6/23/a7d34885-057e-45a7-a58d-f4e1ee244821/a7d34885-057e-45a7-a58d-f4e1ee2448211.gif)
实验指导书基本概念测试习题答案bak
1数据类型与表达式
1.1基本概念
1、一个C语言程序总是从()。
A、主过程开始执行 B、主函数开始执行
C、子程序开始执行 D、主程序开始执行
【答案】B
2、C语言程序从main()函数开始执行,所以这个函数要写在()。
A、程序文件的开始B、程序文件的最后
C、它所调用的函数的前面D、程序文件的任何位置
【答案】D
3、下列关于C语言的叙述错误的是()。
A、大写字母和小写字母的意义相同
B、不同类型的变量可以在一个表达式中
C、在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型
D、同一个运算符号在不同的场合可以有不同的含义
【答案】A
4、在C语言中,错误的int类型的常数是()。
A、32768B、0C、037D、0xAF
【答案】A
5、在C语言中,整数-8在内存中的存储形式是()。
A、1111111111111000B、1000000000001000
C、0000000000001000D、1111111111110111
【答案】A
6、C语言中字符型(char)数据在内存中的存储形式是()。
A、原码B、补码C、反码D、ASCII码
【答案】D
7、已知a、b、c为int类型变量,若有输入语句:
scanf("a=%db=%dc=%d",&a,&b,&c);为使a值为10,b值为20,c值为30,从键盘输入数据的正确形式应当是()。
A、102030<回车> B、a=10b=20c=30<回车>
C、10<回车>20<回车>30<回车>D、a=10<回车>b=20<回车>c=30<回车>
【答案】B
8、以下能正确定义整型变量x、y和z并为其赋初值5的语句是()。
A、intx=y=z=5; B、intx,y,z=5;
C、intx=5,y=5,z=5; D、x=5,y=5,z=5;
【答案】C
9、已知ch是字符型变量,则不正确的赋值语句是()。
A、ch=5+9; B、ch='\0';C、ch='7'+'9'; D、ch='a+b';
【答案】D
10、设x,y是float型变量,则不正确的赋值语句是()。
A、++x; B、y=int(5);C、x*=y+1; D、x=y=0;
【答案】B
11、若a为int类型变量,则执行以下程序段后a的值为()。
a=5;
a*=a/=a++;
A、2 B、1 C、40 D、3
【答案】A
12、若a和b均为int型变量,则执行以下程序断后x的输出是()。
x=15;y=15;
printf("%d\n",x%=(y%=2));
A、0 B、1 C、6 D、12
【答案】A
13、设a、b、c、d均是int类型变量,为了使以下程序段的输出为:
1234+123+12+1,正确的输入形式应当是()。
scanf("%4d+%3d+%2d+%1d",&a,&b,&c,&d);
printf("%4d+%3d+%2d+%1d",a,b,c,d);
A、1234123121<回车>B、1234123412341234<回车>
C、1234+1234+1234+1234<回车>D、1234+123+12+1<回车>
【答案】D
14、设c1、c2均是char类型变量,则以下不正确的函数调用是()。
A、scanf("c1=%cc2=%c",&c1,&c2);B、getchar()
C、putchar(c2); D、putchar(c1,c2)
【答案】D
15、逻辑运算符两侧运算对象的数据()。
A、只能是0或1B、只能是0或非0正数
C、只能是整型或字符型数据D、可以是任何类型的数据
【答案】D
16、判断char型变量c1是否为大写字母的正确表达式是()。
A、'A'<=c1<='Z'B、(c1>='A')&(c1<='Z')
C、(c1>='A')&&(c1<='Z')D、('A'<=c1)AND('Z'>=c1)
【答案】C
17、设i、j、和k是int型变量,且i=3,j=4,k=5,则以下值为0的表达式是()。
A、'i'&&'j'B、i<=j
C、i||j+k&&j-kD、!
((ik||1)
【答案】D
18、设ch是char类型变量,其值是A,则表达式ch=(ch>='A'&&ch<='Z')?
(ch+32):
ch的值是()。
A、Z B、A C、a D、z
【答案】C
19、若希望当num的值为奇数时,表达式的值为“真”,num的值为偶数时,表达式的值为“假”。
则以下不能满足要求的表达式是()。
A、num%2==1 B、!
(num%2==0)
C、!
(num%2) D、num%2
【答案】C
20、已知longi=32768;执行语句printf("%d",i);屏幕显示()。
A、-1B、-32768C、1D、32768
【答案】B
1.2阅读程序题
21、下面程序的输出结果是()。
#include
main()
{intx=10;
{intx=20;
printf("%d,",x);
}
printf("%d\n",x);
}
A、10,20B、20,10C、10,10D、20,20
【答案】B
22、若a、b、c均为int型变量,则执行以下程序段后的输出结果为()。
b=(a=10,a+5,c=10);
printf("a=%d,b=%d,c=%d\n",a,b,c);
c=(a=10,b=5,a+b);
printf("a=%d,b=%d,c=%d\n",a,b,c);
A、a=10,b=15,c=10 B、a=10,b=10,c=10
a=10,b=5,c=10a=10,b=5,c=10
C、a=10,b=10,c=10 D、a=10,b=10,c=10
a=10,b=5,c=15 a=10,b=5,c=5
【答案】C
23、以下程序的输出结果是()。
main()
{intx=10,y=10;
printf("%d%d\n",x――,――y);
}
A、1010B、99C、910D、109
【答案】D
24、以下程序的输出结果是()。
main()
{intn=1;
printf("%d%d%d\n",n,n++,n--);
}
A、111B、101C、110D、121
【答案】B
25、以下程序的输出结果是()。
main()
{intx=0x02ff,y=0x0ff00;
printf("%d\n",(x&y)>>4|0x005f);
}
A、127B、255C、128D、1
【答案】A
26、下面程序的输出结果是()。
main()
{inta=111;
a=a^00;
printf("%d,%o\n",a,a);
}
A、111,157B、0,0C、20,24D、7,7
【答案】A
27、以下程序的输出结果是()。
main()
{floata;
a=1/100000000;
printf("%g",a);
}
A、0.00000e+00B、0.0C、1.00000e-07D、0
【答案】D
1.3程序填空题
28、下面程序的功能是不用第三个变量,实现两个数的对调操作。
#include
main()
{inta,b;
scanf("%d%d",&a,&b);
printf("a=%d,b=%d\n",a,b);
a=①;
b=②;
a=③;
printf("a=%d,b=%d\n",a,b);
}
【答案】①a+b②a-b③a-b
2控制结构
2.1基本概念
1、以下正确的if语句是()。
A、if(n>0)printf("%f",n)
printf("%f",-n);
B、if(n>0)
{n=n+m;printf("%f",n);}
elseprintf("%f",-n);
C、if(n>0)
{n=n+m;printf("%f",n);};
elseprintf("%f",-n);
D、if(n>0)
{n=n+m;printf("%f",n)};
elseprintf("%f",-n);
【答案】B
2、以下程序()。
main()
{intx1=3,x2=0,x3=0;
if(x1=x2+x3)
printf("****");
else
printf("####");
}
A、输出:
**** B、输出:
####
C、存在语法错误 D、无输出结果
【答案】B
3、为了避免在嵌套的条件语句if-else中产生二义性,C语言规定:
else子句总是与()。
A、缩排位置相同的if配对B、其之前最近且不带else的if配对
C、其之前最近的if配对D、第一个if配对
【答案】B
4、以下关于switch语句和break语句的描述中正确的是()。
A、在switch语句中必须使用break语句
B、break语句只能用于switch语句体中
C、break语句只能用于循环语句中
D、在switch语句中使用break语句或continue语句的作用相同
【答案】D
5、若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”。
则以下不能满足要求的表达式是()。
A、A%2==1 B、!
(A%2==0) C、 !
(A%2) D、 A%2
【答案】C
6、已知int x=10,y=20,z=30;以下语句执行后x,y,z的值是()。
if(x>y) z=x; x=y; y=z;
A、 x=10, y=20, z=30 B、 x=20, y=30, z=30
C、 x=20, y=30, z=10 D、 x=20, y=30, z=20
【答案】B
7、设有程序段()。
intx=10;
while(x=0) x=x-1;
A、while循环执行10次 B、循环是无限循环
C、循环体语句一次也不执行D、循环体语句只执行一次
【答案】C
8、语句while(!
y)中的表达式!
y等价于()。
A、y==0B、y!
=1 C、y!
=0 D、y==1
【答案】A
9、以下关于do-while循环不正确的描述是()。
A、d0-while的循环体至少执行一次
B、do-while循环由do开始,用while结束,在while(表达式)后面不能写分号
C、在do-while循环体中,一定要有能使while后面表达式的值变为零("假")的操作
D、do-while的循环体可以是复合语句
【答案】B
10、设x、y均是int类型变量,且x值为100,则关于以下for循环的正确判断是()。
for(y=100;x!
=y;++x,y++)
printf("****\n");
A、循环体只执行一次 B、是无限循环 C、循环体一次都不执行 D、for语句中存在语法错误
【答案】C
11、以下程序段中的do-while循环()。
m=-1;
do
{m=m*m;
}while(!
m);
A、是死循环 B、执行二次 C、执行一次 D、有语法错误
【答案】C
12、以下关于for循环的正确描述是()。
A、for循环只能用于循环次数已经确定的情况
B、for循环是先执行循环体语句,后判断表达式
C、在for循环中,不能用break语句跳出循环体
D、for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来
【答案】D
13、语句for(表达式1;;表达式3)等价于()。
A、for(表达式1;0;表达式3)B、for(表达式1;1;表达式3)
C、for(表达式1;表达式1;表达式3)D、for(表达式1;表达式3;表达式3)
【答案】B
14、若k为整型变量,则以下for循环的执行次数是()。
for(k=2;k==0;)
printf("%d",k--);
A、无限次 B、0次 C、1次 D、2次
【答案】B
15、以下程序段的执行结果是()。
intx=-3;
do
{printf("%d\n",x++);
}while(!
x);
A、-3 B、-2 C、-1D、陷入死循环
【答案】A
16、以下程序段中是死循环的是()。
A、intn=1; B、intn=1;
while(!
n)do{n--;
n++;}while(n);
C、intn=1;D、for(n=5;n<1;);
do{n++;
}while(n);
【答案】C
17、以下能正确计算1×2×3×…×10的程序段是()。
A、doB、do
{k=1;n=1;{k=1;n=0;
n=n*k;n=n*k;
k++;k++;
}while(k<=10);}while(k<=10);
C、k=1;n=1;D、k=1;n=0;
dodo
{n=n*k;{n=n*k;
k++;k++;
}while(k<=10);}while(k<=10);
【答案】C
18、若有以下程序段:
for(m=1;m<=100;m++)
{scanf("%d",&y);
if(y<0)
continue;
printf("%3d",m);
}
正确的描述是()。
A、)当y<0时整个循环结束B、y>=0时什么也不输出
C、printf函数永远也不执行D、)最多允许输出100个非负整数
【答案】D
19、以下程序段等价于()。
for(k=100;k<=200;k++)
{if(k%3==0)
continue;
printf("%4d",k);
}
A、for(k=100;(k%3)&&k<=200;k++)
printf("%4d",k);
B、for(k=100;(k%3)||k<=200;k++)
printf("%4d",k);
C、for(k=100;k<=200;k++)
if(k%3!
=0)printf("%4d",k);
D、for(k=100;k<=200;k++)
{if(k%3)
printf("%4d",k);
else
continue;
break;
}
【答案】C
2.2阅读程序题
20、下面程序的输出结果是()。
main()
{inta=1,i=a+1;
do
{a++;
}while(!
~i++>3);
printf("%d\n",a);
}
A、1B、2C、3D、4
【答案】B
21、下面程序的输出结果是()。
main()
{chars[12]="abook";
printf("%.4s",s);
}
A、abook!
B、abook!
<四个空格>C、aboD、格式描述错误,输出不确定
【答案】C
22、下面程序的输出结果是()。
main()
{inta,b;
scanf("%2d%3d",&a,&b);
printf("a=%db=%d\n",a,b);
}
A、a=12b=34B、a=123b=45C、a=12b=345D、语句错误
【答案】C
23、以下程序的输出结果是()。
main()
{inta=0,b=1,c=0,d=20;
if(a)d=d-10;
elseif(!
b)
if(!
c)d=15;
elsed=25;
printf("d=%d\n",d);
}
A、d=10B、d=15C、d=20D、d=25
【答案】C
24、下面程序的输出结果为()。
main()
{inta=1,b=0;
switch(a)
{case1:
switch(b)
{case0:
printf("**0**");
break;
case1:
printf("**1**");
break;
}
case2:
printf("**2**");
break;
}
}
A、**0**B、**0****2**C、**0****1****2**D、有语法错误
【答案】B
25、若执行下述程序时从键盘输入34,则输出结果是()。
#include
main()
{inta,b,s;
scanf("%d%d",&a,&b);
s=a;
if(a
s*=s;
printf("%d\n",s*s);
}
A、186B、256C、324D、400
【答案】B
26、下面程序的输出是()。
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=2,b=1B、a=1,b=1C、a=1,b=0D、a=2,b=2
【答案】A
27、下面程序的运行结果是()。
main()
{intm=0;
while(m<=2)
{m++;
printf("%d",m);
}
printf("\n");
}
A、1 B、12 C、123D、1234
【答案】C
28、下面程序的输出结果是()。
main()
{intx,i;
for(i=1;i<=100;i++)
{x=i;
if(++x%2==0)
if(++x%3==0)
if(++x%7==0)
printf("%d",x);
}
}
A、3981B、4284C、2668D、2870
【答案】C
29、下面程序的输出结果是()。
main()
{intk=0;
charc='A';
do
{switch(c++)
{case'A':
k++;break;
case'B':
k--;
case'C':
k+=2;break;
case'D':
k=k%2;contiue;
case'E':
k=k+10;break;
default:
k=k/3;
}
k++;
}while(c<'C');
printf("k=%d\n",k);
}
A、k=1B、k=2C、k=3D、k=4
【答案】D
30、在执行以下程序时,为了使输出结果为t=4,则给a和b输入的值应满足的条件是()。
#include
main()
{ints,t,a,b;
scanf("%d,d",&a,&b);
s=1;
t=1;
if(a>0)s=s+1;
if(a>b)t=s+t;
elseif(a==b)t=5;
elset=2*s;
printf("t=%d\n",t);
}
A、a>bB、aa>b
【答案】C
31、从键盘上输入"446755"时,下面程序的输出是()。
#include
main()
{intc;
while((c=getchar())!
='\n')
{switch(c-'2')
{case0:
case1:
putchar(c+4);
case2:
putchar(c+4);break;
case3:
putchar(c+3);
default:
putchar(c+2);break;
}
}printf("\n");
}
A、888988B、668966C、88898787D、66898787
【答案】C
32、假定从键盘上输入"3.6,2.4<回车>",下面程序的输出是()。
#include
main()
{floatx,y,z;
scanf("%f,%f",&x,&y);
z=x/y;
while
(1)
{if(fabs(z)>1.0)
{x=y;
y=z;
z=x/y;
}
elsebreak;
}
printf("%f\n",y);
}
A、1.500000B、1.600000C、2.000000D、2.400000
【答案】B
33、下面程序的输出结果是()。
main()
{inti,j,k=10;
for(i=0;i<2;i++)
{k++;
{intk=0;
for(j=0;j<=3;j++)
{if(j%2)continue;
k++;
}
}
k++;
}
printf("k=%d\n",k);
}
A、k=4B、k=8C、k=14D、k=18
【答案】C
2.3程序填空题
34、下面程序的功能是从键盘上输入若干学生的学习成绩,统计并输出最高成绩和最低成绩,当输入为负数时结束输入。
main()
{floatx,amax,amin;
scanf("%f",&x);
amax=x;
amin=x;
while(①)
{if(x>amax)amax=x;