C语言复习题最好.docx
《C语言复习题最好.docx》由会员分享,可在线阅读,更多相关《C语言复习题最好.docx(9页珍藏版)》请在冰豆网上搜索。
C语言复习题最好
期末复习练习一
一.单项选择题(每小题1分,共20分)
1、假设定义:
intx=3,y=3;则复合赋值表达式x/=1+y的值为A因为定型为整形
(A)0(B)0.75(C)6(D)以上都错
2、表达式:
3>5&&-1||6<3-!
-1的值是A
(A)0(B)1(C)表达式不合法(D)均不对
3、语句if(3/4>1/2)a=1;elsea=0;运行后,a的值是B
(A)1(B)0(C)与机器有关(D)语法有错
4、执行下列程序段后,a值为A
a=1;b=0;
if((a++>++b)?
a++:
b--)a+=b;
(A)2(B)3(C)4(D)5
5、下列程序段执行后s值为C
inti=1,s=0;
do{if(!
(i%2))continue;s+=i;}while(++i<10);
(A)1(B)45(C)25(D)以上均不是
6、对于inta,则表达式1<=a<=5值是B
(A)0(B)1(C)不定(D)表达式语法有错
7.C语言源程序的基本单位是(B)。
(A)过程(B)函数(C)子程序(D)标识符
8.下列程序的输出结果是(C)。
main()
{inta=7,b=5;
printf("%d\n",b=b/a);
}
(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(C)125,31,20(D)125.534,2,20
13.设有如下程序段,下面描述中正确的是(C)。
intk=10;while(k=0)k=k-1;
(A)循环执行一次(B)循环是无限循环
(C)循环体语句一次也不执行(D)循环体语句执行一次
14.以下程序的输出结果为(A)。
inti;
voidprt()
{for(i=5;i<8;i++)printf("%c",'*');
printf("\t");
}
main()
{for(i=5;i<=8;i++)prt();
}
(A)***(B)************(C)******(D)***
15.在C语言程序中,以下说法正确的是(B )。
(A)函数的定义可以嵌套,但函数的调用不可以嵌套
(B)函数的定义不可以嵌套,但函数的调用可以嵌套
(C)函数的定义和函数的调用都不可以嵌套
(D)函数的定义和函数的调用都可以嵌套
16.以下函数调用语句中含有(A)个实参。
func((e1,e2),(e3,e4,e5));
(A)2(B)3(C)5(D)语法错误
17.以下程序的输出结果为(A)。
#defineADD(x)x*x
main()
{inta=4,b=6,c=7,d=ADD(a+b)*c;
printf("d=%d",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)。
enumweek{sun,mon=4,tue,wed,thu,fri,sat}w;
(A)tue(B)sat(C)fri(D)thu1
20.正确的赋值语句是(设chara[5],*p=a;)(A)。
(A)p="abcd";(B)a="abcd";(C)*p="abcd";(D)*a="abcd";
二、填空题(每空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十进制的值是40。
4、若有定义:
intm=5,y=2;则执行表达式y+=y-=m*=y后的y值是-16
5、在C语言中,表示逻辑“真”值用1表示。
6、x,y,z均为整型变量,请写出描述“x或y等于z”的表达式
_x==z||y==z___。
7、continue只能出现在循环语句中。
8、若已知a=1,b=2,则表达式!
a
9、C语言的基本数据类型分为_int__、float____、_char___。
10、已知字母'A'的ASCII码值为十进制数65,且ch为字符型,则执行语句ch='A'+'6'-'0’后,ch的值为___G_。
三、程序分析题
[阅读下述程序,写出执行结果
1、#defineX5
#defineYX+1
#defineZY*X/2
main()
{inta;a=Y;
printf("Z=%d,a=%d\n",Z,a);
}
执行结果为:
Z=7,a=6
2.unsignedfun6(unsignednum)
{unsignedk=1;
do
{k*=num%10;num/=10;}
while(num);
returnk;
}
main()
{unsignedn=26;
printf("fun=%d\n",fun6(n));
}
执行结果为:
___fun=12.
13.main()
{intp[7]={11,13,14,15,16,17,18};
inti=0,j=0;
while(i<7&&p[i]%2==1)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;
while(i++<4)
{if(i==2||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("%d,%d\n",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
3,4
4,3
3,4
.
6.main()
{inta[]={1,2,3,4,5};
int*p=a;
printf("%d\n",*++p);
printf("%d\n",*p++);
printf("%d\n",(*p)++);
printf("%d\n",++*p);
}
执行结果为:
2
2
3
5
四、程序填充题
(每空1分,共10分)
[阅读下列程序,在处填入适当内容,使程序完整]
1.试求出1000以内的“完全数”。
(提示:
如果一个数恰好等于它的因子之和(因子包括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((5)n==s)printf("%4d",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;
(2)iprintf("%c",str[i]);
printf("\n");
}
sort(str)
charstr[N];
{inti,j;
chart;
for(j=1;jfor(i=0;iif(str[i]>(3)str[i+1])
{t=str[i];
(4)str[i]=str[i+1]______;
(5)str[i+1]=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;
y=z;
printf(“x=%d,y=%d”,x,y);
}
3.写一个程序,输入n,输出n行数字三角图形,例如,输入n=4时,输出以下图形:
1
121
12321
1234321
(参考答案)
Voidmain()
{
inti,j,n;
printf(“Entern:
”);
scanf(“%d”,n);
for(i=0;i{
for(j=0;jprintf(“”);
for(j=0;j<=i;j++)
printf(‘%5d’,j+1);
for(j=0;j
printf(“%5d”,i-j)
printf(“\n”);
}
}