C 复习题C文档格式.docx
《C 复习题C文档格式.docx》由会员分享,可在线阅读,更多相关《C 复习题C文档格式.docx(11页珍藏版)》请在冰豆网上搜索。
x);
if(x--<
5)printf("
x);
elseprintf("
x++);
程序运行后,如果从键盘上输入5,则输出结果是
A)3B)4C)5D)6
(8)t为int类型,进人下面的循环之前,t的值为0
while(t=l)
{……}
则以下叙述中正确的是
A)循环控制表达式的值为0B)循环控制表达式的值为1
C)循环控制表达式不合法D)以上说法都不对
(9)在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是
A)地址传递B)单向值传递
C)双向值传递D)传递方式由用户指定
(10)以下函数值的类型是
fun(floatx)
{
floaty;
y=3*x-4;
returny;
A)intB)不确定C)voidD)float
(11)以下程序的输出结果是
charc='
z'
;
%c"
c-25);
A)aB)ZC)z-25D)y
(12)若有说明:
inti,j=2,*p=&
j;
,则能完成i=j赋值功能的语句是
A)i=*p;
B)p*=*&
C)i=&
D)i=**p;
(13)以下定义语句中,错误的是
A)inta[]={1,2};
B)char*a[3];
C)chars[10]="
test"
D)intn=5,a[n];
(14)假定int类型变量占用两个字节,其有定义:
intx[10]={0,2,4};
,则数组x在内存中所占字节数是
A)3B)6C)10D)20
(15)以下程序的输出结果是
inti,a[10];
for(i=9;
i>
=0;
i--)a[i]=10-i;
%d%d%d"
a[2],a[5],a[8]);
A)258B)741C)852D)369
(16)以下数组定义中不正确的是
A)inta[2][3];
B)intb[][3]={0,1,2,3};
C)intc[100][100]={0};
D)intd[3][]={{1,2},{1,2,3},{1,2,3,4}};
(17)以下程序的输出结果是
inta[4][4]={{1,3,5},{2,4,6},{3,5,7}};
%d%d%d%d\n"
a[0][3],a[1][2],a[2][1],a[3][0]);
A)0650B)1470C)5430D)输出值不定
(18)以下程序的输出结果是
charst[20]="
hello\0\thg"
printf(%d%d\n"
strlen(st),sizeof(st));
A)99B)520C)1320D)2020
(19)以下选项中,不能正确赋值的是
A)chars1[10];
s1="
Ctest"
B)chars2[]={'
C'
'
t'
e'
s'
};
C)chars3[20]="
D)char*s4="
Ctest\n"
(20)以下程序的输出结果是
structHAR
{intx,y;
structHAR*p;
}h[2];
h[0].x=1;
h[0].y=2;
h[1].x=3;
h[1].y=4;
h[0].p=&
h[1];
h[1].p=h;
%d%d\n"
h[0].p->
x,h[1].p->
y);
A)12B)23C)14D)32
(21)以下程序的输出结果是
inta,b;
for(a=1,b=1;
a<
=100;
a++)
if(b>
=10)break;
if(b%3==1)
{b+=3;
continue;
}
a);
A)101B)6C)5D)4
(22)以下程序的输出结果是
unionmyun
struct
{intx,y,z;
}u;
intk;
}a;
a.u.x=4;
a.u.y=5;
a.u.z=6;
a.k=0;
a.u.x);
A)4B)5C)6D)0
(23)以下程序的输出结果是
voidfun()
{a=100;
b=200;
}
inta=5,b=7;
fun();
a,b);
A)100200B)57C)200100D)75
(24)以下程序的输出结果是
#defineM(x,y,z)x*y+z//带参宏定义
inta=1,b=2,c=3;
M(a+b,b+c,c+a));
A)19B)17C)15D)12
(25)下面的程序执行后,文件test.t中的内容是
#include<
stdio.h>
voidfun(char*fname,char*st)
FILE*myf;
myf=fopen(fname,"
w"
);
fputs(st,myf);
fclose(myf);
fun("
"
newworld!
"
);
hello!
)
}
A)hello!
B)newworld!
C)newworld!
D)hello!
rld!
二、填空题
(1)语句:
x++;
++x;
x=x+1;
x=1+x;
执行后都使变量x的值增1,请写出一条同一功能的赋值语句()。
(2)以下程序运行后的输出结果是()。
voidmain()
inti=10,j=0;
do{j=j+i;
i--;
}while(i-->
2);
j);
(3)设有以下程序:
intn1,n2;
n2);
while(n2!
=0)
n1=n2%10;
n2=n2/10;
n1);
程序运行后,如果从键盘上输入1298;
则输出结果为()。
(4)以下程序输出的最后一个值是()。
intff(intn)
staticintf;
f=f+n;
returnf;
inti;
for(i=1;
i<
=5;
i++)printf("
ff(i));
(5)以下函数的功能是:
求x的y次方,请填空。
doublefun(doublex,inty)
doublez;
for(i=1,z=x;
____;
i++)_____;
returnz;
(6)设有以下程序:
inta,b,k=4,m=6,*p1=&
k,*p2=&
m;
a=p1==&
b=(*p1)/(*p2)+7;
a=%d\n"
a);
b=%d\n"
b);
执行该程序后,a的值为(),b的值为()。
(7)若已定义:
inta[10],i;
,以下fun函数的功能是:
在第一个循环中给10个数组元素依次赋1、2、3、4、5、6、7、8、9、10;
在第二个循环中使a数组10个元素中的值对称折叠,变成1、2、3、4、5、5、4、3、2、1。
请填空。
fun(inta[])
=10;
i++)_____=i;
for(i=0;
5;
i++)_____=a[i];
(8)若有定义语句:
chars[100],d[100];
inti=0;
,且s中已赋字符串,请填空以实现字符串拷贝。
(注:
不得使用逗号表达式)
while(s[i]){d[i]=____;
i++;
d[i]=’\0’;
(9)以下程序段用于构成一个简单的单向链表,请填空。
structSTRU
intx,y;
floatrate;
___________p;
}a,b;
a.x=0;
a.y=0;
a.rate=0;
a.p=&
b;
b.x=0;
b.y=0;
b.rate=0;
b.p=NULL;
(10)若有如下结构体说明:
inta,b;
charc;
doubled:
structSTRUp1,p2;
___________t[20];
请填空,以完成对t数组的定义,t数组的每个元素为该结构体类型.
三、改错题
注意:
在/*********found**********/下一行改,不得增行或删行,也不得更改程序的结构!
1.给定函数fun的功能是:
先从键盘上输入一个3行3列矩阵的各个元素的值,然后输出主对角线元素之和。
请改正函数fun中的错误或在横线处填上适当的内容并把横线删除,使它能得出正确的结果。
intfun()
inta[3][3],sum;
inti,j;
/*********found**********/
______;
for(i=0;
i<
3;
i++)
{for(j=0;
j<
j++)
a[i][j]);
sum=sum+a[i][i];
Sum=%d\n"
sum);
2.给定函数fun的功能是:
将从键盘上输入的每个单词的第一个字母转换为大写字母,输入时各单词必须用空格隔开,用'
.'
结束输入。
请改正函数中的错误,使程序能输出正确的结果。
intfun(char*c,intstatus)
/***********found**********/
if(c=='
'
)return1;
else
if(status&
*c<
='
&
*c>
a'
)
c+='
A'
-'
return0;
3.给定函数fun的功能是:
计算整数n的阶乘。
请改正函数中的错误或在横线处填上适当的内容并把横线删除,使它能计算出正确的结果。
doublefun(intn)
longresult=1;
while(n>
1&
n<
30)
/*********found*********/
result*=--n;
return________;
习题答案
一、单选题
1.C2.B3.D4.D5.D6.C7.B8.C
9.B10.D11.A12.A13.D14.D15.C16.D
17.A18.B19.A20.D21.D22.D23.B24.D
25.A
1.x+=12.303.89214.15
5.i<
yz*=x6.077.a[i-1]a[9-i]8.s[i]
9.structSTRU10.structSTRU
1.sum=0;
scanf("
a[i][j]);
2.if(*c=='
*c+='
3.result*=n--;
returnresult;