C语言程序设计基础教程习题答案资料.docx
《C语言程序设计基础教程习题答案资料.docx》由会员分享,可在线阅读,更多相关《C语言程序设计基础教程习题答案资料.docx(100页珍藏版)》请在冰豆网上搜索。
C语言程序设计基础教程习题答案资料
习题答案
第1章
1.1填空题
1.1.1应用程序ONEFUNC.C中只有一个函数,这个函数的名称是__main。
1.1.2一个函数由__函数头__和__函数体__两部分组成。
1.1.3在C语言中,输入操作是由库函数__scanf完成的,输出操作是由库函数_printf_完成的。
1.1.4通过文字编辑建立的源程序文件的扩展名是_.c__;编译后生成目标程序文件,扩展名是__.obj__;连接后生成可执行程序文件,扩展名是_.exe_;运行得到结果。
1.1.5C语言程序的基本单位或者模块是__函数__。
1.1.6C语言程序的语句结束符是_;___。
1.1.7编写一个C程序,上机运行要经过的步骤:
______________________________。
1.1.8在一个C语言源程序中,注释部分两侧的分界符分别为_/*__和__*/__。
1.1.9C语言中的标识符只能由三种字符组成,它们是字母、数字和下划线。
且第一个字符必须为字母或下划线。
1.1.10C语言中的标识符可分为关键字、预定义标识符和用户标识符3类。
1.2选择题
1.2.1一个C程序的执行是从(A)。
A)本程序的main函数开始,到main函数结束
B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
C)本程序的main函数开始,到本程序文件的最后一个函数结束
D)本程序文件的第一个函数开始,到本程序main函数结束
1.2.2以下叙述不正确的是(C)。
A)一个C源程序可由一个或多个函数组成
B)一个C源程序必须包含一个main函数
C)在C程序中,注释说明只能位于一条语句的后面
D)C程序的基本组成单位是函数
1.2.3C语言规定:
在一个源程序中,main函数的位置(C)。
A)必须在程序的开头B)必须在系统调用的库函数的后面
C)可以在程序的任意位置D)必须在程序的最后
1.2.4C编译程序是(A)。
A)将C源程序编译成目标程序的程序
B)一组机器语言指令
C)将C源程序编译成应用软件
D)C程序的机器语言版本
1.2.5要把高级语言编写的源程序转换为目标程序,需要使用(D)。
A)编辑程序B)驱动程序C)诊断程序D)编译程序
1.2.6以下叙述中正确的是(C)。
A)C语言比其他语言高级
B)C语言可以不用编译就能被计算机识别执行
C)C语言以接近英语国家的自然语言和数学语言作为语言的表达形式
D)C语言出现的最晚,具有其他语言的一切优点
1.2.7以下叙述中正确的是(A)。
A)C程序中注释部分可以出现在程序中任意合适的地方
B)花括号“{”和“}”只能作为函数体的定界符
C)构成C程序的基本单位是函数,所有函数名都可以由用户命名
D)分号是C语句之间的分隔符,不是语句的一部分
1.2.8以下叙述中正确的是(B)。
A)C语言的源程序不必通过编译就可以直接运行
B)C语言中的每条可执行语句最终都将被转换成二进制的机器指令
C)C源程序经编译形成的二进制代码可以直接运行
D)C语言中的函数不可以单独进行编译
1.2.9用C语言编写的代码程序(B)。
A)可立即执行B)是一个源程序
C)经过编译即可执行D)经过编译解释才能执行
1.2.10以下叙述中正确的是(C)。
A)在C语言中,main函数必须位于程序的最前面
B)C语言的每行中只能写一条语句
C)C语言本身没有输入输出语句
D)在对一个C程序进行编译的过程中,可以发现注释中的拼写错误
1.2.11下列4组选项中,均不是C语言关键字的选项是(A)。
A)defineB)getcC)includeD)while
IFcharscanfgo
typeprintfcasepow
1.2.12下列4组选项中,均是C语言关键字的选项是(B)。
A)autoB)switchC)signedD)if
enumtypedefunionstruct
includecontinuescanftype
1.2.13C语言中的标识符只能由字母、数字和下划线3种字符组成,且第一个字符(C)。
A)必须为字母B)必须为下划线
C)必须为字母或下划线D)可以是字母、数字和下划线中任一种字符
1.3编程题
1.3.1参照本章例题,编写一个C程序,要求输出如下字符。
***************************************************************************
WelcometoExpo2010!
Shanghai2010
#include
voidmain()
{
printf(“***************************************************************************\n”);
printf(“WelcometoExpo2010!
\n”);
printf(“Shanghai2010\n”);
printf(“***************************************************************************\n”);
}
1.3.2设计一程序,输入3个整数,计算并显示输出这3个整数之和。
#include
voidmain()
{
inta,b,c;
printf(“inputa,b,c:
\n”);
scanf(“%d%d%d”,%a,%b,%c);
printf(“thesumofa,b,cis%5d\n”,a+b+c);
}
第2章
2.1填空题
2.1.1C程序中数据有常量和变量之分,其中,用一个标识符代表一个常量的,称为符号常量。
C语言规定在程序中对用到的所有数据都必须指定其数据类型,对变量必须做到先定义,后使用。
2.1.2C语言中,用关键字float定义单精度实型变量,用关键字double定义双精度实型变量,用关键字char定义字符型变量。
2.1.3在C语言中,以16位PC机为例,一个char型数据在内存中所占的字节数为1;一个int型数据在内存中所占的字节数为2,则int型数据的取值范围为-32768~32767。
一个float型数据在内存中所占的字节数为4;一个double型数据在内存中所占的字节数为8。
单精度型实数的有效位是6-7位,双精度型实数的有效位是15-16位。
2.1.4设C语言中的一个基本整型数据在内存中占2个字节,若欲将整数135791正确无误地存放在变量a中,应采用的类型说明语句是longinta=15791;。
2.1.5C的字符常量是用单引号括起来的1个字符,而字符串常量是用双引号括起来的字符序列。
2.1.6C语言中,用“\”开头的字符序列称为转义符。
转义符“\n”的功能是回车换行;转义符“\r”的功能是回车。
2.1.7若有定义:
charc=‘\010’;则变量c中包含的字符个数为1。
2.1.8负数在计算机中是以补码形式表示。
2.1.9C语言中,&作为双目运算符是表示的是按位与,而作为单目运算符时表示的是取地址。
2.1.10在C语言的赋值表达式中,赋值号左边必须是变量。
2.1.11自增运算符++、自减运算符--,只能用于变量,不能用于常量或表达式。
++和--的结合方向是“自右左至左”。
2.1.12若a是int型变量,则执行下面表达式后a的值为2。
a=25/3%3
2.1.13写出下列数所对应的其它进制数(D对应十进制,B对应二进制,o对应八进制,H对应十六进制)
32D=100000B=40O=20H
75D=1001011B=113O=4BH
2.1.14假设已指定i为整型变量,f为float变量,d为double型变量,e为long型变量,有式子10+'a'+i*f-d/e,则结果为double型。
2.1.15若有定义:
intx=3,y=2;floata=2.5,b=3.5;则下面表达式的值为1。
(x+y)%2+(int)a/(int)b
2.1.165/3的值为1,5.0/3的值为1.666667。
2.1.17若有以下定义,intm=5,y=2;则执行表达式y+=y-=m*=y后的y值是-16。
2.1.18若a是int型变量,则表达式(a=4*5,a+2),a+6的值为26。
2.1.19若x和n均为int型变量,且x的初值为12,n的初值为5,则执行表达式x%=(n%=2)后x的值为:
0。
2.1.20若有定义语句:
inte=1,f=4,g=2;floatm=10.5,n=4.0,k;,则执行表达式k=(e+f)/g+sqrt((double)n)*1.2/g+m后k的值是13.7。
2.2选择题
2.2.1逗号表达式"(a=3*5,a*4),a+15"的值是(C)。
A)15B)60C)30D)不确定
2.2.2若有以下定义和语句:
charc1='a',c2='f';
printf("%d,%c\n",c2-c1,c2-'a'+'B');
则输出结果是:
(D)
A)2,MB)5,!
C)2,ED)5,G
2.2.3sizeof(float)是( B )。
A)一个双精度型表达式B)一个整型表达式
C)一种函数调用D)一个不合法的表达式
2.2.4若有以下定义,则能使值为3的表达式是( D)。
intk=7,x=12;
A)x%=(k%=5)B)x%=(k-k%5)C)x%=k-k%5D)(x%=k)-(k%=5)
2.2.5在C语言中,要求运算数必须是整型的运算符是(A)。
A)%B)/C)2.2.6下面4个选项中,均是合法整型常量的选项是(A)。
A)160B)-0xcdfC)-01D)-0x48a
-0xffff01a986,0122e5
0110xe06680x
2.2.7下面4个选项中,均是不合法浮点数的选项是(B)。
A)160.B)123C)-.18D)-e3
0.122e4.2123e4.234
E3.e50.01e3
2.2.8下面正确的字符常量是(C)。
A)”C”B)”\\”C)’W’D)’’
2.2.9在C语言中,int、char和short三种类型数据在内存中所占用的字节数(D)。
A)由用户自己定义B)均为2个字节
C)是任意的D)由所用机器的机器字长决定
2.2.10假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)后x的值为(B)。
A)7B)8C)6D)2
2.2.11假设所有变量均为整型,则表达式x=(i=4,j=16,k=32)后x的值为(C)。
A)4B)16C)32D)52
2.2.12若有代数式
,则正确的C语言表达式是(D)。
A)fabs(x*3+log(x))B)fabs(pow(x,3)+log(x))
C)abs(pow(x,3.0)+log(x))D)fabs(pow(x,3.0)+log(x))
2.2.13设变量n为float类型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是(B)。
A)n=(n*100+0.5)/100.0B)m=n*100+0.5,n=m/100.0
C)n=n*100+0.5/100.0D)n=(n/100+0.5)*100.0
2.2.14以下不正确的叙述是(D)。
A)在C语言中,逗号运算符的优先级最低
B)在C语言中,APH和aph是两个不同的变量
C)若a和b类型相同,在执行了赋值表达式a=b后b中的值将放入a中,而b中的值不变
D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值
2.2.15以下正确的叙述是(D)。
A)在C语言中,每行中只能写一条语句
B)若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数
C)在C程序中,无论是整数还是实数,都能被准确无误地表示
D)在C程序中,%是只能用于整数运算的运算符
2.3编程题
2.2.1编写一程序,求出给定半径r的圆的面积和周长,并输出计算结果。
其中,r的值由用户输入,用实型数据处理。
#include
#definePI3.14159
voidmain()
{
floatr,c,s;
printf("inputthe半径");
scanf("%f",&r);
c=2*PI*r;
s=PI*r*r;
printf("周长为%5.2f,面积为%5.2f\n",c,s);
}
2.2.2已知华氏温度和摄氏温度之间的转换关系是:
C=5/9*(F-32)。
编写一程序,将用户输入的华氏温度转换为摄氏温度,并输出结果。
#include
voidmain()
{
floatc,f;
printf("inputthe华氏温度");
scanf("%f",&f);
c=5.0/9*(f-32);
printf("华氏温度为%5.2f,摄氏温度为%5.2f\n",f,c);
}
习题三
3.1填空题
3.1.1程序的三种基本结构是顺序、选择、循环。
3.1.2执行(a=3.0+5,a*4),a+=-6;变量a及表达式的值分别为2.0,2.0
3.1.3下列语句被执行后的执行结果是1\abc\def。
inta=1;
printf(“%d\\%s\\%s”,a,”abc”,”def”);
3.1.4getchar()函数的作用是从键盘上接收一个字符。
3.1.5运行以下程序后,用户输入123456abc,输出结果为123,45,6。
voidmain()
{inta,b;
charc;
scanf("%3d%2d%3c",&a,&b,&c);
printf("%d,%d,%c",a,b,c);
}
3.1.6下面程序的输出结果是1112。
#include
voidmain()
{inti=10;
{/*inti=20;*/
i++;
printf(“%d”,i++);
}
printf(“%d\n”,i);
}
3.1.7下面程序运行后,从键盘输入30,则程序的输出结果是a=31,Ha=1f,Oa=37。
voidmain()
{inta;
scanf(”%d”,&a);
a++;
printf(“a=%d,Ha=%x,Oa=%o”,a,a,a);
}
3.1.8下面程序的输出结果是a=-3
b=’D’
“END”。
voidmain()
{inta,b=68;
a=-3;
printf(“\ta=%d\n\tb=\’%c\’\n\”end\”\n”,a,b);}
3.1.9下面程序的输出结果是13.7000000。
#include
#include
main()
{inta=1,b=4,c=2;
floatx=10.5,y=4.0,z;
z=(a+b)/c+sqrt((double)y)*1.2/c+x;
printf(“%f\n”,z);
}
3.1.10下面程序运行后,若输入a=2,b=3结果是x1=6.00
x2=0.67。
voidmain()
{floata,b,x1,x2;
scanf(“a=%f,b=%f“,&a,&b);
x1=a*b;
x2=a/b;
printf(“x1=%5.2f\nx2=%5.2f\n”,x1,x2);
}
3.2选择题
3.2.1指出下面正确的输入语句是(B)。
A)scanf(“a=b=%d”,&a,&b);B)scanf(“a=%d,b=%f”,&m,&f);
C)scanf(“%3c”,c);D)scanf(“%5.2f”,&f);
3.2.2执行scanf(“%d%c%f”,&a,&b,&c)语句,若输入1234a12f56则变量a,b,c的值为(C)。
A)a=1234b=’a’c=12.56B)a=1b=’2’c=341256
C)a=1234b=’a’c=12.0D)a=1234b=’a12’c=56.0
3.2.3执行scanf(“a=%d,b=%d”,&a,&b)语句,若要使变量a和b的值分别为3和4,则正确的输入方法为(C)。
A)3,4B)a:
3b:
4C)a=3,b=4D)34
3.2.4设b=1234,执行printf(“%%d@%d”,b)语句,输出结果为:
(D)。
A)1234B)%1234C)%%d@1234D)%d@1234
3.2.5若x是int型变量,y是float型变量,所用scanf语句为scanf(“x=%d,y=%f”,&x,&y);正确的输入操作是(A)。
A)x=10,y=66.6<回车>B)1066.6<回车>
C)10<回车>66.6<回车>D)x=10<回车>y=66.6<回车>
3.2.6设a,b均是int型变量,则以下不正确的函数调用为(D)。
A)getchar();B)putchar(‘\108’);
C)scanf(“%d,%2d”,&a,&b);D)putchar(‘\’);
3.2.7下列程序的执行结果是(C)。
#include
voidmain()
{inta=5;
floatx=3.14;
a*=x*(‘E’-‘A’);
printf(“%f\n”,(float)a);}
A)62.800000B)62C)62.000000D)63.000000
3.2.8若输入2.50,下列程序的执行结果是(A)。
voidmain()
{floatr,area;
scanf(“%f”,&r);
printf(“area=%f\n”,area=1/2*r*r);}
A)0B)3.125C)3.13D)程序有错
3.3编程题
3.3.1编写程序,从键盘上输入2个整数给变量a和b,交换a、b值然后输出。
//参考程序
#include
voidmain()
{inta,b,temp;
scanf("%d%d",&a,&b);
printf("\n交换前:
a=%d,b=%d\n",a,b);
temp=a;a=b;b=temp;
printf("交换后:
a=%d,b=%d\n",a,b);
}
3.3.2试编写一个程序,任意输入一个小写字母,分别按八进制、十进制、十六进制、字符格式输出。
//参考程序:
#include
voidmain()
{charc;
printf("请输入1个小写字母:
\n");
scanf("%c",&c);
printf("八进制:
%o\n十进制:
%d\n",c,c);
printf("十六进制:
%x\n字符:
%c\n",c,c);
}
3.3.3输入一个华氏温度,要求输出摄氏温度,输出要有文字说明,取2位小数。
公式为:
//参考程序:
#include
voidmain()
{floatc,f;
printf(“请输入一个华氏温度:
\n”);
scanf(“%f”,&f);
c=5.0/9*(f-32);
printf(“华氏温度F=%.2f\n”,f);
printf(“摄氏温度c=%.2f\n”,c);
}
3.3.4设圆半径r=3,圆柱高h=4,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。
用scanf输入数据,输出计算结果,输出时要求有文字说明,取小数点后2位数字。
请编程序。
//参考程序:
#include
#definePI3.1415926
voidmain()
{floatr,h,c,s1,s2,v1,v2;
printf(“请输入圆半径,圆柱高:
”);
scanf(“%f,%f”,&r,&h);
c=2*PI*r;s1=PI*r*r;s2=4*PI*r*r;
v1=4/3*PI*r*r*r;v2=s1*h;
printf(“r=%.2f,h=%.2f\n”,r,h);
printf(“圆周长=%.2f,圆面积=%.2f\n”,s1,s2);
printf(“圆体积=%.2f,圆柱体积=%.2f\n”,v1,v2);
}
习题四
4.1填空题
4.1.1表示条件:
104.1.2若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为a。
4.1.3若已知a=10,b=20,则表达式!
a
4.1.4当a=3,b=2,c=1时,表达式f=a>b>c的值是0。
4.1.5设y为int型变量,请写出描述“y是奇数”的表达式y%2!
=0。
4.1.6设x,y,z为int型变量,请写出描述“x或y中有一个小于z”的表达式x=z||x>=z&&y4.1.7已知a=7.5,b=2,c=3.6,表达式a>b&&c>a||a
c>b的值是1。
4.1.8假设a=5,b=2,c=4,以下表达式的值依次为:
0,1,1,1。
(1)a%b*c