C语言习题2滁州学院计算机科学与技术专升本.docx
《C语言习题2滁州学院计算机科学与技术专升本.docx》由会员分享,可在线阅读,更多相关《C语言习题2滁州学院计算机科学与技术专升本.docx(39页珍藏版)》请在冰豆网上搜索。
C语言习题2滁州学院计算机科学与技术专升本
C语言练习题
(二)
一选择题
1.以下C语言用户标识符中,不合法的是(D)
A)_1 B)AaBc C)a_b D)a--b
2.若有定义:
doublea=22;inti=0,k=18;则不符合C语言规定的赋值语句是(C)
A)a=a++,i++ B)i=(a+k)<=(i+k) C)i=a%11 D)i=!
a
3.
#include
main()
{
chara,b,c,d;
scanf("%c%c",&a,&b);
scanf(“%c”,&c); scanf(“%c”,&d);
printf("%c%c%c%c\n",a,b,c,d);
}
当执行程序时,按下列方式输入数据(从第一列开始,代表回车,注意:
回车是一个字符)
12
34
则输出结果是:
(B)
A、1234 B、12 C、12 D、12
3 34
4、以下关于C语言数据类型使用的叙述中错误的是:
(D)
A、若要准确无误的表示自然数,应使用整数类型。
B、若要保存带有多位小数的数据,应使用双精度类型。
C、若要处理如"人员信息"等含有不同类型的相关数据,应自定义结构体类型。
D、若只处理"真"和"假"两种逻辑值,应使用逻辑类型。
5、若a是数值类型,则逻辑表达式(a==1)||(a!
=1)的值是:
(A)
A、1 B、0 C、2 D、不知道a的值,不能确定
6、以下选项中与if(a==1)a=b;elsea++;语句功能不同的switch语句是:
(B)
A、switch(a) B、switch(a==1)
{case1:
a=b;break; { case0:
a=b;break;
default:
a++; case1:
a++;
} }
C、switch(a) D、switch(a==1)
{ default:
a++;break; { case1:
a=b;break;
case1:
a=b; case0:
a++;
} }
7、有如下嵌套的if语句
if(a
if(a else k=c;
else
if(b else k=c;
以下选项中与上述if语句等价的语句是(C)
A、k=(a
a:
b;k=(bb:
c;
B、k=(a
((ba:
b):
((bb:
c);
C、k=(a
((aa:
c):
((bb:
c);
D、k=(a
a:
b;k=(aa;c
8有以下程序
#include
main()
{inti,j,m=1;
for(i=1;i<3;i++)
{for(j=3;j>0;j--)
{if(i*j>3)break;
m*=i*j;
}
}
printf("m=%d\n",m)
}
程序运行后的输出结果是(A)
(A)m=6 (B)m=2 (C)m=4 (D)m=5
9有以下程序
#includes
main()
{inta=1,b=2;
for(;a<8;a++){b+=a;a+=2;}
printf("%d,%d\n",a,b);
}
程序运行后的输出结果是(D)
(A)9,18 (B)8,11 (C)7,11 (D)10,14
10以下选项中,能用作用户标识符的是(C)
A)void
B)8_8
C)_0_
D)unsigned
11阅读以下程序
#include“stdio.h”
main()
{intcase;floatprintF;
printf(“请输入2个数:
”);
scanf(“%d%f”,&case,&printF);
printf(“%d%f\n”,case,printF);
}
该程序编译时产生错误,其出错原因是(A)
A)定义语句出错,case是关键字,不能用作用户自定义标识符
B)定义语句出错,printF不能用作用户自定义标识符
C)定义语句无错,scanf不能作为输入函数使用
D)定义语句无错,printf不能输出case的值
12表达式:
(int)((double)9/2)-(9)%2的值是(B)
A)0
B)3
C)4
D)5
13若有定义语句:
intx=10;,则表达式x-=x+x的值为(B)
A)-20
B)-10
C)0
D)10
14有以下程序
#include”stdio.h”
main()
{inta=1,b=0;
printf(“%d,”,b=a+b);
printf(“%d\n”,a=2*b);
}
程序运行后的输出结果是(D)
A)0,0
B)1,0
C)3,2
D)1,2
15设有定义:
inta=1,b=2,c=3;,以下语句中执行效果与其它三个不同的是(C)
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;}
16有以下程序
#include“stdio.h”
main()
{intc=0,k;
for(k=1;k<3;k++)
switch(k)
{default:
c+=k;
case2:
c++;break;
case4:
c+=2;break;
}
printf(“%d\n”,c);
}
程序运行后的输出结果是(A)
A)3
B)5
C)7
D)9
17以下程序段中,与语句:
k=a>b?
(b>c?
1:
0):
0;功能相同的是(A)
A)if((a>b)&&(b>c))k=1;
elsek=0;
B)if((a>b)||(b>c)k=1;
elsek=0;
C)if(a<=b)k=0;
elseif(b<=c)k=1;
D)if(a>b)k=1;
elseif(b>c)k=1;
elsek=0;
18有以下程序(B)
#include
main()
{chars[]={“012xy”};inti,n=0;
for(i=0;s[i]!
=’\0’;i++)
if(s[i]>=’a’&&s[i]<=’z’)n++;
printf(“%d\n”,n);
}
程序运行后的输出结果是(B)
A)0
B)2
C)3
D)5
19有以下程序
#include“stdio.h”
main()
{intn=2,k=0;
while(k++&&n++>2);
printf(“%d%d\n”,k,n);
}
程序运行后的输出结果是(D)
A)02
B)13
C)57
D)12
20有以下程序
#include
main()
{charc1,c2;
c1=’A’+’8’-‘4’;
c2=’A’+’8’-‘5’;
printf(“%c,%d\n”,c1,c2);
}
已知字母A的ASCII码为65,程序运行后的输出结果是(A)
A)E,68
B)D,69
C)E,D
D)输出无定值
21有以下程序
#include
voidfun(intp)
{intd=2;
p=d++;printf(“%d”,p);}
main()
{inta=1;
fun(a);printf(“%d\n”,a);}
程序运行后的输出结果是(C)
A)32
B)12
C)21
D)22
22 有以下程序
#include
main()
{
int x=1,y=2,z=3;
if(x>y)
if(y else printf("%d",++y);
printf("%d\n", x++ );
}
程序的运行结果是(D)
A)331 B)41 C)2 D)1
23有以下程序
#include
main()
{ int i=5;
do
{ if(i%3==1)
if(i%5==2)
{ printf(“*%d”,i); break; }
i++;
} while(i!
=0);
printf(“\n”);
}
程序的运行结果是(A)
A) *7 B)*3*5 C)*5 D)*2*6
24有以下程序
#include
int fun(int a,int b)
{ if(b==0) return a;
else return(fun(--a,--b));
}
main()
{ printf("%d\n", fun(4,2));}
程序的运行结果是(B)
A) 1 B)2 C)3 D)4
25有以下程序
#include
void fun( int a, int b)
{ int t;
t=a; a=b; b=t;
}
main()
{ int c[10]={1,2,3,4,5,6,7,8,9,0}, i;
for(i=0;i<10;i+=2) fun(c[i], c[i+1]);
for(i=0;i<10;i++) printf("%d," ,c[i]);
printf("\n");
}
程序的运行结果是(A)
A)1,2,3,4,5,6,7,8,9,0 B)2,1,4,3,6,5,8,7,0,9
C)0,9,8,7,6,5,4,3,2,1 D)0,1,2,3,4,5,6,7,8,9
26若有以下程序段,其输出是(B)
inta=0,b=0,c=0;
c=(a-=a-5),(a=b,b+3);
printf(“%d,%d,%d”,a,b,c);
A.0,0,-10B.0,0,5C.-10,3,-10D.3,3,-10
27有如下程序
main0
{inty=3,x=3,z=1;
printf(“%d%d”,(++x,y++),z+2);
}
运行该程序的输出结果是(D)
A)34B)42C)43D)33
28 若变量已正确说明,要求语句:
scanf(“a=%f,b=%f”,&a,&b);给a赋予3.12、给b赋予9.0,用表示空格,用表示回车,则正确的输入形式是(C)
A、3.129.0B、a=3.12b=9
C、a=3.12,b=9D、a=3.12,b=9
29假定x和y为double型,则表达式x=2,y=x+3/2的值是(D)
A、3.500000B、3C、2.000000D、3.000000
30 设a,b,c,d,m和n均为int型变量,且a=5,b=6,c=7,m=2,n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为(C)
A、0B、1C、2D、3
31 下列表达式中和x*=3+5等价的是(C)
A、(x*=3)+5B、x=x*3+5C、x=x*(3+5)D、x=x+(3+5)
32 C程序的基本结构有(C)
A、选择、重复和模块B、顺序、选择和模块
C、顺序、选择和循环D、逻辑、物理和程序
33 下列说法正确的是(D)
A、main()中()可以省略;
B、注释语句只能放在语句后面;
C、C语句以‘;’结束,也可以‘,’结束;
D、main()主函数可放在程序中任何位置,但程序总是从其开始执行。
34 下列关于C语言说法错误的是(C)
A、C语言运算较其它语言丰富
B、C语言以函数为程序模块单元,实现程序模块化设计
C、C语言不能直接访问物理地址,不能实现汇编语言的部分功能
D、C语言程序的可移植性好,执行效率高。
35若有x=1,y=2,z=3,则表达式(x++x:
++y)==z的值是(A)
A、0B、1C、2D、3
36 若X&&Y||Z的值为1,则(A)
A、若Z为0,则X和Y必为1B、X,Y,Z必定为1
C、X,Y,Z可能都为0D、若X为1,则Z必为0
37 若有说明语句:
charC=‘72’;则变量C(D)
A.包含1个字符 B.包含2个字符
C.包含3个字符 D.说明不合法
38 有语句ch=getchar();当输入65时,ch的值为(A)
A.6B.AC.aD.’6’
39 putchar(98);执行后输出(C)
A.9B.98`D.’b’
40 chara[50];scanf(“%s”,a);printf(“%s”,a);如果输入abcdefg后回车,则(A)
A.输出abcB.编译通不过,无输出
C.编译能够通过,输出abcdefgD.输出abcdefg
41下列程序的输出结果是(B)
main()
{int a,b,c,x;
a=b=c=0;
x=35;
if(!
a)
x--;
else if(b)
;
if(c)
x=3;
else
x=4;
print("%d",x) ; }
A)34 B)4 C)35 D)3
42下列程序中x的值输入8,那么程序输出结果是(B)
#include
main()
{float x,y;
scanf("%f",&x);
if(x<0.0)
y=0.0;
else if((x<5.0)&&(x!
=2))
y=1.0/(x+2.0);
else if(x<10.0)
y=1.0/x;
else y=10.0;
printf("%f",y) ; }
A)0.000000 B)0.125000 C)0.5000000 D)1.000000
43 下列程序的输出结果是(A)
main()
{int x=1,a=0,b=0;
switch(x)
{case 0:
b++;
case 1:
a++;
case 2:
a++;b++ ; }
printf("a=%d,b=%d",a,b) ; }
A)a=2,b=1 B)a=1,b=1
C)a=1 b=0 D)a=2,b=2
44若有定义float w;int a,b;那一个正确(C)
A)switch(w)
{case 1.0:
printf("*");
case 2.0:
printf("**”);}
B)switch(a);
{case 1:
printf("*");
case 2:
printf("**"); }
C)switch(a)
{case 1:
printf("*");
default:
printf("");
case 1+2:
printf("**"); }
D)switch(a+b);
{case 1:
printf("*");
case 2:
printf("**");
default:
(""); }
46下列程序的输出结果是(B)
main()
{int i=0,a=0;
while(i<20)
{for(;;)
if (i%10==0) break; else i--;
i+=11;a+=i ; }
printf("%d",a) ; }
A)21 B)32 C)33 D)11
47
(1)有以下程序
main()
{ int k=4,n=0;
for( ; n{ n++;
if(n%3!
=0) continue;
k--; }
printf("%d,%d",k,n);
}
程序运行后的输出结果是(C)
A)1,1 B)2,2 C)3,3 D)4,4
47
(2)若执行以下程序时从键盘上输入9,则输出结果是(B)
A、11B、10C、9D、8
main()
{intn;
scanf("%d",&n);
if(n++<10)printf("%d\n",n);
elseprintf("%d\n",n--);
}
48阅读以下程序:
main()
{intx;
scanf("%d",&x);
if(x--<5) printf("%d",x);
else printf("%d",x++);}
程序运行后,如果从键盘上输人5,则输出结果是(C)
A、3B、4C、5D、6
49以下叙述正确的是(D)
A、do-while语句构成的循环不能用其它语句构成的循环代替。
B、do-while语句构成的循环只能用break语句退出。
C、用do-while语句构成的循环,在while后的表达式为非零时结束循环。
D、用do-while语句构成的循环,在while后的表达式为零时结束循环。
50以下程序的输出结果是(D)
A、10,19,2B、9,87,6C、10,99,0D、10,109,1
main()
{intx=10,y=10,i;
for(i=0;x>8;y=++i)
printf("%d,%d",x--,y);
}
51以下程序的输出结果是(A)
A、20B、31C、321D、210
main()
{intn=4;
while(n--)printf("%d",--n);
}
52以下程序的输出结果是(A)
A、#*#*#B、#####C、*****D、*#*#*
main()
{inti;
for(i=1;i<6;i++)
{if(i%2){printf("#");continue;}
printf("*");
}
printf("\n");
}
53以下程序的输出结果是(B)
A、编译不通过,无输出B、aceg
C、acegiD、abcdefghi
main()
{inti;
for(i='A';i<'I';i++,i++)printf("%c",i+32);
printf("\n");
}
54以下循环体的执行次数是(C)
A、3B、2C、1D、0
main()
{inti,j;
for(i=0,j=1;i<=j+1;i+=2,j--) printf("%d\n",i);
}
55有如下程序
main()
{inti,sum;
for(i=1;i<=3;sum++) sum+=i;
printf("%d\n",sum);
}
该程序的执行结果是(C)
A、6B、3C、死循环D、0
56有如下程序
main()
{intx=23;
do
{printf("%d",x--);}while(!
x);}
该程序的执行结果是(B)
A、321B、23C、不输出任何内容D、陷入死循环
57有如下程序
main()
{intn=9;
while(n>6){n--;printf("%d",n);}
}
该程序段的输出结果是(B)
A、987B、876C、8765D、9876
58有以下程序段
intk=0;
while(k=1) k++;
while循环执行的次数是(A)
A、无限次B、有语法错,不能执行C、一次也不执行D、执行1次
59以下程序执行后sum的值是(C)
A、15B、14C、不确定D、0
min()
{inti,sum;
for(i=1;i<6;i++) sum+=i;
printf("%d\n",sum);
}
60有以下程序段
intx=3;
do
{printf("%d",x-=2);}while(!
(--x));}
其输出结果是(C)
A、1B、30C、1–2D、死循环
61t为int类型,进人下面的循环之前,t的值为0(B)
while(t=l)
{……}
则以下叙述中正确的是
A、循环控制表达式的值为0B、循环控制表达式的值为1
C、循