程序设计基础c语言第三章程序结构教材习题答案科学出版社.docx

上传人:b****6 文档编号:6533157 上传时间:2023-01-07 格式:DOCX 页数:14 大小:22.27KB
下载 相关 举报
程序设计基础c语言第三章程序结构教材习题答案科学出版社.docx_第1页
第1页 / 共14页
程序设计基础c语言第三章程序结构教材习题答案科学出版社.docx_第2页
第2页 / 共14页
程序设计基础c语言第三章程序结构教材习题答案科学出版社.docx_第3页
第3页 / 共14页
程序设计基础c语言第三章程序结构教材习题答案科学出版社.docx_第4页
第4页 / 共14页
程序设计基础c语言第三章程序结构教材习题答案科学出版社.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

程序设计基础c语言第三章程序结构教材习题答案科学出版社.docx

《程序设计基础c语言第三章程序结构教材习题答案科学出版社.docx》由会员分享,可在线阅读,更多相关《程序设计基础c语言第三章程序结构教材习题答案科学出版社.docx(14页珍藏版)》请在冰豆网上搜索。

程序设计基础c语言第三章程序结构教材习题答案科学出版社.docx

程序设计基础c语言第三章程序结构教材习题答案科学出版社

程序设计基础-C语言(科学出版社教材)

第三章-程序结构教材习题答案

1.0编写程序使整形变量:

a=3,b=4,c=5,p=0xfffe,q=0xffff;浮点型变量:

x=1.2,y=2.4,z=3.6;无符号型变量:

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=1.2;y=2.4;z=-3.6;

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);

}

2.0读入三个双精度数,求出它们的平均值并保留此平均值小数点后二位,最后输出结果。

#include

voidmain()

{

doublea,b,c,d;

printf("请输入三个双精度数:

");

scanf("%lf,%lf,%lf",&a,&b,&c);

d=(a+b+c)/3;

printf("d=%.2lf",d);

}

3.0编写一个程序,要求输入三个整数值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);

}

 

4.0编写一个程序,要求输入一个华氏温度,输出对于的摄氏温度。

华氏温度与摄氏温度转换公式为:

c=5/9*(F-32).结果保留二位小数。

#include

voidmain()

{

floatF;

floatC;

printf("请输入一个华氏温度F=");

scanf("%f",&F);

C=5.0/9.0*(F-32.0);

printf("对应的摄氏温度C=%.2f\n",C);

}

5.0编写一个程序,要求输入一个三位数,正确的分量出它的个位,十位,百位,并在屏幕显示出来

#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);

}

8.0编写一个程序,要求由键盘输入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");

}

}

9.0编写程序,输入某年某月,求该月有多少天。

#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,输入错误,无法计算");

}

}

10.0编写程序,对给定的一个百分制成绩,输出对于的五分制成绩,设90分以上为A,80到89分为B,70到79分为C,60到69为D,60分以下为E,用IF和switch语句分部实现。

#include

voidmain()

{

inti_a;//成绩

inti_grade;//成绩等级

printf("请输入成绩:

");

scanf("%d",&i_a);

printf("用if语句判断的等级是:

");

if(i_a>=90)

{printf("A");

}

else

{if(80<=i_a&&i_a<=89)

{printf("B");

}

else

{if(70<=i_a&&i_a<=79)

{printf("C");

}

else

{if(60<=i_a&&i_a<=69)

{printf("D");

}

else

{printf("E");

}

}

}

}

printf("\n");

printf("用switch语句判断的等级是:

");

i_grade=i_a/10;

switch(i_a/10)

{case10:

;

case9:

printf("A");

break;

case8:

printf("B");

break;

case7:

printf("C");

break;

case6:

printf("D");

break;

default:

printf("E");

}

printf("\n");

}

11循环输入若干个数据,以-1表示输入结束,计算输入的这些数据平均值。

#include

voidmain()

{

inta;//记录当前输入的数

intnum;//记录当前输入的数据个数

intsum;//记录当前所有数据的和

floataverage;//记录平均值

//赋初值

sum=0;

num=0;

//输入开始

printf("输入一组整型数据,如果输入的数据是-1,则说明该组数据输入完成,下面开始输入\n");

scanf("%d",&a);

while(a!

=-1)

{num++;

sum=sum+a;

scanf("%d",&a);

}

//输入结束

//计算和输出

if(num==0)

{printf("没有输入数据,无平均数!

");

}

else

{average=(float)sum/(float)num;//强制int转换为float,然后计算,如果不要强制转换,即average=sum/num,你可试一试,看结果有什么不同

printf("输入了%d个数据,其平均数是:

%.2f\n",num,average);

}

}

12编程计算1+2+3+4+……n的值超过500的第一个和值为多少;n的值为多少。

#include

voidmain()

{

inti_n;

inti_sum;//记录和

//每行最多输出10个水仙花数

i_sum=0;

i_n=0;

while(i_sum<=500)

{i_n++;

i_sum=i_sum+i_n;

}

printf("1+2+3+4+...+n的值超过500的第1个和值=%d,n=%d\n",i_sum,i_n);

}

13计算出公式1!

+2!

+3!

+……10!

的值

#include

voidmain()

{

inti_a,i_b;

inti_sum;//记录和

inti_jc;//记录某个数的阶乘

i_sum=0;

for(i_a=1;i_a<=10;i_a++)

{//计算某个数i_a的阶乘

i_jc=1;

for(i_b=1;i_b<=i_a;i_b++)

{i_jc=i_jc*i_b;

}//阶乘计算完毕

i_sum=i_sum+i_jc;//计算和

}

printf("1!

+2!

+3!

+4!

+5!

+6!

+7!

+8!

+9!

+10!

=%d",i_sum);

}

14输出所有的水仙花数,所谓的水仙花数,是指一个三位数,其各位数字的立方和等于它本身。

列如153是一个水仙花数,因为153=1^3+5^3+3^3.

解法一

#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);

}

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1