c语言习题答案Word文件下载.docx
《c语言习题答案Word文件下载.docx》由会员分享,可在线阅读,更多相关《c语言习题答案Word文件下载.docx(48页珍藏版)》请在冰点文库上搜索。
floatb=123.456;
floatx=35.567,y;
a=%5d\n"
a);
a=%-5d\n"
b=%6.2f\n"
b);
b=%e\n"
y=(int)(x*100+0.5)/100.0;
x=f,y=%f\n"
x,y);
a=168
b=123.46b=1.234560e+002
x=f,y=35.567001
C程序代码
inta=168;
十进制数%d对应的八进制数是%o\n"
a,a);
十进制数%d对应的十六进制数是%x\n"
十进制数168对应的八进制数是250
十进制数168对应的十六进制数是a8
实验二
2.1顺序结构
2.1.1已知a=1.5,b=5.3,c=2.9,计算s=
-4ac的结果并输出。
floata,b,c,s;
a=1.5;
b=5.3;
c=2.9;
s=b*b-4*a*c;
s的值是%f\n"
s);
2.1.2输入某学生的三个科目的期末考试成绩,计算出该学生的成绩总分和平均分。
#include<
intmath,english,c_program;
floatsum,average;
inputmath,english,c_program:
scanf("
math,&
english,&
c_program);
sum=math+english+c_program;
average=sum/3;
sum=%.0f,average=%.5f"
sum,average);
2.1.3输入圆的半径,计算圆的面积,设圆周率为3.1416.
intmain()
floatr,s;
请输入半径:
%f"
r);
s=3.1416*r*r;
圆的面积为%.6f"
2.1.4输入一个两位数,将其个位数和十位数互换后变成一个新的数,输出这个数。
intmain(void)
intn,a,b;
inputn:
scanf("
%d"
n);
b=n%10;
a=n/10;
n=b*10+a;
n);
return0;
2.1.5输入两个数a和b,将两数的值互换后输出新值。
voidmain()
{
intx,y,t;
%d%d"
x,&
y);
t=x;
x=y;
y=t;
x=%d,y=%d\n"
}
2.2简单分支结构
2.2.1输入两个整数,求出其中的较小值输出。
#include<
inta,b,min;
请输入a,b:
\n"
%d,%d"
b);
if(a<
b)
min=a;
else
min=b;
最小值是%d\n"
min);
2.2.2输入x的值并计算分段函数y的值。
+2xx<
2
Y=f(x)=
2x-1x>
=2
doublex,y;
%lf"
x);
if(x<
2)
y=x*x+2*x;
else
y=2*x-1;
%.6f"
return0;
2.2.3输入两个整数并判断两数是否相等,输出相应结论。
inta,b;
请输入两个整数:
if(a==b)
a等于b"
else
a不等于b"
return0;
2.2.4输入一个整数,若为负数,求出它的平方;
若为正数,求出它的立方,并输出结果。
请输入一个整数:
doublex,y;
if(x<
0)
y=x*x;
else
y=x*x*x;
y=f(%f)=%f\n"
2.2.5输入三个整数,用if-else结构求出其中的最大值。
提示:
首先求出两个数的较大值放在一个变量里,然后用这个变量和第三个数再进行一次比较。
inta,b,c,max;
请输入三个数"
if(a>
max=a;
max=b;
if(c>
max)
max=c;
最大值为%d\n"
max);
2.3简单循环结构
2.3.1计算1+4+7+…+301。
#include<
{
inti,sum;
sum=0;
for(i=1;
i<
=301;
i=i+3)
sum=sum+i;
sum=%d\n"
2.3.2循环输入某学生八个科目期末考试成绩,计算出该学生成绩总分和平均分。
inti,a;
floatsum,average;
sum=0;
for(i=1;
=8;
i++)
scanf("
a);
sum=sum+a;
成绩总分为%f\n"
平均分为%f\n"
sum/8);
2.3.3输入n的值,计算n!
intn,i,a;
a=1;
请输入n的值:
=n;
a=a*i;
积=%d\n"
return0;
2.3.4显示1~10平方,输出结果如下图所示:
1*1=1
2*2=4
3*3=9
4*4=16
5*5=25
6*6=36
7*7=49
8*8=64
9*9=81
10*10=100
inti,a;
for(i=1;
=10;
a=i*i;
%d*%d=%d\n"
i,i,i*i);
2.3.5计算1-3/4+5/7-7/10+…的前n项之和。
inti,n;
floatitem,flag,sum;
sum=0;
flag=1;
i++)
item=flag*(2*i-1)/(3*i-2);
sum=sum+item;
flag=-flag;
}
%f\n"
实验三
3.1.1
输入一个整数x,判定是否为5的倍数。
intx;
x="
if(x%5==0)
能整除5"
不能整除5"
3.1.2
输入x,计算并输入下列分段函数对应的值。
-5x<
Y=
0<
=x<
=1
x/2x>
1
floatx,y;
y=-5;
elseif(x>
1)
y=x/2;
y=x*x+2;
对应值为%.2f\n"
return0;
3.1.3
某商场给顾客购物的折扣率如下:
购物金额<
300元不打折
300<
=购物金额<
500元9折
500元<
=购物金额7折
要求输入一个购物金额(x),输出打折率(rate)以及购物实际付款金额(x*rate)
intx,y;
300)
{
y=x;
不打折,付款%d\n"
}
=300&
&
x<
500)
y=0.9*x;
打9折,付款%d\n"
y=0.7*x;
打7折,付款%d\n"
3.1.4
求解一元二次方程
+b
的实数解。
math.h>
inta,b,c,d,x1,x2;
a=,b=,c="
d=b*b-4*a*c;
if(d>
doublesqrt(doubled);
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
x1=%d\n,x2=%d\n"
x1,x2);
elseif(d=0)
x1=(-b+sqrt(d))/(2*a);
x1=x2=%d\n"
x1);
没有实数解"
3.1.5
从键盘输入10个字符,将所有的英文字母转换为大写后输出。
chari,ch;
请输入"
ch=getchar();
if(ch>
='
ch<
z'
)
ch=ch-32;
putchar(ch);
3.1.6
从键盘输入10个字符,统计其中英文字母、空格、数字字符和其他字符的个数。
charch,i;
intletter,space,digiter,other;
letter=space=digiter=other=0;
ch=getchar();
if((ch>
)||(ch>
A'
))
letter++;
elseif(ch=='
'
||ch=='
\n'
space++;
elseif(ch>
0'
9'
digiter++;
other++;
letter=%d,space=%d,digiter=%d,other=%d\n"
letter,space,digiter,other);
3.2.1
输入一个四位整数的年份,判断是否为闰年。
intx,a,b,c;
输入年份:
a=x%4;
b=x%100;
c=x%400;
if((a==0&
b!
=0)||(c==0))
闰年"
不是闰年"
3.2.2
假设自动售货机出售4种商品,薯片、爆米花、巧克力和可乐,售价分别是每份3.0元、2.5元、4.0元和3.5元。
在屏幕上显示以下菜单,用户可以连续查询商品的价格,当查询次数超过五次时,退出查询;
不到五次时,用户可以选择退出。
当用户输入编号1~4,显示对应商品的价格;
输入0,退出查询;
输入其他编号,显示价格为0。
charprice;
inti;
请输入商品的名称:
=5;
price=getchar();
getchar();
switch(price)
case'
1'
:
售价3.0元\n"
break;
2'
售价2.5元\n"
3'
售价4.0元\n"
4'
售价3.5元\n"
退出查询\n"
default:
价格为0元\n"
3.2.3
编写一个程序输入某人的身高(cm)和体重(kg),按下式确定其体重是否为标准、过胖或过瘦。
判断标准为:
✍标准体重=身高-110;
✍超过标准体重5kg为过胖;
✍低于标准体重5kg为过瘦。
intx,y,z;
请输入身高和体重:
z=x-110;
if(y-z>
5)
过胖"
elseif(y-z<
-5)
过瘦"
标准"
3.2.4
编写一个程序,计算购买某物品的总金额,该物品的单价为5元/公斤,购买5公斤以上打九折,购买10公斤以上打八折,购买20公斤以上打7折,购买50公斤以上打6折,购买100公斤以上打5折。
(用多分支if语句求解)
购买量\n"
if(x>
=5&
x<
10)
y=0.9*5*x;
=10&
20)
y=0.8*5*x;
=20&
50)
y=0.7*5*x;
=50&
100)
y=0.6*5*x;
y=0.5*5*x;
y=5*x;
付款%.2f\n"
3.2.5
编写一个程序,输出给定的某年某月的天数。
intyear,month,days,leap;
年,月:
year,&
month);
switch(month)
case1:
case3:
case5:
case7:
case8:
case10:
case12:
days=31;
break;
case4:
case6:
case9:
case11:
days=30;
case2:
if(year%4==0&
year%100!
=0||year%400==0)
leap=1;
else
leap=0;
if(leap)
days=29;
days=28;
%d年%d月的天数为%d天\n"
year,month,days);
实验四
4.1.1
输入一批正整数(以零或负数为结束标志)求其中的奇数和。
intdata,sum;
输入一批正整数(以零或负数为结束标志):
"
data);
while(data>
if(data%2==1)
sum=sum+data;
奇数和是%d.\n"
4.1.2
输入两个整数a和n,求a+aa+aaa+……(n个a)之和。
例如输入2和3,输出246(2+22+222)
可采用递推的方法计算当前项item=item*10+a
inta,n,item,i,sum;
i=1;
item=0;
请输入两个整数a和n:
while(i<
=n)
item=item*10+a;
sum=sum+item;
i=i++;
结果为%d\n"
4.1.3
编写程序:
计算2/1+3/2+5/3+8/5……的近似值。
要求计算前n项之和,保留2位小数(该序列从第二项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子)
floatn,i,sum,a,b,item;
请输入n的值:
a=2;
b=1;
sum=sum+a/b;
item=a;
a=a+b;
b=item;
i=i++;
结果为%.2f\n"
4.1.4
编写一个程序,找出被2,3,5整除时余数均为1的最小的10个自然数。
intx,i;
i=0;
x=1;
if(x%2==1&
x%3==1&
x%5==1)
x);
i++;
x++;
4.1.5
输入一个正整数,求它的位数以及各位数字之和,例如123的位数是3,各位数字之和是6.
intnumber,digit,i,sum;
i=0;
输入一个正整数:
number);
while(number!
=0)
digit=number%10;
number=number/10;
sum=sum+digit;
i=i++;
digit);
该整数的位数是%d\n,各位数字之和是%d\n"
i,sum);
4.1.6
猴子吃桃问题。
猴子第一天摘下若干个桃子,当时就吃了一半,还不过瘾,就又吃了一个。
第二天又将剩下的桃子吃掉一半,又多吃了一个。
以后每天都吃前一天剩下的一半零一个。
到第10天在想吃的时候就剩一个桃子了,求第一天共摘下来