c语言题目及问题详解Word格式.docx
《c语言题目及问题详解Word格式.docx》由会员分享,可在线阅读,更多相关《c语言题目及问题详解Word格式.docx(22页珍藏版)》请在冰豆网上搜索。
=50;
y++){
if(x>
=10)break;
if(x%2==1){x+=5;
continue;
}
x-=3;
A.2B.4C.6D.8
8.以下正确的说法是____。
A.用户若需调用标准函数,调用前必须重新定义
B.用户可以重新定义标准库函数,若如此,该函数将失去原有含义
C.系统根本不允许用户重新定义标准函数
D.用户若需要调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调
9.若调用一个函数,且此函数中没有return语句,则关于该函数正确的说法是___。
A.没有返回值
B.能返回若干个系统默认值
C.能返回一个用户所希望的函数值
D.返回一个不确定的值
10.已知函数定义如下:
floatfun1(intx,inty)
{floatz;
z=(float)x/y;
return(z);
主调函数中有inta=1,b=0;
可以正确调用此函数的语句是____。
A.printf("
%f"
fun1(a,b));
B.printf("
fun1(&
b));
C.printf("
fun1(*a,*b));
D.printf("
fun1(b,a));
11.宏定义:
#definePI31.14159中,宏名PI代替______。
A.单精度B.双精度C.常量D.字符串
12.若有以下数组说明,则数值最小和最大的元素下标分别是。
inta[12]={1,2,3,4,5,6,7,8,9,10,11,12};
A.1,12B.0,11C.1,11D.0,12
13.以下合法的数组定义是。
A.inta[3][]={0,1,2,3,4,5};
B.inta[][3]={0,1,2,3,4};
C.inta[2][3]={0,1,2,3,4,5,6};
D.inta[2][3]={0,1,2,3,4,5,};
14.函数调用:
strcat(strcpy(str1,str2),str3);
的功能是。
A.将字符串str1复制到字符串str2中后再连接到字符串str3之后。
B.将字符串str1连接到字符串str2之后再复制到字符串str3之后。
C.将字符串str2复制到字符串str1中后再将字符串str3连接到字符串str1之后。
D.将字符串str2连接到字符串str1之后再将字符串str1复制到字符串str3中。
15.设有二维数组定义如下,则不正确的数组元素引用是。
inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
A.a[2][3]B.a[a[0][0]][1]C.a[7]D.a[2][‘c’-‘a’]
16.若用数组名作为函数调用时的实参,则实际上传递给形参的是。
A.数组首地址B.数组的第一个元素值
C.数组中全部元素的值D.数组元素的个数
17.以下对指针变量进行操作的语句,正确的选项是。
A.int*p,*q;
q=p;
B.inta,*p,*q;
q=&
a;
p=*q;
C.inta=b=0,*p;
p=&
b=*p;
D.inta=20,*p,*q=&
p=q;
18.若有以下定义和语句:
ints[4][5],(*ps)[5];
ps=s;
则对s数组元素的正确引用形式是。
A.ps+1B.*(ps+3)
C.ps[0][2]D.*(ps+1)+3
19.当说明一个共用体变量时系统分配给它的存储容量是。
A.共用体中最后一个成员所需的存储容量
B.共用体中第一个成员所需的存储容量
C.成员中占存储量最大者所需的存储容量
D.各成员所需存储容量的总和
20.有定义如下:
structstudent
{intage;
charnum[8];
}stu[3]={{20,"
200401"
},{21,"
200402"
},{10,"
200403"
}};
structstudent*p=stu;
以下选项中引用结构体变量成员的表达式错误的是。
A.(p++)->
numB.p->
num
C.(*p).numD.stu[3].age
二、填空题
1.设a=3,b=2,c=1,则a>
b的值为,a>
b>
c的值为。
2.若w,x,y,z,m均为int型变量,则执行下面程序段后的m值是。
w=1;
x=2;
y=3;
z=4;
m=(w<
y)?
w:
x;
m=(m<
m:
y;
m=(m<
z)?
m:
Z;
3.下面程序的输出结果是____。
#include<
stdio.h>
main()
{inta=1,b=0;
do{
switch(a)
{case1:
b=1;
break;
case2:
b=2;
default:
b=0;
b=a+b;
}while(!
b);
printf("
a=%d,b=%d"
a,b);
4.下面程序的输出结果是____。
{intx,i;
for(i=1;
i<
=100;
i++){
x=i;
if(++x%2==0)
if(++x%3==0)
if(++x%7==0)
%d"
x);
5.下面程序的输出结果是____。
intfunc(inta,intb)
{intc;
c=a+b;
return(c);
voidmain()
{intx=6,y=7,z=8,r;
r=func((x--,y++,x+y),z--);
%d\n"
r);
6.下面程序的输出结果是____。
{intx=1;
voidf1(),f2();
f1();
f2(x);
voidf1(void)
{intx=3;
}
voidf2(x)
intx;
{printf("
++x);
7.程序中有定义:
#defineS(r)r/r
inta=4,b=3,area;
则表达式area=S(a+b)的值为_______。
三、程序完善题
1.以下程序的功能是计算分段函数y的值。
请完善程序。
{intx,c,m;
floaty;
scanf(“%d”,&
x);
if(
(1))c=-1;
elsec=
(2);
switch(c)
{case–1:
y=0;
break;
case0:
y=x;
case1:
y=10;
case2:
case3:
y=-0.5*x+20;
default:
y=-2;
if((3))printf(“y=%f”,y);
elseprintf(“error\n”);
}
2.有以下程序段:
s=1.0;
for(k=1;
k<
=n;
k++)
s=s+1.0/(k*(k+1));
%f\n"
s);
填空完成下述程序,使之与上述程序的功能完全相同。
s=0.0;
(1);
k=0;
do{
s=s+d;
(2);
d=1.0/(k*(k+1));
}while((3));
3.根据以下嵌套的if语句说给条件,填写switch语句,使它完成相同的功能。
(假设score的取值在1~100之间。
)
if语句:
if(score<
60)k=1;
elseif(score<
70)k=2;
80)k=3;
90)k=4;
=100)k=5;
switch语句:
switch(
(1))
{
(2):
k=1;
case6:
k=2;
case7:
k=3;
case8:
k=4;
(3):
k=5;
4.输入2个整数,输出它们的最小公倍数和最大公约数。
#include<
voidmain()
{intm,n,gbs,gys;
scanf(
(1));
for(gbs=m;
(2);
gbs=gbs+m);
gys=(3);
printf(“gbs=%d\tgys=%d\n”,gbs,gys);
5.下面函数的功能是判断一个数是否为素数。
voidf(intm)
{intm,i,k;
k=__
(1)__;
for(i=2;
=_
(2)__;
i++)
if(__(3)__)break;
if(__(4)__)printf(“是素数”);
elseprintf(“非素数”);
6.一个5位数,判断它是不是回文数。
即12321是回文数,个位与万位相同,十位与千位相同。
voidfun(longx)
{longge,shi,qian,wan;
wan=
(1);
qian=___
(2)__;
shi=___(3)___;
ge=x%10;
if(__(4)__)
printf("
thisnumberisahuiwen\n"
);
elseprintf("
thisnumberisnotahuiwen\n"
四、程序设计题
1.编写程序计算分段函数y值。
2.编写程序,输入一个字符串,求该字符串的有效长度。
要求不能使用系统函数。
3.编写程序实现,将键盘输入的一个十进制整数转换为2进制数并输出。
参考答案:
一、选择题
1
2
3
4
5
6
7
8
9
10
A
C
B
D
11
12
13
14
15
16
17
18
19
20
1、10
2、13、a=1,b=2
4、25675、21
6、3217、7
1、x<
0x/10x<
40
2、d=1k++k<
=n
3、score/10case0,1,2,3,4,5:
default
4、“%d%d”,&
m,&
ngbs%n!
=0m*n/gbs
5、m/2km%i==0i<
=k
6、x/10000(x%10000)/1000(x%100)/10wan==ge&
&
qian=shi
1、#include<
{floatx,y;
scanf(“%f”,&
if(x>
0)y=exp(-x);
elseif(x==0)y=1;
elsey=-exp(x);
printf(“%f”,y);
2、#definemax20;
voidmain(){
charstr[max];
intlen;
scanf(“%s”,str);
for(len=0;
str[len]!
=0;
len++)
;
printf(“%d”,len);
3、#include<
voidmain(){
unsignedn;
charstr[10],t;
intk,i,j;
printf(“pleaseinput:
”);
scanf(“%u”,&
n);
for(i=0;
n!
0;
{
str[i]=n%2+’0’;
n/=2;
str[i]=’\0’;
printf(“theresultis:
for(k=0,j=i-1;
j;
k++,j--)
{t=str[k];
str[k]=str[j];
str[j]=t;
puts(str);
复习题二
一、选择题
1.字符串"
ABC"
在内存占用的字节数是。
A.3B.4C.6D.8
2.设整型变量m,n,a,b,c,d均为0,执行(m=a==b)||(n=c==d)后,m和n的值是。
A.0,0B.0,1C.1,0D.1,1
3.a是int类型变量,c是字符变量。
下列输入语句中哪一个是错误的。
A.scanf("
%d,%c"
c);
B.scanf("
%d%c"
a,c);
C.scanf("
D.scanf("
d=%d,c=%c"
4.字符变量ch='
,int类型变量k=25,执行printf("
%3d,%d3\n"
ch,k);
的输出为:
。
A.65,253B.65253C.65,25D.A25
5.已知inti=1,j=0;
执行下面语句后j的值是____。
while(i)
switch(i)
i+=1;
j++;
i+=2;
case3:
i+=3;
default:
i--;
A.1B.2C.3D.死循环
8.在C语言中,函数的数据类型是指____。
A.函数返回值的数据类型B.函数形参的数据类型
C.调用该函数时的实参的数据类型D.任意指定的数据类型
9.在c语言中以下不正确的说法是___。
A.实参可以是常量、变量或表达式
B.形参可以是常量、变量或表达式
C.实参可以为任意类型
D.形参应与其对应的实参类型一致
11.宏定义的宏展开是在_______阶段完成的。
A.第一遍编译B.第二遍编译
C.程序执行D.预编译
19.当说明一个结构体变量时,系统分配给它的存储容量是。
A.结构体中最后一个成员所需的存储容量
B.结构体中第一个成员所需的存储容量
structsk
{inta;
floatb;
}data,*p;
如果有:
data;
则对于结构体变量data的成员a的正确引用是____。
A.(*p).data.aB.(*p).aC.p->
data.aD.p.data.a
2.设x和y均为int型变量,且x=1,y=2,则表达式1.0+x/y的值为。
3.以下程序段的输出结果是。
inta=10,b=50,c=30;
if(a>
b)
a=b;
b=c;
c=a;
a=%db=%dc=%d\n"
a,b,c);
4.以下程序的输出结果是。
{intx=2,y=-1,z=2;
if(x<
y)
if(y<
0)z=0;
elsez+=1;
z);
7.以程序的输出结果是_______。
#defineMA(x)x*(x-1)
#include<
{inta=1,b=2;
pirntf(“%d\n”,MA(1+a+b));
1.下列程序计算并输出方程X2+Y2+Z2=1989的所有整数解。
voidmain()
{
(1);
for(i=-45;
=45;
i++)
for(
(2))
for(k=-45;
if((3))
printf(“%4d%4d%4d\n”,i,j,k);
60)