程序设计基础c语言第三章程序结构教材习题答案科学出版社.docx
《程序设计基础c语言第三章程序结构教材习题答案科学出版社.docx》由会员分享,可在线阅读,更多相关《程序设计基础c语言第三章程序结构教材习题答案科学出版社.docx(11页珍藏版)》请在冰豆网上搜索。
程序设计基础c语言第三章程序结构教材习题答案科学出版社
程序设计基础-C语言(科学出版社教材)
第三章-程序结构教材习题答案
编写程序使整形变量:
a=3,b=4,c=5,p=0xfffe,q=0xffff;浮点型变量:
x=,y=,z=;无符号型变量:
u=5127486,n=128765,字符型变量:
c1=’a’,c2=’b’;
#include<>
voidmain()
{
inta,b,c,p,q;
floatx,y,z;
unsignedintu,n;
charc1,c2;
a=3;b=4;c=5;p=0xfffe;q=0xffff;
x=;y=;z=;
u=5127486;n=128765;
c1='a';c2='b';
printf("a=%db=%dc=%d\n",a,b,c);
printf("p=%#xq=%#x\n",p,q);
printf("x=%f,y=%f,z=%f\n",x,y,z);
printf("x+y=%.2fy+z=%.2fx+z=%.2f\n",x+y,y+z,x+z);
printf("u=%8un=%8u\n",u,n);
printf("c1='%c'or%d\n",c1,c1);
printf("c2='%c'or%d\n",c2,c2);
}
读入三个双精度数,求出它们的平均值并保留此平均值小数点后二位,最后输出结果。
#include<>
voidmain()
{
doublea,b,c,d;
printf("请输入三个双精度数:
");
scanf("%lf,%lf,%lf",&a,&b,&c);
d=(a+b+c)/3;
printf("d=%.2lf",d);
}
编写一个程序,要求输入三个整数值a,b,c,把c中的值赋给b,把b中的值赋给a,把a中的值赋给c,最后输出a,b,c.
#include<>
voidmain()
{
inta,b,c,t;
printf("输入三个整数值:
");
scanf("%d,%d,%d",&a,&b,&c);
t=a;
a=b;
b=c;
c=t;
printf("a=%d,b=%d,c=%d\n",a,b,c);
}
编写一个程序,要求输入一个华氏温度,输出对于的摄氏温度。
华氏温度与摄氏温度转换公式为:
c=5/9*(F-32).结果保留二位小数。
#include<>
voidmain()
{
floatF;
floatC;
printf("请输入一个华氏温度F=");
scanf("%f",&F);
C=*;
printf("对应的摄氏温度C=%.2f\n",C);
}
编写一个程序,要求输入一个三位数,正确的分量出它的个位,十位,百位,并在屏幕显示出来
#include<>
voidmain()
{
inta,a100,a10,a1;
printf("请输入一个三位整数:
");
scanf("%d",&a);
if(100<=a&&a<=999)
{
a100=a/100;
a=a%100;
a10=a/10;
a1=a%10;
printf("百位数是%d,十位数是%d,个位数是%d\n",a100,a10,a1);
}
else
{printf("输入的数据不是一个3位整数!
\n");
}
}
6.0编写一个程序,输入一个整数,输出它是奇数还是偶数
#include<>
voidmain()
{
inta,b;
printf("请输入一个整数:
");
scanf("%d",&a);
b=a%2;
if(b==0)
printf("偶数a=%d\n",a);
else
printf("奇数a=%d\n",a);
}
7.0
编写程序,输入x,对应输出Y值。
#include<>
voidmain()
{
intx,y;
printf("输入x值:
");
scanf("%d",&x);
if(x<1)
{y=x;
}
else
{if(1<=x&&x<10)
y=2*x-1;
else
y=3*x-11;
}
printf("%d\n",y);
}
编写一个程序,要求由键盘输入3个数,判断它们是否能构成三角形的三边。
若能,请判断构成的是等腰,等边还是普通三角形。
#include<>
#include<>
voidmain()
{
unsignedinti_a,i_b,i_c;
floatf_s;
printf("请输入3个数作为三角形的三条边,中间用空格隔开:
");
scanf("%u%u%u",&i_a,&i_b,&i_c);
if((i_a+i_b)>i_c&&(i_a+i_c)>i_b&&(i_c+i_b)>i_a)
{f_s=((float)(i_a+i_b+i_c))/2;
f_s=sqrt(f_s*(f_s-i_a)*(f_s-i_b)*(f_s-i_c));
printf("该3个数可构成一个三角形,其面积是%.2f\n",f_s);
if((i_a=i_b)&&(i_a=i_c))
{printf("该三角形是等边三角形\n");
}
else
{if((i_a=i_b)||(i_a=i_c)||(i_b=i_c))
{printf("该三角形是等腰三角形\n");
}
else
{printf("该三角形是一般三角形\n");
}
}
}
else
{printf("该3个数不能构成一个三角形\n");
}
}
编写程序,输入某年某月,求该月有多少天。
#include<>
voidmain()
{
unsignedinti_Year,i_Month;
chari_Days;
printf("请输入年月,中间用空格隔开:
");
scanf("%u%u",&i_Year,&i_Month);
if(1<=i_Month&&i_Month<=12)
{switch(i_Month)
{case1:
;
case3:
;
case5:
;
case7:
;
case8:
;
case10:
;
case12:
i_Days=31;
break;
case4:
;
case6:
;
case9:
;
case11:
i_Days=30;
break;
case2:
if(i_Year%4==0&&i_Year%100!
=0||i_Year%400==0)
i_Days=29;
else
i_Days=28;
}
printf("%d年%d月是%d天\n",i_Year,i_Month,i_Days);
}
else
{printf("月只能是1~12,输入错误,无法计算");
}
}
编写程序,对给定的一个百分制成绩,输出对于的五分制成绩,设90分以上为A,80到89分为B,70到79分为C,60到69为D,60分以下为E,用IF和switch语句分部实现。
#include<>
voidmain()
{
inti_a;f\n",num,average);
}
}
12编程计算1+2+3+4+……n的值超过500的第一个和值为多少;n的值为多少。
#include<>
voidmain()
{
inti_n;
inti_sum;.+n的值超过500的第1个和值=%d,n=%d\n",i_sum,i_n);
}
13计算出公式1!
+2!
+3!
+……10!
的值
#include<>
voidmain()
{
inti_a,i_b;
inti_sum;
解法一
#include<>
voidmain()
{
inti_100,i_10,i_1;//记录3位数的各位数字
inti_num;//记录水仙花数的个数
//每行最多输出10个水仙花数
i_num=0;
for(i_100=1;i_100<=9;i_100++)
{for(i_10=0;i_10<=9;i_10++)
{for(i_1=0;i_1<=9;i_1++)
if((i_100*100+i_10*10+i_1)==(i_100*i_100*i_100+i_10*i_10*i_10+i_1*i_1*i_1))
{//此时形成了一个水仙花数
printf("%d",i_100*100+i_10*10+i_1);
i_num++;
if((i_num%10)==0)
{//已输出了10个倍数的水仙花数,下一个另起一行
printf("\n");
}
}
}
}
printf("\n共有%d个水仙花数",i_num);
}
15利用循环,在屏幕上输出如下图案
#include<>
voidmain()
{
inti_Rows;//输出上三角*的行数
inti_Row;//当前输出的第几行
inti_Blanks;//第i_Row行需输出的空格数
inti_Blank;//第i_Row行当前输出的第几个空格
inti_Starts;//第i_Row行需输出的*个数
inti_Start;//第i_Row行当前输出的第几个*
printf("请输入上三角的行数:
");
scanf("%d",&i_Rows);
//输出上三角
for(i_Row=1;i_Row<=i_Rows;i_Row++)
{i_Blanks=i_Rows-i_Row;//计算第i_Row需输出的空格数
i_Starts=(i_Row-1)*2+1;//计算第i_Row需输出的*数
//输出第i_Row的空格
for(i_Blank=1;i_Blank<=i_Blanks;i_Blank++)
{printf("%c",'');
}//空格输出完毕
//输出第i_Row的*
for(i_Start=1;i_Start<=i_Starts;i_Start++)
{printf("%c",'*');
}//*输出完毕
printf("\n");//一行输出完毕,换行
}//上三角输出完毕
//输出下三角
i_Rows=i_Rows-1;//下三角比上三角少一行
for(i_Row=1;i_Row<=i_Rows;i_Row++)
{i_Blanks=i_Row;//计算第i_Row需输出的空格数
i_Starts=(i_Rows-i_Row)*2+1;//计算第i_Row需输出的*数
//输出第i_Row的空格
for(i_Blank=1;i_Blank<=i_Blanks;i_Blank++)
{printf("%c",'');
}//空格输出完毕
//输出第i_Row的*
for(i_Start=1;i_Start<=i_Starts;i_Start++)
{printf("%c",'*');
}//*输出完毕
printf("\n");//一行输出完毕,换行
}//下三角输出完毕
}
16输入二个整数M,N,计算它们的最大公约数和最小公倍数。
#include<>
voidmain()
{//统计任意位数的水仙花数
inti_m,i_n;//两个数据
inti_max;//最大公约数
inti_min;//最小公倍数
printf("请输入两个数据,用逗号分隔:
");
scanf("%d,%d",&i_m,&i_n);
//求最大公约数
i_max=i_m;
if(i_m>i_n)
i_max=i_n;
else
i_max=i_m;
while((i_m%i_max)!
=0||(i_n%i_max)!
=0)
{i_max--;
}//最大公约数求解完毕
//求最小公倍数
if(i_m>i_n)
i_min=i_m;
else
i_min=i_n;
while((i_min%i_m)!
=0||(i_min%i_n)!
=0)
{i_min++;
}//最小公倍数求解完毕
printf("最大公约数=%d,最小公倍数=%d",i_max,i_min);
}