C复习试题Word文档格式.docx
《C复习试题Word文档格式.docx》由会员分享,可在线阅读,更多相关《C复习试题Word文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
执行z=y=x++;
后变量y的值是(C)
A.0B.1
C.2D.3
13.设有声明intx=1,y=2,z;
执行z=x>
y?
x+2:
y-2后变量z的值是(A
14.关于break语句,以下说法不正确的是(C)
A.它可以用于循环语句中
B.它可以用于switch语句中
C•可以从最内层循环结构中直接跳出最外层循环结构
D.可以从当前switch结构中跳出
15.若有inta=8,b=5;
语句printf(“%d”,a>
b);
的执行结果是(B)
C.5D.8
16.下面程序的输出结果是(C)
main()
{inta=3,b=5;
a+=b;
b+=a;
printf(“%d,%d”,a,b);
}
A.3,5
B.5,3
C.8,13
D.13,21
17.若有inta=8,b=12,max,min;
执行语句
if(a>
b){max=a;
min=b;
else{max=b;
min=a;
的结果是(C)
A.max的值是8,min的值是12
B.max的值是8,min的值是8
C.max的值是12,min的值是8
D.max的值是12,min的值是12
18.执行下面程序段后,a的值是
inta=100;
do
{a++;
}while(a>
120);
(B
)
A.100
B.101
C.120
D.121
19.若有定义intch[5][4];
则数组
ch中的元素的个数是(D)
A.9
B.12
C.15
D.20
20.若有说明:
inta[10];
则对a
数组兀素的正确引用是(A)o
A.a[10]
B.a[10-10]
C.a(5)
D.a[3.5]
21.若有定义:
则数组兀素的卜标的卜限和上限分别是(C)
A.0和1
B.1和9
C.0和9
D.1和10
22.右有疋乂chara[3][5];
则数组a在内存中占用的字节数是(B)
A.8
B.15
C.16
D.30
23.对以下说明的正确理解是(
B)o
inta[10]={6,7,8,9,10}
A.将5个初值依次赋给a[1]至a[5]B.将5个初值依次赋给a[0]至a[4]
C.将5个初值依次赋给a[6]至a[10]D.因长度与初值个数不同,故语句错误
24.若有定义charstr[20];
能使数组str得到字符串"
Iamaboy"
的正确输入方法是(A)
A.gets(str);
C.scanf("
%c"
str);
B.str=getchar();
D.scanf("
%s"
25.有两个字符数组a,b,则以下正确的输入格式是(C)o
A.scanf("
%s%s"
&
a,&
b)
B.gets(a,b)
C.scanf("
a,b)D.gets("
a"
);
gets("
b"
26.若主函数调用funl函数,而funl函数调用fun2函数,这种逐级调用称为(D)
A.直接递归调用B.间接递归调用
C.并行调用D.嵌套调用
27.下面关于函数参数的说法中,不正确..的是(B)
A.实参可以是常量、变量或表达式
B.形参可以是常量、变量或表达式
C.实参可以是数组元素或数组名
D.形参应与其对应的实参类型一致
28.在一个c源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则
该变量需要使用的存储类别是(D)
A.extern
C.auto
B.register
D.static
29.C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是(B)
A.地址传递
B.单向值传递
C.由实参传给形参,再由形参传回给实参
30.在C语言中,确定函数返回值的类型由(A.return语句中的表达式类型决定
C.调用函数时临时决定
31.设有下面的结构体和结构变量定义:
D.由用户指定方式
B)
B.调用该函数的主函数类型决定
D.定义函数时所指定的函数类型决定
Structtea
{
char*name;
floatprice,weight;
};
structteateal={"
green_tea"
2.0,28.5};
structtea*p_struct=&
teal;
语句:
printf(”%s,%.1f"
p_struct—>
name,p_struct—>
price*p_struct—>
weight);
的输出结果是()
A.57.0
C.green_tea,57.0
32.下列关于结构体类型定义正确的是(
A.structABC
{inta
charb
char*p
}
C.structABC
{inta;
B.57.0,green_tea
D.green_tea
B.structABC
charb;
char*p;
D.structABC
{inta,
charb,
char*p,
charb;
};
};
33•设有下面的结构体和结构变量定义,以下选项关于结构体类型变量赋值不正确的是()
structcar
{longid:
char*name;
};
structcarcarl;
A.carl.id=10101;
B.carl.name="
BlueSky"
;
C.carl.*name="
D.carl.id=123456L;
34.设有下面的结构体和结构变量定义:
structstudent
longid:
intmath;
}・
structstudentstudl;
关于结构体类型变量赋值正确的是(
A.studl.id=1001;
studl.name="
Tom”;
B.id=1001;
*studl.name="
Tom"
C.studl.id=1001;
studl.*name="
D.studl.id=1001L;
*studl.name="
35.下面关于结构体类型变量定义正确的是(
A.structbunding{
intarea=12345;
char*name="
No1Hotel"
}bl;
B.structbuilding{
intarea=12345;
NolHotel"
}b1;
.
C.building{
char*name="
;
D.STRUCTbuilding{
36.已知ch是字符型变量,下面不正确的赋值语句是(B)。
A.ch=95;
B.ch=“a”
C.ch='
\n'
a'
37.若有inta[]={1,2,3,4,5,6,7,8,9,10},且Owiv10,则对数组元素地址正确表示的是(D)。
A.&
a+1B.&
a++
C.&
aD.&
a[i]
38•下面转义字符中,表示水平制表符的是(C)
A.、0B.\n
C\tD.\'
39.在C程序中,若用基本数据类型所定义的变量调用函数,正确的说法是(
A.由系统自动指定对应实参和形参是否共用存储单元
B.对应实参和形参各占一个独立的存储单元
C.对应实参和形参共用一个存储单元
D.可以由用户指定对应实参和形参是否共用存储单元
40.
若希望函数中的局部变量的值在函数调用结束后不消失而继续保留原值,则该局部变量需要使用的存储类别是()
正确执行
42.设p1和p2是指向同一个字符串的指针变量,且c为字符型变量,则以下不能
的赋值语句是()
A.c=*p1+*p2;
B.p2=*p1;
C.p1=p2;
D.c=*p1*(*p2);
43.以下选项中,对指针变量p的正确操作是()
A.inta[5],*p;
p=&
a;
B.inta[5],*p;
p=a;
C.inta[5];
int*p=a[5];
D.inta[5];
int*p,p2=a;
*p=*p2;
44.对于for(表达式I;
表达式2;
表达式3)语句;
控制循环结束的表达式是(
A.表达式1B.表达式2
C.表达式3D.表达式I和表达式3
45.下面叙述中不正确的是()
A.不同函数中可以使用相同名字的变量
B.形式参数是局部变量
C.在一个函数内部定义的变量只能在本函数范围内有效
D.在一个函数内部的复合语句中定义的变量在本函数范围内有效
46.下面能正确进行字符串赋值操作的是(
A.chars[5]={"
ABCDE"
B.chars[5]={'
A'
'
B'
'
C'
D
C.char*s;
s="
D.char*s;
scanf(”%s"
s);
47.下面程序段的运行结果是(
chars*s="
abcde"
s+=2printf(”%d"
A.cde
B.字符’c'
C.字符’c'
的地址
D.无确定的输出结杲
程序填空(类似实验六、实验七、实验八中的题目)阅读分析题
1•写出下列程序的运行结果。
main()
{inta=10,b=8,c;
c=a;
a=b;
b=c;
printf(”a=%d,b=%d\n”,a,b);
2•写出以下程序的功能。
如果输入14,写出程序的输出结果。
voidmain(void)
{intx;
scanf(”%d”,&
x);
if(x%5==0&
x%7==0)printf(”yes”);
else
printf(”no”);
3.写出下面程序的功能;
如果输入6和9,写出程序的输出结果。
{inta,b,x,y;
scanf(”%d%d”,&
a,&
b);
x=a*a+b*b;
if(x>
100)
{y=x/100;
printf(”%d”,y);
printf(”%d”,a+b);
4.阅读下面的程序并回答问题
{chara[20]=”1234567890”;
inti;
i=8;
printf(”%s\n”,&
a[i-3]);
(1)数组中a[10]号元素中存储的是什么字符?
(2)请写出程序的运行结果。
5.写出下面程序的功能及运行结果。
intn=1,sum=0;
do{sum=sum+n;
n+=2;
}while(n<
100);
printf(”sum=%d\n"
sum);
6•写出下面程序的功能和运行结果。
intfun(inta[][4])
{inti,j,k,tem
tem=a[0][0];
for(I=0;
i<
3;
i++)
for(j=0;
j<
4;
j++)
if(a[i][j]<
tem)tem=a[i][j];
return(tem);
{intb[3][4]={{1,3,-5,7},{2,4,-6,8},{10,20,-30,40}};
printf("
%d\n"
fun(b));
7•阅读下列程序并写出运行结果。
intx=11;
switch(x-1){
caseO:
printf("
x=%d\n"
x++);
break:
case10:
printf("
x=
%d\n"
x*2);
case20:
x*4);
default:
x);
8•阅读下列程序并写出运行结果。
{floatx;
inta=0;
scanf(”%f"
x);
switch(x/10-5)
{case7:
a++;
case6:
printf("
%d,"
a);
case5:
break;
case4:
default:
a);
case1:
a+=2:
printf(”%d、n"
a);
(1)当程序运行后输入115.5后,写出程序的执行结果。
(2)当再次运行程序后输入45后,写出程序的执行结果。
9•下列程序中字符串中各单词之间有一个空格,写出程序的输出结果。
#inelude<
string.h>
#include<
stdio.h>
{charstr1[]="
Howdoyoudo”;
puts(str1);
strcpy(str1+str1en(str1)/2,"
esshd'
printf("
%s\n"
str1);
10.写出下列程序的功能和运行结果。
reverse(char*s)
{char*t,ch;
for(t=s+strlen(s)-1;
s<
t;
s++,t--)
{ch=*s;
*s=*t;
*t=ch;
{char*s仁"
123456"
reverse(s1);
%s\n"
s1);
11.阅读下列程序,当依次输入11,l2,l3,14,16这5个数时,请写出程序的运行结果。
intx,i,s=O;
for(i=O;
5;
i++){
scanf(”%d"
if(x%2)continue;
%d\t"
x);
s+=x;
\n"
s=%d\n"
111213141G
12141G
s=^2
Pressanyheytocontinue
12•阅读下列程序并写出运行结果。
voidf1(char*t,char*s);
charsi:
20]="
abcdl2345"
t1:
20]="
xyz"
printf(”%s\n%s\n"
s1,t1);
f1(t1,s1);
printf(”%s\n"
t1);
voidf1(char*t,char*s)
while((*t=*s)!
='
\0'
){
t++;
s++;
13•阅读下列程序序并写出运行结果。
intfun(inty);
intx[4]={3,5,7,0},s=0,i=0;
while(x[i]){
s+=fun(x[i]);
i++;
intfun(inty)
staticinta=O;
a=a+y;
returna;
14•阅读下面程序,写出运行结果。
#include<
voidf(char*s)
char*t,c,*p=s;
for(t=s+strlen(s)-1;
s<
s++,t)
C=*s,*s=*t,*t=c;
%s\n"
p);
voidmain(void)
chara[20]="
abcdefg"
f(a);
15.阅读下列程序序并写出运行结果。
{ints,p;
s=p=5;
p=++s;
p++;
++p;
printf(”%d\n"
16.阅读下列程序序并写出运行结果。
voidf()
{inta=3;
staticintb=4;
a=a+1;
b=b+1;
printf(〃a=%d,b=%d\n〃,a,b);
voidmain()
f();
17•阅读下列程序序并写出运行结果。
{intx=1,y=1,i=1;
{x=++x+y;
y=x+y--;
i++;
x=%dy=%dn"
x,y);
}while(i<
=3);
18•阅读下列程序序并写出运行结果。
{inta[]={10,20,30,40,50,60},*p;
p=a;
p++;
*(p+3)+=1;
%d\n"
*p);
*(p+3));
编程
1•从键盘输入10个整数存放到数组中,求该数组中所有正数的累加和并输出。
2•若有n行n列数组,试编写一程序,分别求出两条对角线元素之和。
(从键盘输入n*n
个整型数,n<
20)
3•从键盘输入10个整数,编程求其中大于3且小于100的数的平均值并输出结果。
4•从键盘输入10个整数存放到数组中,计算数组中下标为偶数的所有元素的积。
5•编程求20至100之间素数的累加和并输出该累加和。
6•从键盘上输入30个整数,输出其中能被3整除的数,并求出所有能被3整除的数之和。