c语言答案.docx
《c语言答案.docx》由会员分享,可在线阅读,更多相关《c语言答案.docx(43页珍藏版)》请在冰豆网上搜索。
![c语言答案.docx](https://file1.bdocx.com/fileroot1/2023-1/30/df766693-93ab-4c93-998e-801b573e36d2/df766693-93ab-4c93-998e-801b573e36d21.gif)
c语言答案
习题一
一、选择题
1.C程序的基本单位是(A)。
A.函数B.文件C.语句D.字符
2.C语言规定,在一个源程序中,main函数的位置C。
A.必须在最开始 B.必须在系统调用的库函数后面
C.可以任意 D.必须在最后
3.C程序中的变量(B)。
A.不用说明B.先说明后引用
C.先引用后说明D.引用和说明顺序无关
4.变量的说明在(B)。
A.执行语句之后B.执行语句之前
C.执行语句当中D.位置无关
5.C语言是一种(C)。
A.机器语言B.符号语言
C.高级语言D.面向对象的语言
6.能将高级语言编写的源程序转换成目标程序的是B。
A.编辑程序B.编译程序
C.解释程序D.连接程序
7.下列各选项都是在C语言程序段中增加的注释,其中注释方法错误的是B。
A.voidmain()/*主函数*/B.voidmain()
{}{pri/*remark*/ntf("student!
");}
C.voidmain()D.voidmain()
{intx/*=10*/;{intx=10;
printf("%d",x);/*printf("%d",x);*/
}}
8.以下叙述中,正确的是C。
A.C程序的基本组成单位是语句B.C程序中的每一行只能写一条语句
C.C语句必须以分号结束D.C语句必须在一行内写完
9.以下叙述中,正确的是A。
A.C程序中,注释部分可以出现在程序中任意合适的地方
B.花括号“{”和“}”只能作为函数体的定界符
C.构成C程序的基本单位是函数,所有函数名都可以由用户命名
D.分号是C语句之间的分隔符,不是语句的一部分
10.以下叙述中,正确的是C。
A.C语言比其他语言高级
B.C语言可以不用编译就能被计算机识别执行
C.C语言以接近英语国家的自然语言和数学语言作为语言的表达形式
D.C语言出现的最晚,具有其他语言的一切优点
二、填空题
1.一个C程序总是从主函数开始执行。
2.结构化程序由顺序、选择、循环三种基本结构构成。
3.一个C程序只有一个名为main的主函数。
4.C程序中的每个语句以分号结束。
5.C程序中,函数由函数首部和函数体组成。
6.每个基本结构有一个入口和一个出口,没有死循环和死语句。
7.算法是计算机解决问题所依据的步骤。
8.C语言中常用的预处理命令有三类,分别是文件包含、宏定义和条件编译。
9.C语言源程序文件的扩展名是c,经过编译后,所生成文件的扩展名是obj,经过连接后,所生成的文件扩展名是exe。
10.C语言中,输入操作是由库函数scanf完成的,输出操作是由库函数printf完成的。
习题二
一、选择题
1.下列数据中属于字符串常量的是(B)。
A.ABCB."ABC"C.'abc'D.'A'
2.在计算机内存中,'\n'占用的字节数是(C)。
A.4B.3C.1D.2
3.字符串"ABC"在内存中占用的字节数是(D)。
A.6B.8C.3D.4
4.在C语言中,合法的长整型常数是(B)。
A.568701400B.0LC.0.03546287D.2.654e11
5.char型常量在内存中存放的是(A)。
A.ASCII代码值B.BCD代码值
C.十进制代码值D.内码值
6.下列各项中正确的标识符是(D)。
A.?
bbB.a=8C.b.βD.b_4
7.下列选项中,合法的C语言关键字是D。
A.VARB.cherC.integerD.default
8.下列不正确的转义字符是D。
A.\\B.\0C.\"D.0x4
9.在C语言中,要求运算对象必须是整型的运算符是D。
A./ B.&& C.!
=D.%
10.若有声明语句:
“charc=256;inta=c;”,则执行该语句后a的值为A。
A.256B.65536C.0D.-1
11.设整型变量a、b的值均为5,则表达式(m=n=a++)/(n=b-2)的值为B。
A.0B.1C.2D.3
12.设a、b均为整型变量,a的值为5,执行下列语句后,b的值不为2的是C。
A.b=a/2B.b=6-(--a)C.b=a%2D.b=(float)a/2
13.执行语句x=(a=3,b=a--)后,x、a、b的值依次是C。
A.3,3,2B.3,2,2C.3,2,3D.2,3,2
14.设有语句inta=3;,则执行了语句a+=a-=a*a;后,变量a的值是D。
A.3B.0C.9D.-12
15.在下列运算符中,优先级最高的是B。
A.&&B.%C.=D.>=
16.设整型变量a的值为3,则计算表达式a---a后,表达式的值为B。
A.1B.0C.2D.表达式出错
17.设整型变量a、b、c的值均为2,表达式(a--)-(b++)+c++的结果是C。
A.6B.9C.2D.表达式出错
18.若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是D。
A.1B.2.5C.2D.2.0
19.下列表达式中符合C语言语法的赋值表达式是C。
A.a=4+b++c=a+8B.a=4+b++=a+8
C.a=(4+b,b++,a+8)D.a=4+b,c=a+8
20.若有以下定义:
chara;intb;floatc;doubled;,则表达式a*b+d-c的值的类型为D。
A.intB.floatC.charD.double
二、填空题
1.在内存中存储"A"要占2个字节,存储'A'要占1个字节。
2.符号常量的定义方法是#define常量名常量。
3.无符号基本整型的数据类型符为unsignedint双精度实型数据类型符为double,字符型数据类型符为char。
4.十进制数673的二进制、八进制和十六进值数分别为1010100001、1241和2A1。
5.在C语言中,书写八进制数时必须加前缀0;书写十六进制数时必须加前缀0x。
6.在微机上,int型、short型、long型、float型和double型数据一般在内存中分别占2字节、2字节、4字节、4字节和8字节。
7.设有下列运算符:
<<、+、++、&&、>=,其中优先级最高的是++,优先级最低的是&&。
8.设x、y为int型变量,且x=1,y=2,则表达式1.0+x/y的值为1.0。
9.设整型变量x、y、z均为5,则:
①执行x-=y-z后,x的值为5。
②执行x%=y+z后,x的值为5。
10.数学式
的C语言表达式为a/b*c)。
11.设x是int型变量,判断x为偶数的关系表达式为x%2==0。
12.已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch=′a′+′8′-′3′的值为102。
13.0≤a≤10的C语言表达式为a>=0&&a<=10。
14.若已有声明"intx=4,y=3;",则表达式"xx++:
y++"的值是3。
15.有声明"floaty=3.14619;intx;",则计算表达式"x=y*100+0.5,y=x/100.0;"后y的值是3.15119。
三、程序阅读题
1.若从键盘输入3,7<回车>,写出下面程序的运行结果。
C=3
#include
voidmain()
{inta,b,c;
scanf("%d,%d",&a,&b);
c=a;
if(a&&b)printf("c=%d\n",c);
elseprintf("c=%d\n",c--);
}
2.写出下面程序的运行结果。
#includea1=84
voidmain()a2=0
{inta=12,a1,a2,a3;a3=0
a1=(a*=2+5);
a2=(a/=a+a);
a3=(a+=a-=a*=a);
printf("a1=%d\na2=%d\na3=%d\n",a1,a2,a3);
}
3.若从键盘输入2,3,4.5,1.6<回车>,写出下面程序的运行结果。
#include
voidmain()表达式的值为:
2.500000
{inta,b;
floatx,y;
scanf("%d,%d,%f,%f",&a,&b,&x,&y);
printf("表达式的值为:
%f\n",(float)(a+b)/2+(int)x%(int)y);
}
4.若从键盘输入3.5,5,6.7<回车>,写出下面程序的运行结果。
#include
voidmain()表达式的值为:
3.500000
{inta;
floatx,y;
scanf("%f,%d,%f",&x,&a,&y);
printf("表达式的值为:
%f\n",x+a%3*(int)(x+y)%2/4);
}
5.若从键盘输入7<回车>8<回车>,写出下面程序的运行结果。
#includea+b=15
voidmain()
{inta,b,c;
printf("enterfirstinteger:
");
scanf("%d",&a);
printf("entersecondinteger:
");
scanf("%d",&b);
c=a+b;
printf("\na+b=%d\n",c);
}
6.先心算出下面程序的输出,然后再执行程序,对照自己的计算结果是否正确,找一找还有哪些不对的地方?
#include
voidmain()
{inta=0,b=1,c=2,d=3;
b=a++&&c++;
d=a++||++c;
printf("a=%d,b=%d,c=%d,d=%d\n",a,b,c,d);
}
7.写出下面程序的运行结果。
#include
voidmain()
{charch=′*′;*
printf("%3c\n",ch);**
printf("%2c%c%c\n",ch,ch,ch);*****
printf("%c%c%c%c%c\n",ch,ch,ch,ch,ch);
}
8.写出下列程序的运行结果。
#include
voidmain()
{charc1=′A′,c2=′B′,c3=′C′,c4=′\101′,c5=′\x42′;
printf("A%cb%c\t%c\tabc\n",c1,c2,c3);
printf("\t\b%c%c",c4,c5);AAbBCabc
}AB
9.写出下面程序的运行结果。
#include
voidmain()
{inti,j,m,n;6,5,6,5
i=5;
j=6;
m=++i;
n=--j;
printf("%d,%d,%d,%d",i,j,m,n);
}
10.写出下面程序的运行结果。
#include
voidmain()
{inta,b,c;
floatx,y;a=3,b=7,c=3,x=7.8
x=3.6;
y=4.2;
a=(int)x;
b=(int)(x+y);
c=a%b;
x=x+y;
printf("a=%d,b=%d,c=%d,x=%f\n",a,b,c,x);
}
习题三
一、选择题
1.printf()函数输出实数时,使用的格式字符是(C)。
A.%dB.%cC.%fD.%o
2.下面变量说明中(C)是正确的。
A.char:
a,b,c;B.chara;b;c;
C.chara,b,c;D.chara,b,c
3.putchar()函数可以向终端输出一个(D)。
A.整型变量表达式值B.实型变量值
C.字符串D.字符或字符型变量值
4.以下能正确地定义整型变量a、b和c并为其赋初值5的语句是C。
A.inta=b=c=5;B.inta,b,c=5;
C.inta=5,b=5,c=5;D.a=b=c=5;
5.若变量a是int类型,并执行了语句:
a='A'+1.6;,则正确的叙述是D。
A.a的值是字符CB.a的值是浮点型
C.不允许字符型和浮点型相加D.a的值是字符'A'的ASCII码值加上1
6.已知ch是字符型变量,下面正确的赋值语句是B。
A.ch='a+b';B.ch='\x7f';C.ch='\08';D.ch="\";
7.设x、y均为float型变量,则以下不合法的赋值语句是A。
A.++x;B.y=((int)x%2)/10;C.x*=y+8;D.x=y=0;
8.以下格式符中,不能用来输入实型数的是D。
A.fB.e(E)C.g(G)D.x
9.若floatnum=123.456,以%+10.4f的格式输出,结果正确的是D。
A.123.456000B.
123.4560C.123.4560D.
+123.4560
10.以下说法正确的是D。
A.输入项可以是一个实型常量
B.只有格式控制,没有输入项,也能进行正确输入,如scanf("a=%d,b=%d");
C.当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf("%4.2f",&f);
D.当输入数据时,必须指明变量的地址,如scanf("%f",&f);
11.阅读以下程序,当输入数据的形式为:
25,13,10〈CR〉,正确的输出结果为A。
#include
voidmain()
{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.不确定值
12.若变量已正确说明为float类型,要通过语句scanf("%f%f%f",&a,&b,&c);给a赋值10.0,b赋值22.0,c赋值33.0,不正确的输入形式是C。
A.10<回车>B.10.0<回车>
22<回车>22.033.0<回车>
33<回车>
C.10.0,22.0,33.0<回车>D.1022<回车>
33<回车>
13.已知i、j、k为int型变量,若从键盘输入"1,2,3<回车>",使i的值为1,j的值为2,k的值为3,以下选项中正确的输入语句是C。
A.scanf("%2d%2d%2d",&i,&j,&k);B.scanf("%d%d%d",&i,&j,&k);
C.scanf("%d,%d,%d",&i,&j,&k);D.scanf("i=%d,j=%d,k=%d",&i,&j,&k);
14.若有以下程序段(n所赋的是八进制数)
intm=32767,n=032767;
printf("%d,%o\n",m,n);
执行后的输出结果是A。
A.32767,32767B.32767,032767
C.32767,77777D.32767,077777
15.下列程序段
inta=1234;
printf("%2d\n",a);
的输出结果是C。
A.12B.34C.1234D.提示出错,无结果
16.设定义:
longx=-123456L,则下列能够正确输出变量x值的语句是B。
A.printf("x=%d\n",x);B.printf("x=%ld\n",x);
C.printf("x=%8dL\n",x);D.printf("x=%LD\n",x);
17.下列程序
#include
voidmain()
{printf("%d\n",NULL);}
运行后的输出结果是A。
A.0B.1C.-1D.NULL没定义,出错
18.下列程序
#include
voidmain()
{charx=0xFFFF;printf("%d\n",x--);}
执行后的输出结果是C。
A.-32767B.FFFEC.-1D.-32768
19.设有如下程序段
intx=2002,y=2003;
printf("%d\n",(x,y));
则以下叙述中正确的是D。
A.输出语句中格式说明符的个数少于输出项的个数,不能正确输出
B.运行时产生出错信息
C.输出值为2002D.输出值为2003
20.有以下程序段
intm=0,n=0;charc='a';
scanf("%d%c%d",&m,&c,&n);
printf("%d,%c,%d\n",m,c,n);
若从键盘上输入:
10A10<回车>,则输出结果是A。
A.10,A,10B.10,a,10C.10,a,0D.10,A,0
二、填空题
1.以下程序的输出结果是x=1y=2*sum*=3
10squaredis:
100。
main()
{intx=1,y=2;
printf("x=%dy=%d*sum*=%d\n",x,y,x+y);
printf("10squaredis:
%d\n",10*10);
}
2.以下程序的输出结果是a=325x=3.14。
main()
{inta=325;doublex=3.1415926;
printf("a=%2dx=%7.2f\n",a,x);
}
3.假设变量a和b均为整型,以下语句可以不借助任何变量把a、b中的值进行交换。
请填空:
a+=b;b=a-b;a-=b;
4.若x为int型变量,则执行以下语句后x的值是-14。
x=7;
x+=x-=x+x;
5.C语句可以分为五类,含7种控制语句、声明语句、表达式语句、空语句和复合语句。
6.赋值语句是由赋值表达式加上一个分号构成。
7.a=12,n=5,表达式a%=(n%=2)值是0。
8.有一个输入函数scanf("%d",k);则不能使float类型变量k得到正确数值的原因是k前无&
和%d与k的类型不一致。
9.putchar()函数可以向终端输出一个字符。
10.已有定义inti,j;floatx;为将-10赋给i,12赋给j,410.34赋给x,则对应以下scanf()函数调用语句的数据输入形式是-12C410.34。
scanf("%o%x%e",&i,&j,&x);
11.pirntf()函数中用到格式符%5s,其中数字5表示输出的字符串占5列,如果字符串长度大于5,则按实际宽度输出。
12.使用getchar()和putchar()函数必须在源程序中加#include"stdio.h"。
13.下面程序的功能为:
输入三角形的三边长,输出三角形的面积。
请将程序填写完整。
#include
voidmain()
{floata,b,c,s,area;
scanf("%f,%f,%f",&a,&b,&c);
s=1.0/2*(a+b+c);
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("area=%7.2f\n",area);
}
14.请写出下列程序的输出结果1,2,3。
#include
voidmain()
{inta=2,b=1,c=3,t;
if(a>b){t=a;a=b;b=t;}
if(a>c){t=a;a=c;c=t;}
if(b>c){t=b;b=c;c=t;}
printf("%d,%d,%d",a,b,c);
}
15.若执行以下程序时,从键盘上输入了5和6,则输出的结果是c=5
1。
#include。
voidmain()
{int a,b,c;
scanf("%d%d",&a,&b);
c=a;
printf("c=%d\n",c);
printf("%d\n",a&&b);
}
习题四
一、选择题
1.执行下面的程序段后,b的值为(B)。
intx=35;
charz='A';
intb;
b=((x&&15)&&(z<'a'));
A.0B.1C.2D.3
2.设a=5,b=6,c=7,d=8,m=2,n=2,执行(m=a>b)&&(n-c>d)后n的值为(B)。
A.1B.2C.3D.4
3.若k是int型变量,且有下面的程序段,输出结果是(A)。
K=-3;
if(k<=0)printf("####");
elseprintf("&&&&");
A.####B.&&&&
C.####&&&&D.有语法错误,无输出结果
4.设A、B和C都是int型变量,且A=3,B=4,C=5,则下面表达式中值为0的达式是(D)。
A.A&&BB.A<=B
C.A‖B+C&&BD.!
((A
C‖1)
5.阅读程序:
#include"stdio.h"
main()
{floatx,y;
scanf("%f",&x);
if(x<0.0)y=0.0;
elseif((x<5.0)&&(x!
=2.0))
y=1.0/(x+2.0);
elseif(x<10.0)y=1.0/x;
elsey=10.0;
printf("%f\n",y);
}
若运行时从键盘上输入2.0,则上面程序的输出结果是(C)
A.0.000000B.0.250000
C.0.500000D.1.000000
6.阅读程序:
#include"stdio.