C语言试题及答案.docx
《C语言试题及答案.docx》由会员分享,可在线阅读,更多相关《C语言试题及答案.docx(32页珍藏版)》请在冰豆网上搜索。
![C语言试题及答案.docx](https://file1.bdocx.com/fileroot1/2023-2/6/78216e96-412b-4ab1-a497-f885a5b4baaa/78216e96-412b-4ab1-a497-f885a5b4baaa1.gif)
C语言试题及答案
第一章
习题1
一、选择题
1.以下叙述正确的是。
A)在C程序中,主函数必须位于程序的最前面
B)在C程序中,一行只能写一条语句
C)C程序的基本结构是程序行
D)C语句是完成某种程序功能的最小单位
2.一个C程序的执行是从。
A)本程序的主函数开始,到本程序的主函数结束
B)本程序的第一个函数开始,到本程序的最后一个函数结束
C)本程序的主函数开始,到本程序的最后一个函数结束
D)本程序的第一个函数开始,到本程序的主函数结束
3.以下叙述正确的是。
A)C语句的结束符为分号
B)C语句的结束符为逗号
C)C语句的结束符为冒号
D)C语句的结束符为句号
4.以下叙述正确的是。
A)在一个C程序中,有且只能有一个主函数
B)在一个C程序中,可以有两个或两个以上的主函数
C)在一个C程序中,主函数可以由用户来命名
D)在一个C程序中,主函数名(main)后面的括号可以省略
5.以下叙述正确的是。
A)计算机的硬件系统可以直接识别并执行汇编语言程序
B)计算机的硬件系统可以直接识别并执行高级语言程序
C)计算机的硬件系统可以直接识别并执行机器语言程序
D)计算机的硬件系统可以直接识别并执行C语言程序
6.以下叙述不正确的是。
A)在C程序中,主函数、子函数都可以由用户来命名
B)在C程序中,子函数可以由用户来命名,但主函数不能
C)在C程序中,主函数名只能用main
D)在C程序中,主函数不一定要放在子函数的前面
参考答案:
1、D2、A3、A4、A5、C6、A
第二章
习题2
一、选择题
1.C语言中的变量名只能由字母、数字和下画线三种字符组成,且第一个字符。
A)必须为字母B)必须为下画线
C)必须为字母或下画线D)可以是字母、数字或下画线中的任意一种
2.字符(char)型数据在微机内存中的存储形式是。
A)反码B)补码C)EBCDIC码D)ASCII码
3.在C语言中,要求运算量必须是整型或字符型的运算符是。
A)&&B)%C)!
D)+
4.设inta=12,则执行完语句a+=a-=a*a后,a的值是。
A)552B)264C)144D)-264
5.下面程序的输出结果是。
#include"stdio.h"
intmain()
{
inta;
printf("%d\n",(a=3*5,a*4,a+5));
return0;
}
A)65B)20C)15D)10
6.下面程序的输出结果是。
#include"stdio.h"
intmain()
{
intx=023;
printf("%d\n",--x);
return0;
}
A)17B)18C)23D)24
7.下面程序的输出结果是。
#include"stdio.h"
intmain()
{
intx=10,y=3;
printf("%d\n",y=x/y);
return0;
}
A)0B)1C)3D)不确定的值
8.已知字母A的ASCII码为十进制数65,下面程序的输出结果是。
#include"stdio.h"
intmain()
{
charch1,ch2;
ch1='A'+'5'-'3';
ch2='A'+'6'-'3';
printf("%d,%c\n",ch1,ch2);
return0;
}
A)67,DB)B,CC)C,DD)不确定的值
9.以下程序的输出结果是。
#include"stdio.h"
intmain()
{
intx=10,y=10;
printf("%d%d\n",x--,--y);
return0;
}
A)1010B)99C)910D)109
10.下面程序的输出结果是。
#include"stdio.h"
intmain()
{
inti,j,m,n;
i=8;j=10;
m=++i;
n=j++;
printf("%d,%d,%d,%d",i,j,m,n);
return0;
}
A)8,10,8,10B)9,11,8,10
C)9,11,9,10D)9,10,9,11
参考答案:
一、选择题
1、C2、D3、B4、D5、B
6、B7、C8、A9、D10、C
二、填空题
1、2.52、103、ab4、-4,-65、int
第三章
习题3
一、选择题
1.inta,b;,要通过scanf(”%d:
%d”,&a,&b);使a得到5,b得到6,则正确的输入形式为选项。
A)56B)5,6C)5:
6D)5;6
2.在printf("a=%c,b=%c",a,b);中,变量a,b的类型应该是选项。
A)整型或字符型B)实型或字符型
C)实型或字符串型D)整型或实型
3.设有变量定义floata=12.34567,b=22.3456;,则printf("a=%,8.3f,%,-8.2f",a,b);的输出结果为选项。
A)12.34567,22.34567B)12.346,22.35
C)12.346,22.35D)12.345,22.34
4.putchar(97);的输出结果是选项。
A)bB)aC)97.0D)97
5.通过scanf("a=%d,b=%d",&a,&b);使a得到5,b得到6,则正确的输入形式为选项。
A)5,6B)a=5,b=6C)a=5,b=6D)5;6
6.有定义intc=65;则printf("%d,%u,%c",a,a,a);的输出结果为选项。
A)65,65,AB)65,65,65C)65,-65,AD)6565A
7.对于scanf("%d%*d%d",&a,&b);,输入123,则变量b的值是选项。
A)1B)2C)3D)*
8.对于scanf("%3d%2d",&a,&b);从键盘上输入1234567,变量a的值是选项。
A)1234567B)123C)1234D)12345
9.下面程序段的输出结果是选项。
inta=010,b=0x10,c=10;
printf("%d,%d,%d\n",a,b,c);
A)10,10,10B)8,16,10C)8,10,10D)8,8,10
10.如果从键盘上输入D并<回车>,则下面程序的输出结果是选项。
#include"stdio.h"
intmain()
{
charc1,c2;
c1=getchar();
c2=c1+3;
printf("%c,%d\n",c2,c2);
return0;
}
注意:
字母A的ASCII码值为65。
A)G,71B)G,68C)D,71D)连接出错
二、填空题
1.下面程序从键盘输入十进制数65,输出结果是41,请填写程序。
#include"stdio.h"
intmain()
{
intd;
printf("inputanumber:
")
scanf("
(1)",&d);
printf("%x",d);
return0;
}
2.请根据输入语句scanf,填写变量c的说明。
#include"stdio.h"
intmain()
{
(1)
printf("\ninputarealnumbers:
\n")
scanf("%c",&c);
printf("%d",c);
return0;
}
3.字符型变量a的值未知,程序的功能是从键盘上为a提供一个字符,输出其后续字符,请选择合适的输入函数填空。
#include"stdio.h"
intmain()
{
chara;
a=
(1);
puthar(a+1);
return0;
}
4.下面程序的功能是从键盘上任意输入一个华氏温度f,要求输出对应的摄氏温度C,转换公式为C=5/9(F-32),请填写程序。
#include"stdio.h"
intmain()
{
floatf,c;
printf("PleaseinputF:
\n")
scanf("%f",&f)
c=
(1);
printf("f=%f,c=%f",f,c);
return0;
}
(提示:
5/9要写成5.0/9,或5/9.0,否则结果为0,请思考。
)
5.下面程序的功能是求任意两个整数的和,如从键盘输入3,5,则程序的输出结果是3+5=8,请在空白处填写合适的内容。
#include"stdio.h"
intmain()
{
inta,b,c;
printf("\ninputtwointegerumbers:
\n")
scanf("%d,%d",&a,&b);
c=a+b;
printf("
(1)",a,b,c);
return0;
}
参考答案:
一、选择题:
1、C2、A3、B4、B5、B
6、A7、C8、B9、B10、A
二、填空题
1、%d2、charc;3、getchar()
4、5.0/9*(F-32)或5/9.0*(F-32)或5.0/9.0*(F-32)
5、%d+%d=%d
第四章
习题
一、选择题
1.如果c为字符型变量,下面可以判断c是否为空格。
A)if(c==32)B)if(c='')
C)if(c='32')D)if(c='')
2.下列程序段的输出结果是。
intx=1,y=1,z=1;
x+=y+=z;
printf("%d\n",xy:
x);
A)3B)2C)1D)4
3.有如下程序:
#include"stdio.h"
intmain()
{
intx=1,a=0,b=0;
switch(x)
{
case0:
b++;
case1:
a++;
case2:
a++;b++;
}
printf("a=%d,b=%d\n",a,b);
return0;
}
该程序的输出结果是。
A)a=2,b=1B)a=1,b=1
C)a=1,b=0D)a=2,b=2
4.switch语句中default的位置。
下列程序段执行后的输出结果是。
#include"stdio.h"
intmain()
{
intn='c';
switch(n++)
{
default:
printf("error");break;
case'a':
case'A':
case'b':
case'B':
printf("good");break;
case'c':
case'C':
printf("pass");
case'd':
case'D':
printf("warn");
}
return0;
}
A)goodB)passwarnC)passD)goodpass
5.下列程序段所表示的逻辑关系是。
if(a
{
if(c==d)
{
x=1;
}
else
{
x=2;
}
}
┌1a
A)x=┤
└2a≥b且c≠d
┌1a
B)x=┤
└2a≥b
┌1a
C)x=┤
└2a
┌1a
D)x=┤
└2c≠d
6.与条件语句y=(x>0?
1:
x<0?
-1:
0);功能相同的if语句是。
A)if(x>0)y=1;B)if(x)
elseif(x<0)y=-1;if(x>0)y=1;
elsey=0;elseif(x<0)y=-1;
elsey=0;
C)y=-1;D)y=0;
if(x)if(x>=0)
if(x>0)y=1;if(x>0)y=1;
elseif(x==0)y=0;elsey=-1;
elsey=-1;
7.两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是。
#include"stdio.h"
intmain()
{
intx;
scanf("%d",&x);
if(x++>5)
{
printf("%d",x);
}
else
{
printf("%d\n",x--);
}
return0;
}
A)7和5B)6和3C)7和4D)6和4
8.以下程序的输出结果是。
#include"stdio.h"
intmain()
{
inta,b,d=241;
a=d/100%6;
b=1&&(-1);
printf("%d,%d\n",a,b);
}
A)6,1B)2,1C)6,0D)2,0
9.已知intx=10,y=20,z=30,则执行
if(x>y)
z=x;x=y;y=z;
语句后,x、y、z的值是。
A)x=10,y=20,z=30B)x=20,y=30,z=30
C)x=20,y=30,z=10D)x=20,y=30,z=20
二、程序填空题
1.下面的程序完成如下函数的计算,请填空。
#include"stdio.h"
(1)
intmain()
{
intx,y;
if(x<0)
(2)
elseif(3)
y=sqrt(x);
elsey=x*x;
printf("%d",y);
return0;
}
2.下面的程序完成从三个数中找出最大数,请填空。
#include"stdio.h"
intmain()
{
inta,b,c,t;
scanf("%d,%d,%d",&a,&b,&c);
printf("%d,%d,%d\n",a,b,c);
if(a
(1)/*a中存放a、b的大值*/
if
(2)a=c;/*将a,b的大值a与c比较,大者再放入a中*/
printf("%d\n",a);
return0;
}
3.下面程序从键盘上输入两个数,按升序输出这两个数。
请在两个注释行/*************************/之间填写上适当的语句。
#include"stdio.h"
intmain()
{
inta,b;
/*************************/
/*************************/
printf("a=%d,b=%d\n",a,b);
return0;
}
4.下面程序的功能是从键盘上输入一个阳历月份,使用if语句,输出该月的天数(不考虑闰年)。
请把程序段填入两个/*************************/注释行之间。
#include"stdio.h"
intmain()
{
intmonth,day;
scanf("%d",&month);
/*************************/
/*************************/
return0;
}
参考答案
一、选择题
1、A2、A3、A4、B5、C
6、A7、A8、B9、B
二、填空题
1、
(1)#include“math.h”
(2)y=2*x+1(3)(x<=10)
2、
(1)a=b
(2)a3、intt;
scanf(“%d,%d”,&a,&b);
if(a>b){t=a;a=b;b=t;}
4、
if(month==2)day=29;
elseif(month==4||month==6||month==9||month==11)
day=30;
elseday=31;
printf("month=%d,day=%d\n",month,day);
第五章
习题
一、选择题
1.while(!
x)中的!
x与下式中的______等价。
A)x==0B)x!
=0C)x==1D)x!
=1
2.若i为整型变量,则以下循环语句的循环次数是______。
for(i=2;i==0;)
printf("%d",i--);
A)无限次B)0次C)1次D)2次
3.下面程序段的运行结果是______。
intn=0;
while(n++<=2);
printf("%d",n);
A)2B)3C)4D)有语法错误
4.下列_____循环不是死循环。
A)for(y=0;x=1;++y);B)for(;;x=0);
C)while(x=1){x=1;}D)for(y=0,x=1;x>y;x+=i);
5.有如下程序段:
intk=10;
while(k=0)k=k-1;
以下描述正确的是______。
A)while循环10次B)while循环是无限循环
C)while循环执行1次D)while循环一次也不执行
6.以下描述正确的是______。
A)continue语句的作用是结束整个循环
B)break语句只能使用在循环体内和switch结构内
C)在循环体内使用continue语句和break语句的作用相同
D)从嵌套的多层循环中退出,只能使用goto语句
7.下面程序的输出结果是______。
#include"stdio.h"
intmain()
{
inti;
for(i=1;i<6;i++)
{
if(i%2)
{
printf("#");
continue;
}
printf("*");
}
printf("\n");
return0;
}
A)#*#*#B)#####C)*****D)*#*#*
8.下面程序段的运行结果是______。
for(x=10;x>3;x--)
{
if(x%3)
x--;
--x;--x;
printf("%d",x);
}
A)63B)74C)62D)73
9.以下程序段的执行结果是______。
inti,j,m=0;
for(i=1;i<=15;i+=4)
{
for(j=3;j<=19;j+=4)
{
m++;
}
}
printf("%d\n",m);
A)12B)15C)20D)25
10.函数pi的功能是根据以下近似公式求π值:
(π*π)/6=1+1/(2*2)+1/(3*3)+……+1/(n*n)
请填空,完成求π的功能。
#include"stdio.h"
#include"math.h"
intmain()
{
doubles=0.0;
inti,n;
printf("Pleaseinputn:
");
scanf("%d",&n);
for(i=1;i<=n;i++)
s=s+______;
s=(sqrt(6*s));
printf("s=%e",s);
return0;
}
A)1/i*iB)1.0/i*i
C)1.0/(i*i)D)1.0/(n*n)
二、填空题
1.在三种循环结构中,先执行循环操作内容(即循环体),后判断控制循环条件的循环结构是______循环结构。
2.三种循环语句都能解决循环次数已经确定的循环,其中______循环语句最适合。
3.以下程序的功能是:
从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入,请填空。
#include"stdio.h"
int