c语言复习题Word格式.docx
《c语言复习题Word格式.docx》由会员分享,可在线阅读,更多相关《c语言复习题Word格式.docx(22页珍藏版)》请在冰豆网上搜索。
![c语言复习题Word格式.docx](https://file1.bdocx.com/fileroot1/2023-1/24/5f93e7bf-ac98-4afe-9bd0-202804534d0c/5f93e7bf-ac98-4afe-9bd0-202804534d0c1.gif)
A.ab$ B.h_a C._rng D.pr6n
6、下面程序的输出结果是。
main()
{inti;
for(i=1;
i<
6;
i++)
{if(i%2){printf("
#"
);
continue;
}
printf("
*"
\n"
A.#*#*#B.#####C.*****D.*#*#*
7、设intx=3,y=0;
则下面值为0的表达式是。
A.x||y B.!
y C.!
x D.x&
x
8、以下程序运行的输出结果是。
main()
{char*s="
abcde"
s+=2;
print("
%ld\n"
s);
A.cdeB.字符c的ASCLL码值 C.字符c的地址 D.出错
9、以下函数定义中正确的是。
A.fun(floatx,y){returnx+y;
}
B.fun(intx,floaty){returnx+y;
C.fun(intx,inty);
{returnx+y;
D.voidfun(floatx,floaty){returnx+y;
10、设inta[3][3]={1,2,3,4,5,6,7,8,9};
则a[2][1]的值是。
A.4B.5C.7D.8
11、若有inti;
floatx=4.2;
则在执行了i=(int)x后,x的类型为。
A.longint B.int C.double D.float
12、下面的宏定义中,为正确的
A.#defineKK20;
B.#defineKK20
C.defineKK20D.#define20KK
13、假定x和y为double型,则表达式x=1,y=x+3.0/2的值是。
A.1B.2C.2.0D.2.5
14、如果intx=0;
longinty=8;
x=y;
则变量x的值为。
0B.不确定C.8D.2
15、以下程序运行的输出结果是。
for(i='
A'
;
I'
i++,i++)printf("
%c"
,i+32);
\n"
A.编译不通过,无输出B.acegC.acegiD.abcdefghi
16、给出以下定义:
chara[]="
xyz"
charb[]={'
x'
y'
则正确的叙述为。
A.数组a和数组b等价
C.数组a和数组b的长度相同
B.数组a的长度大于数组b的长度
D.数组a的长度小于数组b的长度
17、intx=0;
执行语句while(x++<
6);
后,x的值是。
A.5B.6C.7D.4
18、二维数组a中,元素a[0][1]的地址可以表示为。
A.*(*(a+0)+1)B.*(a+1)C.&
aD.*a+1
19、数组定义chara[10]={'
a'
,'
b'
c'
包括了几个元素。
A.3B.4C.9D.10
20、unionuex{inti;
floatf;
charc;
}ex;
则sizeof(ex)的值是。
A.4B.5C.6D.7
21、数字字符0的ASCII值为48,以下程序输出结果是。
main()
{
chara='
1'
b='
2'
%c,"
b++);
%d\n"
b-a);
A.3,2B.50,2C.2,2D.2,50
22、有以下语句:
intb;
charc[10];
则正确的输入语句是。
A.scanf("
%d%s"
&
b,&
c);
B.scanf("
b,c);
C.scanf("
b,c);
D.scanf("
b,&
23、若有初始化“floata=2.1,*b;
”,则b指向a正确语句是。
A.*b=a;
B.*b=&
a;
C.b=a;
D.b=&
24、能正确表示逻辑关系:
x≥y≥z"
的C语言表达式是。
A.(x>
=>
y>
=z)B.(x>
y)&
(y>
=z)
C.(x>
=y)AND(y>
=z)D.(x>
=y)&
25、若有语句scanf(“%d%d”,&
a,&
b);
要使变量a,b分别得到12和34;
正确的输入形式为。
A.1234B.12,34C.12:
34D.1234
26、在下面的一维数组定义中,哪一个有语法错误。
A、inta[]={1,2,3}B、inta[10]={0}
C、inta[]D、inta[5]
27、C语言中每条简单语句以()作为结束符。
A、逗号B、分号
C、空格D、换行符
28、假定a为一个数组名,则下面的哪一种表示有错误?
A、a[i]B、*++a
C、*aD、*(a+1)
29、若数组名作实参而指针变量作形参,函数调用实参传给形参的是()
A、数组的长度B、数组第一个元素的值
C、数组所有元素的值D、数组第一个元素的地址
30、下列选项中不正确的整型常量是()
A、0B、-10u
C、20LD、-1234
31、在C程序中,用()表示逻辑值“真”.
A、trueB、非0的数
C、非0整数D、大于0的数
32、C语言程序由()组成.
A、子程序B、过程
C、函数D、主程序和子程序
33、设有inti;
则表达式i=1,++i,++i||++i,i的值为()
A、1B、2
C、3D、4
34、不正确的字符串赋值或赋初值的方式是()。
A、charstr[]=”string”;
B、charstr[7]={‘s’,‘t’,‘r’,‘i’,‘n’,‘g’};
C、charstr[10];
str=”string”;
D、charstr[7]={‘s’,‘t’,‘r’,‘i’,‘n’,‘g’,‘\0’};
35、下面符号中可作为C语言标识符是()
A、a+b+cB、23de
C、_daD、switch
36、C语言提供合法的数据类型关键字是()
A)DoubleB)shortC)integerD)Char
37、C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符()。
A)必须为字母或下划线。
B)必须为下划线。
C)必须为字母D)可以是字母、数字和下划线中的任一种字符。
38.若有定义:
inta=7;
floatx=2.5,y=4.7;
则表达式x+a%3*(int)(x+y)%2/4的值是()。
A)2.750000B)0.00000C)3.500000D)2.500000
39、已知ch是字符型变量,下面不正确的赋值语句是()。
A)ch=5+9;
B)ch='
a+b'
C)ch='
\0'
D)ch='
7'
+'
6'
40、对y在[3,23]和[100,200]范围内为真的确表达式为()
A)(y>
=3)&
(y<
=23)&
=100)&
=200)
B)(y>
=3)||(y<
=23)||(y>
=100)||(y<
C)(y>
D)(y>
41、在一个C程序中()
A)main函数必须出现在所有函数之前B)main函数可以在任何地方出现
C)main函数必须出现在所有函数之后D)main函数必须出现在固定位置
42、在C语言中,合法的字符常量是()
A)'
\084'
B)'
\x43'
C)'
ab'
D)"
\0"
43、不能正确表示ab除以cd的C语言表达式是()
A)a*b/c*dB)a/(c*d)*bC)a*b/c/dD)a*b/(c*d)
44、设有定义:
longx=-123456L;
,则以下能够正确输出变量x值的语句是()。
A)printf("
x=%d\n"
x);
B)printf("
x=%ld\n"
C)printf("
x=%8dL\n"
D)printf("
x=%LD\n"
45、C语言中最简单的数据类型包括()
A)整型、实型、逻辑型B)整型、实型、字符型
C)整型、字符型、逻辑型D)整型、实型、逻辑型、字符型
46、若已定义:
inta[9],*p=a;
并在以后的语句中未改变p的值,则不能表示a[1]地址的表达式是()。
A)p+1B)a+1C)a++D)++p
47、在下列选项中,不正确的赋值语句是()。
A)++t;
B)n1=(n2=(n3=0));
C)k=i==j;
D)a=b+c=1;
48、以下不能正确定义二维数组的选项是()
A)inta[2][2]={{1},{2}};
B)inta[][2]={1,2,3,4};
C)inta[2][2]={{1},2,3};
D)inta[2][]={{1,2},{3,4}};
49、设有如下结构定义:
structaddr
{charname[30];
charstreet[40];
charcity[20];
charoffice[30];
charphone[10];
intage;
}stud;
若用printf(“%s\n”,…)访问该结构中name值的正确方法是()
(A)stud->
name(B)&
stud.name(C)stud.&
name(D)stud.name
50、设有以下语句,则()不是对a数组元素的正确引用,其中0≤i<
10。
inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;
(A)a[p-a](B)*(&
a[i])(C)p[i](D)*(*(a+i))
三、填空题
1、有如下输入语句:
scanf(“a=%d,b=%d,c=%d”,&
a,&
为使变量a的值为1,b的值为3,c的值为2,从键盘输入数据的正确形式应是
___________________。
2、增量表达式++y表示成赋值表达式为_______________。
3、假定a=5,则条件表达式“a>
=5?
10:
20”的值为____________。
4、当在程序中执行到_____________语句时,将结束所在循环类语句或switch语句的执行。
5、假定a是一个一维数组,则a[i]的指针访问方式为_______________。
6、假定一个结构体类型的定义为“structC{inta[5];
intn;
”,则该类型的大小为____________字节。
7、算术表达式
对应的C表达式为________________________。
8、逻辑表达式x>
3&
x<
10的相反表达式为________________________。
9、假定要访问一个结构体类型指针p所指对象中的b指针成员所指的对象,则表示方法为_______________________。
10、执行“typedefintABC[20];
”语句把ABC定义为具有20个整型元素的___________________。
11、假定p所指对象的值为36,p+1所指对象的值为49,则*++p的值为____。
四、程序运行结果填空题
1、下面程序的运行结果是:
。
#include
“string.h”
main()
{char
ch[]="
abc"
x[3][4];
int
i;
for(i=0;
3;
i++)strcpy(x[i],ch);
i++)printf("
%s"
x[i][i]);
}
2、下面程序的运行结果是:
。
voidswap(intx,inty)
{intt;
t=x;
x=y;
y=t;
%d%d"
x,y);
{inta=3,b=4;
swap(a,b);
%d%d\n"
a,b);
3、下面程序的运行结果是:
。
inta[3][3],*p,i;
p=&
a[0][0];
9;
i++)p[i]=i;
%d"
a[1][i]);
4、下面程序的运行结果是:
#defineS(x)4*x*x+1
inti=2,j=3;
S(i+j));
5、下面程序的运行结果是:
inta,b;
voidfun(){a=10;
b=20;
main()
{inta=5,b=7;
fun();
%d;
%d\n"
,a,b);
6、下面程序运行时,假定键盘输入字符串为"
123"
则程序的运行结果是:
#include
voidmain(void)
{
intn=0;
charc;
while((c=getchar())!
=’\n’)/*字符型数字*/
{if(c>
=’0’&
c<
=’9’)
n=n*10+c-’0’;
/*数字*/
printf(“value=%d”,n);
7、已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:
B33<
回车>
,则输出结果是:
{chara,b;
a=getchar();
scanf("
b);
a=a-'
+'
0'
b=b*2;
%c;
%c\n"
8、下面程序的运行结果是:
{intn;
for(n=7;
n<
21;
n++)
{if(n%7!
=0)
continue;
printf(“%d;
”,n);
}
9、main()
{
intn=4,y=1;
while(n--)y*=3;
printf(“y=%d”,y);
10、main()
chara[]=”1231023120”;
intb[4]={0},i=0,k;
while(a[i])
k=a[i]-48;
/*0的ASCII码为48*/
b[k]++;
i++;
for(i=0;
4;
printf(“%d”,b[i]);
11、main()
inta[5]={3,6,9,12,15};
int*p=a;
for(inti=0;
5;
printf(“%d”,*p++);
12、intLA(int*a,intn)
ints=0;
n;
i++)s+=a[i];
return(s);
main()
inta[]={5,2,8,6,4,10};
intb=LA(a,5);
printf(“b=%d”,b);
13、main()
intx=20,y=40,*p;
p=&
x;
printf(“%d”,*p);
*p=x+10;
y;
printf(“%d%d”,x,y);
14、main()
inta[10]={8,19,46,15,6,24,27,18,20,53};
intc1=0,c2=0;
10;
if(a[i]>
=20)c1++;
=10)c2++;
printf(“%d,%d”,c1,c2);
15、SB(charch)
switch(ch){
case’A’:
case’a’:
printf(”well!
”);
break;
case’B’:
case’b’:
printf(”good!
case’C’:
case’c’:
printf(”pass!
default:
printf(”bad!
chara[6]=”Abcaf”;
a[i];
i++)SB(a[i]);
16、对于以下递归函数f,调用f(3)的返回值是__________.
f(intn)
return(n<
=0?
1:
f(n-1)+1);
17、阅读以下程序,写出运行后的输出结果_________________
#include<
voidmain()
charstring[81]=”Iamastudent.”;
inti,num=0;
word=0;
(c=string[i])!
=’\0’;
if(c==’’)word=0;
elseif(word==0)
word=1;
num++;
printf(“%d\n”,num);
18、阅读以下程序,写出运行后的输出结果_________________
inta=3,b=5;
f(inta,intb)
{intc;
c=a>
b?
a:
b;
return(c);
inta=10;
printf(“%d\n”,f(a,b));
19、阅读以下程序,写出运行后的输出结果_________________
voidmain()
intnum,c;
num=80;
do{
c=num%10;
printf("
c);
}while((num/=10)>
0);
20、阅读以下程序,写出运行后的输出结果_________________
intfac(intn)
{intf;
if(n==0||n==1)f=1;
elsef=fac(n-1)*n;
return(f);
fac(5));
五、程序完整性填空题
1、以下程序段用于构成一个简单的单向链表,请填空。
structSTRU
{intx,y;
floatrate;
*p;
}a,b;
a.x=0;
a.y=0;
a.rate=0;
a.p=&
b.x=0;
b.y=0;
b.rate=0;
b.p=NULL;
2、下面的函数是通过num统计在字符串str中用空格分割开的单词个数,请填空。
intfun(charstr[])
inti,word=0,num=0;
for(i=0;
str[i]!
=;
if(str[i]==‘'
)
word=0;
elseif(word==0)
word=1;
;
returnnum;
3、以下程序的功能是将5个字符串,按由大到小的顺序进行排序。
string.h>
{charp[5][10],t[20];
inti,j;
5;
gets(p[i]);
for(i=0;
i++)
for(j=i+1;
j<
j++)
if()
{strcpy(t,p[i]);
strcpy(p[i],p[j]);
strcpy(p[j],t);
4、mystr函数的功能是计算str所指字符串的长度,并作为函数值返回,请填空。
intmystr(char*str)
{inti=0;
while(_!
='
\0'
)i++;
return(______);
5、下面程序是计算:
请填空。
{ints=1;
floatn=1.0,x=1,p=0;
for(n=1;
=15;
n=n+2)
{p=p+x;
s=;
x=;
p=%f\n"