C参考答案与复习题Word文档下载推荐.docx
- 文档编号:7807678
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:134
- 大小:150.82KB
C参考答案与复习题Word文档下载推荐.docx
《C参考答案与复习题Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C参考答案与复习题Word文档下载推荐.docx(134页珍藏版)》请在冰点文库上搜索。
应如何修改?
致命性错误为第6行函数sin未声明,应加入编译预处理命令#include<
math.h>
4.编程题
⑴请上机调试、运行本章课本上C语言程序例题4~6(注释部分可以不必输)
⑵仿照例6编程,输入两个变量后,输出其中较大的值。
#include<
stdio.h>
voidmain()
{inta,b;
printf("
请输入A,B的值:
\n"
);
scanf("
%d%d"
&
a,&
b);
if(a>
b)printf("
%d\n"
a);
elseprintf("
b);
⑶仿照例题编程,输入圆柱体的半径和高,计算并输出圆柱体的体积。
{floatr,h,v;
请输入半径、高的值:
%f%f"
r,&
h);
v=r*r*3.141593*h;
%f\n"
v);
习题二
1.将下列程序上机运行,写出你所使用的C语言处理系统中short、int以及long类型数据的字长和数值范围。
{printf("
short类型数据的字长为:
sizeof(short));
printf("
int类型数据的字长为:
sizeof(int));
long类型数据的字长为:
sizeof(long));
VC++环境下,分别为2、4、4
2.仿照题1编程,测试float、double类型数据的字长。
float类型数据的字长为:
sizeof(float));
double类型数据的字长为:
sizeof(double));
3.判断下列各个叙述的正确与否。
⑴C的long类型数据可以表示任何整数【╳】
⑵任何变量都必须要声明其类型【√】
⑶C的任何类型数据在计算机内都是以二进制形式存储的【√】
⑷scanf函数中的格式符“%d”不能用于输入实型数据【√】
⑸格式符中指定宽度时,从缓冲区中读入的字符数完全取决于所指定的宽度【√】
⑹按格式符“%d”输出float类型变量时,截断小数位取整后输出【╳】
⑺按格式符“%6.3f”输出i(i=123.45)时,输出结果为23.450【╳】
⑻scanf函数中的格式符“%f”能用于输入double类型数据【╳】
4.指出下列各项中那些是C的常量,对合法的C常量请同时指出其类型。
10,150007-0x3dπ1e0e1o7o8
'
x'
'
xo'
1.52e0.5sin(3)0xf16"
X"
'
\007'
1.414E+22.54'
\\'
a'
解:
007整型,-0x3d整型,1e0实型,'
字符型,0xf16整型,"
字符串
字符型,1.414E+2实型,2.54实型,'
字符型,'
字符型
5.指出下列各项中那些是C的标识符(可作变量名)。
x_1X_2Highprintfβ3DSi/j
e2-e2countIntnumber$23next_
x_1、X_2、High、e2、count、Int、number、next_
6.根据条件,写出下列各题的输出结果。
⑴inti=234,j=567;
函数printf("
%d%d\n"
i,j)的输出结果是234567。
⑵inti=234;
floatx=-513.624;
i=%5dx=%7.4f\n"
i,x)的输出结果是i=234x=-513.6240。
⑶floatalfa=60,pi=3.1415926535626;
sin(%3.0f*%f/180)\n"
alfa,pi)
的输出结果是sin(60*3.141592/180)。
⑷charch='
$'
floatx=153.45;
%c%-8.2f\\n"
ch,x)的输出结果是$153.45\n。
⑸intd=27;
%-5d,%-5o,%-5x\n"
d,d,d)的输出结果是27,34,1b。
⑹floatx1=13.24,x2=-78.32;
函数printf("
x(%d)=%.2fx(%d)=%.2f\n"
1,x1,2,x2)
的输出结果是x
(1)=13.24x
(2)=-78.32
7.根据下列条件写出变量i1(int类型)、c1(char类型)、f1(float类型)、d1(double类型)的当前值。
⑴执行scanf("
%d%c%f%lf"
i1,&
c1,&
f1,&
d1)时输入52$9.173.1415926535后。
i1为52,c1为'
,f1为9.17,d1为3.1415926535
⑵执行scanf("
%d$%c%f%lf"
9'
,f1为0.17,d1为3.1415926535
8.下列源程序输入x、y后,输出x的y次方。
运行时无编译、连接错误,但输入不同格式的两组数据输出结果却不同,哪一组是对的?
请说明原因。
第1组输入数据错误,因为格式串中有“,”所以键盘输入数据x、y之间也一定以逗号为间隔符。
9.写出下列程序运行时输入345的输出结果。
输出结果:
边长为3.00,4.00,5.00的三角形面积为6.00
{floata1,a2,a3,s,d;
scanf("
%f%f%f"
a1,&
a2,&
a3);
s=(a1+a2+a3)/2;
s=sqrt(s*(s-a1)*(s-a2)*(s-a3));
边长为%.2f,%.2f,%.2f的三角形面积为:
%-10.3f\n"
a1,a2,a3,s);
10.编程题
⑴编程,用getchar函数接收2个字符,用putchar函数输出这2个字符。
{charx;
x=getchar();
putchar(x);
⑵编程,用scanf函数输入1个10进制整数、1个单精度浮点数、1个双精度浮点数,并通过printf函数把输入的3个数分别输出。
{intk;
floatx;
doubled;
%d%f%lf"
k,&
x,&
d);
%d,%f,%f\n"
k,x,d);
⑶编程,输入1个整数,然后分别以8进制、10进制、16进制形式输出该数。
{intx;
%d"
x);
%d,%o,%x\n"
x,x,x);
习题三
1.根据下列数学式,写出C的算术表达式。
-(a*a+pow(b,3))*pow(y,4)(sqrt
(2)+100)/(atan(x)+3.141593)
(5+b)/((a+6)/(b+5)-c*d)
2.按照要求写出下列C的表达式。
⑴数学式(x+1)e2X所对应的C算术表达式。
⑵将double类型变量x的整数部分与y的小数部分相加的算术表达式。
⑶将非零实型变量x四舍五入到小数点后2位的算术表达式。
⑷为变量s赋值:
取变量x的符号,取变量y的绝对值。
⑸条件“-5≤x≤3”所对应的C逻辑表达式。
⑹a、b是字符变量,已知a的值为大写字母、b的值为小写字母,写出判断a、b是否为同一字母的逻辑表达式
⑺int类型变量a、b均为两位正整数,写出判断a的个位数等于b的十位数、且b的个位数等于a的十位数的逻辑表达式。
⑻计算变量a、b中较小值的条件表达式。
⑼判断变量ch是英文字母的表达式;
⑽若字符变量ch的值为大写字母,则重新赋值为对应的小写字母。
⑴(x+1)*exp(2*x)⑵(int)x+y-(int)y⑶(int)(x*100+fabs(x)/x*0.5)/100.0
⑷s=fabs(y)*x/fabs(x)⑸-5<
=x&
&
x<
=3⑹b-a=='
-'
A'
⑺a%10==b/10&
b%10==a/10⑻a<
b?
a:
b⑼isalpha(ch)
⑽ch=isupper(ch)?
ch:
ch+'
3.声明“intk=12;
floatx=9.5;
doubled=2.7;
charzf='
B'
;
”,写出下列表达式值。
⑴(int)x%k*d⑵k+5.6<
x<
d⑶10==9+1
⑷!
k&
x>
d⑸zf='
⑹zf=='
⑴24.3,⑵1,⑶1,⑷0,⑸'
,⑹1
4.填空题
⑴声明“floatx=2.5,y=4.7;
inta=7;
”,表达式x+a%3*(int)(x+y)%2/4值为2.5。
⑵设整型变量a、b值分别为10与20,计算c=(a%2==0)?
a:
b后,c的值为10。
⑶设整型变量d的值为7,表达式“3<
d<
5”的值为1(3<
d为1、1<
5为1)。
⑷已知ch是字符变量。
如果ch是小写英文字母,则把它改成大写英文字母,写作:
if(islower或ch>
='
&
ch<
z'
)ch=ch-32;
⑸下列程序的输出结果是(0.00,0.5)。
voidmain()
{inty;
doubled=3.4,x;
x=(y=d/2.0)/2;
(%0.2f,%d)"
x,y);
⑹判断a、b是否绝对值相等而符号相反的逻辑表达式为a==-b。
⑺判断变量a、b中必有且只有一个为0的逻辑表达式为a*b==0&
a+b!
=0。
⑻c初值为3,计算赋值表达式“a=5+(c+=6)”后表达式值、a、c的值依次为14、14、9。
⑼求解赋值表达式“a=(b=10)%(c=6)”后,表达式值、a、b、c的值依次为4、4、10、6。
⑽求解逗号表达式“x=a=3,6*a”后,表达式值、x、a的值依次为18、18、3。
⑾若a=13、b=25、c=-17,表达式“((y=(a<
b)?
b)<
c)?
y:
c的值为-17。
⑿若s='
d'
,执行语句“s=(s>
s<
)?
s-32:
s;
”后字符变量s的值为'
D'
。
5.写出下列程序的输出结果。
程序⑴#include<
{unsignedk,n;
%u"
n);
k=n%10*10+n/10;
n=%dk=%d\n"
n,k);
运行时输入数据为:
6972输出结果为:
n=69k=96
程序⑵#include<
{intx=40,y=4,z=4;
x=y==z;
%d%d%d\n"
x,y,z);
x=x==(y=z);
输出结果为:
144
044
程序⑶#include<
{intx,y,z;
x=y=2;
z=3;
y=x++-1;
%d\t%d\t%d\t"
y=--z+1;
%d\t%d\t%d\n"
x=y=z=0;
++x&
++y||++z;
--x&
++y&
++z;
313332
110010
6.编程,输入长方形的长和宽,求长方形的面积和周长并输出。
{floata,b,x,y;
b);
x=a*b;
y=2*(a+b);
面积=%.4f周长=%.4f\n"
x,y);
7.编程,输入3个字符后,按各字符ASCII码从小到大的顺序输出这些字符。
{chara,b,c,x,y,z;
%c%c%c"
b,&
c);
x=(x=a<
c?
x:
c;
z=(z=a>
b)>
z:
y=a+b+c-x-z;
%c%c%c\n"
8.编程,输入3个整数,要求按绝对值从小到大输出它们的值。
//也可以用题7的做法
voidmain()
{intx,y,z,a;
%d%d%d"
y,&
z);
if(fabs(x)>
fabs(y)){a=x;
x=y;
y=a;
}
fabs(z)){a=x;
x=z;
z=a;
if(fabs(y)>
fabs(z)){a=y;
y=z;
}
9.编程,输入3个数,计算这三个数的平均值,并求出与平均值最接近的值。
{floata,b,c,v,x;
v=(a+b+c)/3;
x=a;
if(fabs(b-v)<
fabs(x-v))x=b;
if(fabs(c-v)<
fabs(x-v))x=c;
x);
10.编程,输入1个3位正整数,输出其个位、十位、百位反序的数(如123反序数为321)。
{intn,m;
m=n%10*100+n%100/10*10+n/100;
%d\t%d\n"
n,m);
习题四
⑴求1至100的和,写作for(s=0,i=1;
i<
=100;
++i)s+=i;
⑵执行程序段“y=1;
x=5;
while(x--);
y++;
”后,y的值为2。
⑶顺序输出26个大写英文字母的循环结构,写作
for(ch='
ch<
Z'
ch++)putchar(ch);
⑷输入若干个以问号结束的字符,同时输出这串字符(不包括问号),写作
while((ch=getchar())!
?
)putchar(ch);
⑸循环程序段“k=5;
for(;
k<
0;
k--);
”执行后,k的值为5。
2.改写下列程序段,去掉continue语句,使结构更为合理。
⑴while(A){解答:
while(A)if(!
B)C;
if(B)continue;
C;
⑵do{解答:
while(A){B;
if(!
A)continue;
elseB;
}while(A);
3.写出下列程序的输出结果
程序⑴#include<
{charx;
intn=0,k=0;
while((x=getchar())!
.'
){
switch(x){
case'
t'
:
k++;
break;
h'
if(k==1)k++;
e'
if(k==2)k++;
default:
k=0;
if(k==3)n++;
n);
运行时输入:
atheasdfthethethere.输出结果:
3
程序⑵#include<
A
#include<
ctype.h>
BBB
voidmain()CCCCC
{chara,b,x;
inti;
DDDDDDD
while(!
isupper(x=getchar()));
EEEEEEEEE
for(a='
a<
=x;
a++){
for(b='
b<
+x-a;
b++)putchar('
for(i=1;
i<
=2*(a-'
)+1;
i++)putchar(a);
putchar('
\n'
)
}
35dffE
4.程序填空题,根据下列各题题意,将程序补充完整。
⑴下列程序在输入m后求n使n!
≤m≤(n+1)!
(例如输入726,应输出n=6)
{intm,n,jc=1;
scanf("
m);
for(n=2;
jc<
=m;
n++)jc=jc*n;
n=%d\n"
n-2);
⑵下列程序输出6至10000之间的亲密数对。
【说明】若a、b是亲密数对,则a的因子和等于b、b的因子和等于a且a不等于b。
{inta,b,c,i;
for(a=6;
=10000;
b=1;
for(i=2;
=a/2;
i++)if(a%i==0)b+=i;
c=1;
for(i=2;
=b/2;
i++)if(b%i==0)c+=i;
if(c==a&
a!
=b)printf("
%d%d\n"
a,b);
5.根据下列各小题题意编程。
⑴编程,输入x后按下式计算y值并输出。
{floatx,y;
%f"
if(x>
=0&
=1)y=x+sin(x);
elsey=x+sin(x);
y);
⑵输入一个百分制的成绩t后,按下式输出它的等级,要求分别写作if结构和switch结构。
等级为:
90~100为A,80~89为B,70~79为C,60~69为D,0~59为E。
{intt;
charx;
t)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 参考答案 复习题