C语言复习题.docx
《C语言复习题.docx》由会员分享,可在线阅读,更多相关《C语言复习题.docx(29页珍藏版)》请在冰豆网上搜索。
![C语言复习题.docx](https://file1.bdocx.com/fileroot1/2023-2/24/14e48ed5-a49b-4a90-8b8e-c4d7ffe88bd9/14e48ed5-a49b-4a90-8b8e-c4d7ffe88bd91.gif)
C语言复习题
c语言程序设计复习题
一、选择题
(1)算法具有五个特性,以下选项中不属于算法特性的是(B)
(A)有穷性(B)简洁性(C)可行性(D)确定性
(2)一个C语言程序是由(A)。
(A)一个主程序和若干子程序组成(B)函数组成
(C)若干过程组成(D)若干子程序组成
(3)以下叙述中正确的是(C)
(A)用C语言实现的算法必须要有输入和输出操作
(B)用C语言实现的算法可以没有输出但必须要有输入
(C)用C程序实现的算法可以没有输入但必须要有输出
(D)用C程序实现的算法可以既没有输入也没有输出
(4)如果有定义:
inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为9的表达式是B。
(A)*p+8(B)*(p+8)(C)*p+=9(D)p+8
(5)以下选项中,不能作为合法常量的是(B)
(A)1.234e04(B)1.234e0.4(C)1.234e+4(D)1.234e0
(6)下列叙述中正确的是(C)
(A)break语句只能用于switch语句
(B)在switch语句中必须使用default
(C)在switch语句中break语句总是case配对使用
(D)在switch语句中,不一定使用break语句
(7)有以下程序
main()
{intm,n,p;
scanf("m=%dn=%dp=%d",&m,&n,&p);
printf("%d%d%d\n",m,n,p);
}
若想从键盘上输入数据,使变量M中的值为123,N中的值为456,P中的值为789,则正确的输入是(A)
(A)m=123n=456p=789(B)m=123n=456p=789
(C)m=123,n=456,p=789(D)123456789
(8)有以下程序
main()
{inta,b,d=25;
a=d/10%9;b=a&&(-1);
printf("%d,%d\n",a,b);
}
程序运行后的输出结果是(B)
(A)6,1(B)2,1(C)6,0(D)2,0
(9)在嵌套使用if语句时,C语言规定else总是(A)
(A)和之前与其具有相同缩进位置的if配对
(B)和之前与其最近的if配对
(C)和之前与其最近的且不带else的if配对
(D)和之前的第一个if配对
(10)有以下程序main(){inta=0,b=0;
a=10;b=20;printf("a+b=%d\n",a+b);
}程序运行后的输出结果是(B)(A)a+b=10(B)a+b=30(C)30(D)出错
11.在C程序中,用__B_表示逻辑值“真”。
A、1B、非0的数C、非1的数D、大于0的数
12.以下不能做为C语言标识符的是B
A、_1234_B、2_int_C、int_2_D、_1_2
13.若有定义语句:
inta=10;doubleb=3.14;,则表达式'A'+a+b值的类型是C。
A、char B、int C、double D、float
14.表达式3.6-5/2+1.2+5%2的值是D。
A、4.3B、4.8C、3.3D、3.8
15.若有定义语句:
intx=12,3=8,z;,在其后执行语句z=0.9+x/y;,则Z的值为。
A、1.9B、1C、2D、2.4
16.C语言对嵌套if语句的规定是else总是与A配对。
A、之前最近的尚未配对的ifB、第一个if
C、缩进位置相同的ifD、最前面的if
17、在C语言程序中,__A__是在所有函数外部声明的。
A、全局变量B、全程变量C、外部变量D、内部变量
18、若有定义:
inta,b;,通过语句scanf("%d;%d",&a,&b);,能把整数3赋给变量a,5赋给变量b的输入数据是__C___。
A、35 B、3,5 C、3;5 D、35
19、若有定义语句:
intk1=10,k2=20;,执行表达式(k1=k1>k2)&&(k2=k2>k1)后,k1和k2的值分别为__B__。
A、0和1 B、0和20 C、10和1 D、10和20
20.下面C代码的输出结果是__B___。
intanswer,result;
answer=100;result=answer-10;
printf(“Theresultis%d”,result+5);
A、Theresultis90B、Theresultis95
C、Theresultis10D、Theresultis100
21.用来将两个字符串合并为一个字符串的函数是__A___。
A、strcat()B、strcpy()C、strlen()D、length()
22.若用数组名作为函数调用的实参,传递给形参的是A。
A、数组的首地址B、数组中第一个元素的值
C、数组中的全部元素的值D、数组元素的个数
23.若有定义int*p,m=5,n;以下程序段正确的是D。
A、p=&n;scanf(“%d”,&p);B、p=&n;scanf(“%d”,*p);
C、scanf(“%d”,&n);*p=n;D、p=&n;*p=m;
24.在C语言中,若有如下定义:
structstudent
{charname[18];intage;charsex;};structstudenta;
则结构变量a占用内存字节数是C。
A、3B、20C、21D、不确定
25.下列程序段的输出结果是A
A)2143B)1212C)1234D)2112
voidfun(int*x,int*y)
{printf(“%d%d”,*x,*y);*x=3;*y=4;}
main()
{intx=1,y=2;
fun(&y,&x);
printf(“%d%d”,x,y);
}
26.以下程序运行结果是(A)
main()
{inta[]={3,4,5,6,7},y=1,x;
for(x=0;x<3;x++)y=y+a[x+1];
printf(“%d\n”,y);
}
A)16B)17
C)19D)20
27.在循环结构的循环体中执行break语句,其作用是(C)
A)结束本次循环,进行下次循环
B)继续执行break语句之后的循环体中各语句
C)跳出该循环体,提前结束循环
D)终止程序运行
28.C语言的简单数据类型包括(D)
A)整型、实型、逻辑型B)整型、实型、字符型、逻辑型
C)整型、字符型、逻辑型D)整型、实型、字符型
29.下列程序段的运行结果是(B)
inti=1,a[]={1,5,10,9,13,7};
while(a[i]<=10){a[i]=a[i]+2;i++;}
for(i=0;i<6;i++)printf(“%d”,a[i]);
A)271211139B)171211137
C)171211139D)17129137
30.对for(表达式1;;表达式3)可理解为(B)
A)for(表达式1;0;表达式3)
B)for(表达式1;1;表达式3)
C)for(表达式1;表达式1;表达式3)
D)for(表达式1;表达式3;表达式3)
31.执行以下语句后b的值为(B)
inta=5,b=6,w=1,x=2,y=3,z=4;
b=(a=w>x)&&(b=y>z);
A)6B)0C)1D)4
32.阅读以下程序,当输入数据的形式为:
25,13,10,正确的输出结果为(“CR”表示回车)(A)
main()
{intx,y,z;
scanf(“%d%d%d”,&x,&y,&z);
printf(“x+y+z=%d\n”,x+y+z);
}
A、x+y+z=48B、x+y+z=35C、x+z=35D、不确定值
33.C语言中while与do---while语句的主要区别是(A)
A)do---while的循环体至少无条件执行一次
B)do---while允许从外部转到循环体内
C)do---while的循环体不能是复合语句
D)do---while的循环体不能提前结束
34.以下正确的描述是(B)
在C语言程序中:
A)函数的定义可以嵌套,但函数的调用不可以嵌套
B)函数的定义不可以嵌套,但函数的调用可以嵌套
C)函数的定义和函数的调用均不可以嵌套
D)函数的定义和函数的调用均可以嵌套
35.以下不正确的描述是(D)
A)在函数外部定义的变量是全局变量
B)在函数内部定义的变量是局部变量
C)函数的形参是局部变量
D)局部变量不能与全局变量同名
36.在C程序中,用(B)表示逻辑值“真”。
A、1B、非0的数C、非1的数D、大于0的数
37.C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符(C)。
(A)必须为字母
(B)必须为下划线
(C)必须为字母或下划线
(D)可以是字母、数字和下划线中任一种字符
38.一个C语言程序的执行是从(A)。
(A)本程序的main函数开始,到main函数结束
(B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
(C)本程序的main函数开始,到本程序文件的最后一个函数结束
(D)本程序文件的第一个函数开始,到本程序的main函数结束
39.表达式3.6-5/2+1.2+5%2的值是(D)。
A、4.3B、4.8C、3.3D、3.8
40.合法的数组定义是(D)。
(A)inta[]=“string”;(B)inta[5]={0,1,2,3,4,5};
(C)chara=“string”;(D)chara[]={‘0’,‘1’,‘2’,‘3’,‘4’,‘5’};
41.C语言对嵌套if语句的规定是else总是与(A)配对。
A、之前最近的尚未配对的ifB、第一个if
C、缩进位置相同的ifD、最前面的if
42、以下程序段的输出结果是(A)。
inta=1234;
printf("%2d\n",a);
(A)12(B)34(C)1234(D)提示出错、无结果
43.对于while语句,错误的说法是(B)。
A、用条件控制循环的执行次数B、循环体至少要执行一次
C、循环体有可能一次也不执行D、循环体中可以包含若干条语句
44、下面的程度段的循环次数是(B)。
for(i=2;i==0;)printf(“%d”,i--);
A、无限次B、0次C、1次D、2次
45.已知:
inta[2][3]={1,2,3,4,5,6};,则a[1][2]的值为(C)。
(A)4(B)2(C)6(D)下标超出范围
46.表达式strlen(“hello”)的值是(B)。
A、4B、5C、6D、7
47.若用数组名作为函数调用的实参,传递给形参的是(A)。
A、数组的首地址B、数组中第一个元素的值
C、数组中的全部元素的值D、数组元素的个数
48.已知函数abc的定义为:
Voidabc()
{…}
则函数定义中void的含义是(A)。
(A)执行函数abc后,函数没有返回值(B)执行函数abc后,函数不再返回
(C)执行函数abc后,可以返回任意类型(D)以上三个答案全是错误的
49.对以下语句的正确理解是(B)。
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)因为数组长度与初值的个数不相同,所以此语句不正确
50.阅读以下程序,当输入数据的形式为25,13,10时,正确的输出结果为()。
main(D)
{
intx,y,z;
scanf("%d%d%d",&x,&y,&z);
printf("x+y+z=%d\n",x+y+z);
}
(A)x+y+z=48
(B)x+y+z=35
(C)x+z=35
(D)不确定值
二、阅读程序,写出程序的正确运行结果。
1.以下程序运行后的输出结果是____
#defineS4
main()
{inti=6,j=8;
printf("%d\n",S*i*j);
}
答案:
_192___
2.以下程序运行后的输出结果是____
main()
{inta,b,c;
a=10;b=20;c=(a%b<1)||(a/b>1);
printf("%d%d%d\n",a,b,c);
}
答案:
10200
3.已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:
B<回车>33<回车>.则输出结果是_____
#include
main()
{chara,b;
a=getchar();
scanf("%d",&b);
a=a-'A'+'0';b=b*2;
printf("%c%c\n",a,b);
}
答案:
1B
4、floatf=3.1415927;
printf(“%f,%5.4f,%3.3f”,f,f,f);
则程序的输出结果是:
3.141593,3.1416,3.142.
5、intx=6,y=7;
printf(“%d,”,x++);
printf(“%d\n”,++y);
程序的输出结果是 :
6,8
6.从键盘上输入若干个学生成绩,统计并输出最高成绩和最低成绩,输入负数时结束。
#include
main()
{floats,gmax,gmin;
scanf("%f,",&s);
gmax=s;gmin=s;
while(s>0)
{if(s>gmax)gmax=s;
if(sscanf("%f,",&s);}
printf("gmax=%f\ngmin=%f\n",gmax,gmin);
}
7.对输入的一个整数进行判断,若是偶数,输出ever,否则输出odd,在子函数fun2的功能是判定整数是否为偶数,若是偶数,返回1,否则返回0。
#include
intfun2(intx)
{if(x%2==0)return1;
return0;}
main()
{intn;
scanf("%d",&n);
if(fun2(n)或fun2(n)==1)printf("even\n");
elseprintf("odd\n");;}
8.#include
main()
{inta,b,product;
a=30;b=20;
product=a*b;
printf(“a*b=%d\n”,product);
}
运行结果:
a*b=600
9.#include
main()
{inta,b;
floatx,y;
a=12;b=-24;
a=a+b;
x=3.14;
y=x*5*5;
printf(“\na=%d”,a);
printf(“\ny=%f”,y);
}
运行结果:
a=-12
y=78.5
10.#include
main()
{inta,b,c;
a=10;b=50;c=30;
if(a>b)a=b;
b=c;
c=a;
printf(“a=%d,b=%d,c=%d\n”,a,b,c);
}
运行结果:
a=10,b=30,c=10
11.#include
main()
{inta=1,b=10;
do
{b-=a;
a++;
}while(b--<10);
printf(“a=%d,b=%d\n”,a,b);
}
运行结果:
a=256,b=32651
12.#include
main()
{intk;
inta[3][3]={1,2,3,4,5,6,7,8,9};
for(k=0;k<3;k++)
printf(“%d,\n”,a[k][2-k]);
}
运行结果:
3,
5,
7,
13.#include
fun(intx,inty)
main()
{intx=2,y=3;
printf(“%d,%d\n”,x,y);
fun(x,y);
printf(“%d,%d\n”,x,y);
}
fun(intx,inty)
{intt;
t=x;
x=y;
y=t;
printf(“%d,%d\n”,x,y);
}
运行结果:
2,3
3,2
2,3
14.要求以下程序实现输出x,y,z三个数中的最大者,请在_______上填写正确内容。
#include
main()
{intx=23,y=34,z=17;
intu,v;
if(___x>y________)u=x;
elseu=y;
if(______u>z_____)v=u;
elsev=z;
printf("v=%d",v);
}
15.以下程序的功能是以每行4个数据的形式输出a数组元素,请在_______上填写正
确内容。
#include
#defineN20
main()
{inta[N],i;
for(i=0;i<=N-1;i++)
scanf("%d",__&a[i]__________);
for(i=0;i<=N-1;i++)
{if(i%4==0)printf("\n");
printf("%3d",___a[i]_______);
}
printf("\n");
}
三、填空题
1、一个C程序总是从main()或主函数开始运行的。
2、C语言中普通整型变量的类型说明符为 int ,在内存中占 2字节,有符号普通整型的数据范围是 -32768~+32767 。
3、表达式7+8>2&&25%5的结果是_________0______________。
4、执行下列语句inta=8; a+=a-=a*a;后,a的值是 -112 。
5、有如下语句:
char A[]={”Iamastudent”};该字符串的长度是 14 ,A[3]= ‘m’ 。
6、符号”a”和’a’的区别是 ”a”是字符串常量,而’a’是字符常量 。
7、所谓“指针”就是 存放地址值的变量或常量,或者答地址 。
“&”运算符的作用是 取运算对象的地址 。
“*”运算符的作用是取指针变量所指的内容。
8、有如下输入语句:
scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);为使变量a的值为1,b的值为3,c的值为2,从键盘输入数据的正确形式应是 a=1,b=3,c=2 。
9、C语言的三种基本程序结构是顺序结构__、选择结构_、循环结构__。
10、C语言的三个循环语句分别是for语句_、_while语句__、do-while语句_。
11.能表述“2020&&x<30||x<-100。
12、若有定义:
inta[3][4]={{7,10},{4},{2,3,5,7}};则初始化后a[0][1]的值为,a[1][2]的值为,a[2][1]的值为。
13.若在程序中用到“putchar”,应在程序开头写上包含命令,若在程序中用到“strlen()”函数时,应在程序开头写上包含命令。
14.有以下程序(注:
字符a的ASCIl码值为97)
#include
main()
{char*s={"abe"};
do{printf("%d",(*s)%10);++s;}while(*s);
}
程序运行后的输出结果是_781____。
15、下列程序段的输出结果是_5__。
int*p,*q,k=5,j=6;q=&k;p=q;q=&j;
printf("%d",*p);
16.C语言程序的语句结束符是_分号_________。
17.编写一个C语言程序,上机运行需要经过_编辑、_编译_、_连接、_运行___、
_四个步骤。
18、若有定义:
inta[3][4]={{1,2}{0}{4,6,8,10}};则初始化后a[1][2]的值为
0,a[2][1]得到的值为6
19.以下程序的运行结果是60—69<60error!
main()
{
chargrade=’C’;
switch(grade)
{case‘A’:
printf(“85—100\n”);
case‘B’:
printf(“70—84\n”);
case‘C’:
printf(“60—69\n”);
case‘D’:
printf(“<60\n”);
default:
printf(“error!
\n”);
}
}
20.执行以下程序后,输出的“#”的个数为20。
for(i=1;i<5;i++)
for(j=1;j<=5;j++)
printf("#");
四、仔细阅读如下程序,按题意填