C语言习题课附答案.docx
《C语言习题课附答案.docx》由会员分享,可在线阅读,更多相关《C语言习题课附答案.docx(16页珍藏版)》请在冰豆网上搜索。
C语言习题课附答案
C语言习题课
一、单项选择题:
1•以下_A_是C语言中有效的变虽名称。
A._abcB.2abcC.charD・a#3
变址名只能以下划线和字母开头
2•下面I川个说法中错误的是B
A.for循环不仅可以和for循环嵌套,而且可以和While循环嵌套。
B・X在循环体内执行continue语句的时候.将结束整个循环。
C.while循环最少循环0次,do-while循环最少循环1次。
D.goto语句也可以实现循环的功能。
)
3•在while(x)中的x与下面条件表达式等价的是D
A.x==0B・x==1C・x!
=1D・x!
=0
4•为表示关系庐乙应使用C语言表达式A
A.(x>=y)&&(y〉=z)
B.(x>=y)AND(y>=z)
C.(x>=y>=z)
D.(x>=y)&(y>=z)
5•设有如下定义:
intx=9/y=2/z;则语句printf(“%d\rf'・z=x/y);的输出结果是C
A・1B・C・4D・3
整形中的“厂是整除
/
6•若有以下语句:
staticcharx(]=”123451staticchary[J={TJ2;3;4;5F}:
则正确的说法是Bo
A.x数组和y数组的长:
度相同
B.x数组的长度大于y数组的长度
C.x数组的长度小于y数组的长度
D.x数组与y数组等价
字符串后有一个“\0”
7•已知有定义charch:
则下面正确的赋值语句为A。
A.ch='X‘B・ch=,55,C・ch-'M”D・ch=,,55M
8•以下说法中正确的是C
A.C语言程序总是从第一个的函数开始执行
I
B•在C语言程序中,要调用的函数必须在main()函数中定义
C.C语言程序总是从main()函数开始执行
D.C语言程序中的main()函数必须放在程序的开始部分
语言中,形参的缺省存储类型说明是:
」_
语言中的简爪数据类型有:
B
A.整型实型逻辑型
B.整型实型字符型
C.整型字符型逻辑空
D.整型实型逻借型字符型
11・以卜程序段的输出结果’匕_C—
intx=3;
B.30
C.1-2
D.死循环
do{printf(,,%3d,,/x-=2);
}while(!
(~x));
12•以下非法的赋值语句是:
A.n=(i=2,++i);
B.j++:
C.++(i+l):
D.x=y>0:
13•设a和b均为double变氐且a=,b“则表达式(int)a+b/b的值是:
D
A.B・6C・D・
14•已知x=3・y=2,则表达式x—y+8的值为:
C
A・3B・2C・30D・10
y+8是一个整体
15•设x“z均为int型变氐则执行以下语句后.t的值为:
C
x=y=z=l;t=++x||++y&&++Z:
A.不定值B.2C・1D.0
16•为了测试字符串的实际长度.C语言规定J'一个“字符串结柬标志S这个结束标总字符是B
A.AnrB・‘\0‘C.4\x*D・‘\9’
程序的三种基木结构是:
A
A•顺序结构、选择结构.循环结构
B.逻辑结构.层次结构、网状结构
C•顺序结构.逻输结构.选择结构
D.层次结构.顺序结构、循环结构
若inti二10;执行完下而程序判断后.变址i的正确结果是—D
A.
10
switch(i)
B.
11
{
C.
12
case7:
i+=l;
D.
13
case10:
i+=l;
case17:
i+=l;
default:
i+=l;}
case后有break.结束跳出结果.没有break.继续执行具休见书木105贞
19•下列关于C语言注释的描述中.错误的是:
D
A.C语言中用厂……表示注释部分
B.注释只是给人看的•对编译和运行不起作川
C.注释可以加在程序中的任何位宜
D.C语言中川{•……*}表示注释部分
20•下列关于C程序的描述中,错误的是^D
A.C程序是由函数构成的
B.一个C程序总是从main函数开始执行
C.C程序书写格式自由.一行内可以写几个语句,一个语句也可以分写在多行上
D.C语言中是利川输入/输出运算符构成输入/输出语句完成输入/输出操作的
源程序的后缀名默认为:
B°
A.cppB・cC・objD・exe
C语言的默认后缀名是・c.在C++中才是卬p
22•以下不属于C语言的基木数据类型的是^_8•
A.整型B.布尔型C.字符型D.实型
23•下列标识符中・符合C语言语法规范的是^C:
下列选项中,不是C语言中的关键字的是:
一°
D.break
D.2e+2
RifC.VOID
A.autob-IT
25•下列常址中,合法的长整型常址是
A.0LB・00C・
长整空的范用是・4旷47
26•设int型变§m.a.b.c,d均为6执行表达式(m=a==b)||(n=c==d)后.m和n的值是:
C
A・0.0B・0・1C・1.0D•:
L1
、勺在“或”的前而为1.后面不再执行。
在“与“前1何为0.后面也不在执行,出现“短路”现彖。
27•若a为int类空,且其值为3.则执行完表达式a+=a-=a*a后,a的值是:
_C。
A.一3B.9|D.6
C・一12
28•假设double变址細已经正确定义•则表达式x=l护x+的的值是:
D。
A・1B・C・2D・
29•已知'A'的ASCII码为65.则下列程序的运行结果为:
A。
main()
{
charchl=‘A';
charch2=chl+3;
printf(“%d,%c\n”,chlfchl);
printf(/ch2/ch2);
}
A・65,AB・A,65C.A,DD・D,68
68ZDDz68.»Az65
65,68
30•以下关于while语句的叙述正确的是—
A.while语句构成的循环必须用break语句才能退出
B.while循环语句中,while子句中的表达式值为零时,结束循环
C.不能使用while语句來构成循环结构
D.while语句的循环体至少被执行一次
二、填空题:
I•程序段floatx=;printf("x=%-10.2fMzx):
执行时输岀的结果为:
p76
$
2•设x・y,z.k都是int型变虽•则执行表达式x=(y=4/z=16/k=32)后,x的值为:
32
3•要将两个字符串连接成一个字符串.可以使用的标准库函数名为:
strcatP147
4•多分支选择结构中.若在执行某一个case语句后,使流程跳出switch结构.应该使用语句breakpl05:
5•若有定义inta[3][4]={l,2,3,«5,6,7,&9,10,ll」2},贝ija⑴⑵=7pl37
语言中•结束木轮循环.将循环是否继续交给循环判断条件确定的语句是:
continue:
7•设x=/a=7/y=,则算术表达式x+a%3*(int)(x+y)%^的值为:
语言中,函数是程序的基木构成做元.其中main函数是必须的.且唯一。
9•在C语言程序中,用关键字什oat定义做精度实型变量。
10•设有语句"inti=l/s=l;for(;s+i<6;i++)s+=i/\其中for语句的循环次数为2°
II•已知有声明“intx丸y=2S则执行表达式“(x>y)&&(・・x>0)»后x的值为__°
12$分支选择结构中•若在执行某一个case语句后,使流程跳岀switch结构,应该使用语句br^kpl05语言中的if语句屈于三种基木结构中的选抒结构的语句。
14•若变虽ch为char类型,判断ch为数字字符的表达式是,
15•设x=ra=7/y=,则算术表达式x+a%3*(int)(x+y)%细的值为:
语句只能用在三种基木结构中的街坏结构的语句中。
17•如果在用户的程序中要使用C库函数中的数学函数时应在该源文件中使用的include命令是:
若有定义:
intx(5];则访问x数组中的元素时,下标的上限为:
_4
语言中,函数是程序的基木构成做元.其中main函数是必须的.且唯一。
语言木身没有输入输出语句•格式化的标准输出是借助库函数◊实现。
三、程序阅读题:
1・阅读下列程序•并给出程序运行的结果。
voidmain()
{
intn©k;
n=263;
d=l;
k=l;
do{
k*=n%10;
n/=10;
printf(,,%d/,/d);
d++;
}while(n);printf(M\nu);printf("%d\n,,/k);
printf(吆d\rV:
n);
}
运行结果:
2,3
36
0
2•阅读下列程序,并给出程序运行的结果。
voidmain()
{
intx=2345,t;
intsumzmuti;
sum=0;
muti=l;
printf(”数字为:
%d\叭x);
while(x!
=0)
{
>
t=x%10;
sum+=t;
mutest;
x=x/10;
}
printf("构成数字的和:
%d\n,,/sum);printf("构成数字的乘积:
%d\n,,/muti);}
运行结果:
数字为:
2345
构成数字的和:
14
)
构成数字的乘积:
120
3•阅读下列程序•并给出程序运行的结果。
voidmain()
{intx=20.y=30.z=60:
while(xy=Y+4;
z=z/2;
printf(“%d\n”,x):
printf(“%d\n",y):
printff"%d\n",z):
}
运行结果^32
34
30
4•阅读下列程序•并给出程序运行的结果。
voidmain()
{
int8,7,6,5,4,3,24,5};
for(i=0;i<=8;i++)
{
I二i;
for(j=i+l;j<=9;j++)
冃;
if(l!
=i)
{
m=a[ij;
a[l]=a[IJ;
a[l]=m;
}
}
for(i=0;i<=9;i++)
{
printf(u%d
if(i%3==0&&i!
=0)
printf(“\n”);
运行结果:
1234
556
789
四、编程题:
(8分每题.共16分)
1•写一个函数•输入一个四位数字,要求输出这4个数字字符•但每两个数字间空一个空格。
例如输入1990.应该输出“1990"。
算法一:
#include<>
voidmain()
intabcg写程序,用公式£+|弓+£•春+…求H的近似值,直到最后一项小干计为
止。
>
解法一:
#include<>
ffincludeo
voidmain()
doublex=l,i=l;
}
W:
pi);
3•输入一行字符(不超过100),解法一:
将其中的大写字符变成小写,小写字符变成大写.其氽字符不变。
#include<>
voidmain()
{
charc;
下程序把100-200之间不能被3整除的数输出
入3个数.按从小到大的顺序输出。
while((c=getchar{))!
='\n,)
#include<>
voidmain()
{
inti;
for(i=100;i<=200;i++)
方法一:
#include<>
voidmain()
{
intxyz,t;
printf(wm输入要比较的三个数门;
scanf(M%d%d%d”,&x,&%&z);if(x>Y)
{
t=X;
x二y;
t=z;
z=y;
}
if(xy=t;
else
{
y=x;
X=t;
}
printf(H%d%d%d\rfxy,z);
}
方法二
100tfinclude<>以下程序用while语句计算式子工n
n=l
方法一:
用whileil•算
ftinclude<>100-200间的全部素数。
方法一:
ttinclude<>
voidmain()
{
inti,n;
for(n=101;n<200;n+=2)
{
for(i=2;i<=n-l;i++)
I
if(n%i==O)
break;
if(i==n)
printf("%5d\n”』);
}
}
方法二
#include<>
#include<>
voidmain()
intm儿k,n=0;
for(m=101;m<=200;m+=2)
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==O)
break;
if(i>=k+l)
{
printf(M%d\nM,m);
n+=l;
}
}
printfCAn11);
}
2-5
X
l+3
3-7
X
3-7
4-9
X
8•函数pi()的功能是根据以下公式求值,学=1+|x54X5直到最后一项小于10巧为止。
ffincludeo
doublejiechengl(intx)断输入的一个年份是否是闰年。
I
#includeo
voidmain()
mtx;
printf(”请输入年份:
”);
scanf(“%d”,&x);
if(x%400==0||(x%4==0&&x%100!
=0))写程序,在屏幕上打印输出下列图形。
1«include<>
222voidmain()
33333{
4444444for(inti=l;i<=9;i++)出所有“水仙花数”,所谓“水仙花
数”是指一个3位数,其各位数字立方和等于其本身。
例如:
153是“水仙花数”,因为153=13+53+33
#include<>
#include<>
voidmain()
{
intabc,i;
doublex;
for(i=100;i<1000;i++)
{
a=i/100;
b=(i-a*100)/10;
c=i・aT00・b・10;
x二pow(a,3)+pow(b,3)+pow(c,3);if(x==i)
printf("%d\n,,/i);
}
}
12.编写程序,输入三角形三条边的边长,
^include<>
include<>
voidmain()
{
求三角形的面积。
floata,b,c;
doubles,t;
printf(H请输入三角形三边J;
scanf(H%f%f%化&a,&b,&c);
if(((a+b)v=c)||{(a+c)<=b)||((b+c)<=a))子吃桃P129
main()
{
xl=(x2+l)*2;
x2=xl;
intday,xl/x2;
day=9;
day-;
}
x2=l;while(day>0)
printfC'tt子总数=%d\nM,xl);
}