C程序设计教程期末复习练习一cdoc.docx
《C程序设计教程期末复习练习一cdoc.docx》由会员分享,可在线阅读,更多相关《C程序设计教程期末复习练习一cdoc.docx(10页珍藏版)》请在冰点文库上搜索。
C程序设计教程期末复习练习一cdoc
期末复习练习一
1.
单项选择题(每小题1分,共20分)
因为定型为整形
(0与机器有关(D)语法有错
4、执行下列程序段后,a值为Aa二1;b二0;
辻((a++>++b)?
a(++:
b--)a+二b;
(A)2(B)3(C)4(D)55、下列程序段执行后s值为Cinti二1,s二0;
do{if(!
(i%2))continue;s+二i;}whi.le(卄i<10);
⑷1(B)45(C)25(D)以上均不是
6、对于inta,则表达式l〈p〈二5值是B
(A)0(B)1(C)不定(D)表达式语法有错
7.C语言源程序的基本单位是(B)o
(A)过程(B)函数(C)子程序(D)标识符
&下列程序的输出结果是(C)o
main()
{inta二7,b二5;
printf(M%d\n,r,b=b/a);
}
⑷5(B)1(C)0(D)不确定值
11.假设变量a,b均为整型,表达式(a=5,b=2,a>b?
a++:
b++,a+b)的值是(B)。
(A)7(B)8(C)9(D)2
12.设a为int型变量,执行下列赋值语句后,a的取值分别是(B)。
a二125.534;a二(int)125.521%4;a=5<<2;
(A)125,31,1(B)125,1,20(0125,31,20(D)125.534,2,20intk=10;while(k=0)k=k-l;
(A)循环执行一次(B)循环是无限循环
(0循环体语句一次也不执行(D)循环体语句执行一次
14.以下程序的输出结果为(A)ointi;
voidprt()
{for(i=5;i<8;i++)printf("%c",'*');
printf(n\tw);
main()
{for(i=5;i<=8;i++)prt();
}
***(D)*
(A)***(B)************(C)***
**
15.在C语言程序中,以下说法正确的是(B)o
(A)函数的定义可以嵌套,但函数的调用不可以嵌套
(B)函数的定义不可以嵌套,但函数的调用可以嵌套
(0函数的定义和函数的调用都不可以嵌套
(D)函数的定义和函数的调用都可以嵌套
16.以下函数调用语句中含有(A)个实参。
func((el,e2),(e3,e4,e5));
⑷2(B)3(C)5(D)语法错误
17.以下程序的输出结果为(A)o
#defineADD(x)x*x
main()
{inta=4,b=6,c=7,d=ADD(a+b)*c;
printf("d=%dn,d);
}
(A)d=70(B)d=80(C)d=140(D)d=700
18.已知职工记录描述如下,在TurboC中,系统为变量w分配(C)
字节的空间。
structworker
{intno;charname[20];charsex;union{intday;intmonth;intyear;}birth;
}w;
(A)29(B)20(C)25(D)6
19.设有以下定义,值为5的枚举常量是(A)o
20.
fri,sat}w;
enumweek{sun,mon=4,tue,wed,thu,
21.正确的赋值语句是(设chara[5],*p=a;)(A)o
⑷p二"abed";(B)a=nabcdM;(C)*p="abcd";(D)*a=,rabcdH;
二、填空题(每空1分,共10分)
1、判断一个字符X是否是小写字母或数字的逻辑判断表达式是:
(x>=48&&x<=57||x>=97&&x<=122
2、用下列for循环将大写字母逆序输出(即从Z到A),其语句应为:
for(i=0;i<26;i++)printf("%c”,90-i);
3、5〈〈3十进制的值是404、若有定义:
intm=5,y=2;则执行表达式y+二y-二m*二y后的y值是
-16
5、在C语言中,表示逻辑“真”值用1表示。
6、
x,y,z均为整型变量,请写出描述“x或y等于z”的表达式
x=z丨丨y==zo
7、continue只能出现在循环语句中。
8、若已知a=l,b二2,则表达式!
a〈b的值为1。
9、C语言的基本数据类型分为o
10、已知字母'A'的ASCII码值为十进制数65,且ch为字符型,则执行语句chiA'+'6'」0‘后,ch的值为_G_。
三、程序分析题[阅读下述程序,写出执行结果
1、ttdefineX5#defineYX+l
ftdefineZY*X/2
main()
{inta;a二Y;
printf(nZ=%d,a=%d\n,r,Z,a);
}
执行结果为:
Z二7,a=6
2.unsignedfun6(unsignednum)
{unsignedk=l;
do
{k*=num%10;num/二10;}
while(num);
returnk;
}
main()
{unsignedn二26;
printf(Mfun=%d\nw,fun6(n));
}
执行结果为:
fun=12.
13.main()
{intp[7]二{11,13,14,15,16,17,18};
inti二0,j二0;
wh订e(i<7&&讥i]%2=l)j+二p[i++];
printf("n=%d\n”,j);
}执行结果为:
4.main()
{inta[4][4]二{{1,2,3,4},{5,6,7,8},{11,12,13,14},
{15,16,17,18}};
inti=0,j二0,s=0;
wh订e(i卄〈4)
{if(i—21|i=4)continue;
j二0;
do{s+=a[i][j];}while(j<4);
}
printf("s=%d\n”,s);
n二24
}执行结果为:
5.#definePRINTABprintf(°%d,%d\n\a,b);#definePRINTXYprintf(M%d,%d\nM,x,y);voidswap(intx,inty)
{intt;
PRINTXY
t二x;x二y;y二t;
PRINTXY
}
main()
{inta=3,b=4;
PRINTAB
swap(a,b);
PRINTAB
}执行结果为:
3.4
3a
4,33,4
6.main()
{inta[]-{1,2,3,4,5};
int*p=a;
printf("%d\n",*++p);
printf(w%d\nw,*p++);
printfC%d\nM,(*p)++);
printf(H%d\n,r,^*p);
}
执行结果为:
2
2
3
5
四、聲唐瘗充题(每空1分,共10分)[阅读下列程序,在处填入畫当内容,使程序完整]
I.试求出1000以内的“完全数”o(提示:
如果一个数恰好等于它的因子之和(因子包括1,不包括数本身),则称该数为“完全数”。
如:
6的因子是1、2、3,而6=1+2+3,则6是个“完全数”。
)
main()
intn,s;
(1)inta;
for(n二1;
(2)n〈1000;n++)
{
for(s=0,a=l;a<=n/2;(3)a++)
if(!
(n%a))(4)s+二a;
if()printf(n%4d,r,n);
}
}
2.用“冒泡法”对输入的10个字符排序后按从小到大的次序输出。
#defineN10
charstr[N];
main()
{
inti,flag;
for(i=0;i<10;i++)
scanf("%c",&str[i]);
sort(
(1)str);
for(i二0;;i++)printf("%c",str[i]);
printf("\n");
}
sort(str)
charstr[N];
{inti,j;
chart;
for(j=l;jfor(i=0;iif(str[i]>)
{t二str[i];
(4)str[i]二str[i+1]
(5)str[i+l]二t;
}
五、编程题(每题10分,共30分)
1.打印具有abcd=(ab+cd)2性质的全部四位数。
(参考答案)
main()
{intn,x,y;
for(n二1000;n〈二9999;n++)
{x二n/100;y=n%100;
if(n—(x+y)*(x+y))printf(“%d\n”,n);
2.出。
}
编写主函数,实现输入两个一般整数,完成两个数交换后再输
(参考答案)
voidmain()
{
intx,y,z;
printf("Entertwonumbersxy:
”);scanf("%d%d”,&x,&y);
z二x;
x二y;
x,y);
输出n行数字三角图形,例如,输入
y二z;
printf("x=%d,y=%d”,
3.写一个程序,输入n,n=4盼,输出以卞陵形:
1
121
12321
1234321
(参考答案)
Voidmain()inti,j,n;
printf("Entern:
”);
scanf("%d”,n);
for(i=0;ifor(j=0;jfor(j=0;j<=i;j++)
printf('%5d,,j+1);for(j=0;j
printf("\n");