当前位置:文档之家› 第3章结构化程序设计习题答案

第3章结构化程序设计习题答案

C 语言程序设计( Visual C++6.0 环境)》习题答案习题三一、选择题1. C2.A3.C4.D5.C6.B二、填空题1、<CR>12、$$$$$$$$$$$$$$$$$$$$3、89104、0 01 12 3三、思考题1、32、1,53、循环条件由-1 开始一直减1,永远不能得0,因此循环条件恒为真,无法结束,造成死循环。

4、无限循环四、编程题1、用if 语句编程,输入一个数,输出这个数的绝对值。

#include "stdio.h"main(){int m,n; /* 或者定义成实型*/printf(" 请输入一个整数: ");scanf("%d",&m);if(m>=0)n=m;elsen=-m;printf("%d 的绝对值是:%d",m,n);}2、设计一种程序,输入一个整数,判断它的奇偶性。

#include "stdio.h"main(){int m;printf(" 请输入一个整数: ");scanf("%d",&m);if(m%2==0) /* 或写为!(m%2) 或者m==m/2*2 均可*/printf("%d 是偶数",m);elseprintf("%d 是奇数",m);}3、假设星期一至星期五每工作 1 小时的工资是20 元,星期六和星期日每工作 1 小时的工资是平时的3 倍,其中工资的 4.5% 是税金。

请输入一周各天工作的小时数,然后列出该周实际领取的工资及税金。

#include "stdio.h"main(){ int day,h;float gz,sj;gz=0;printf("input weekday1---7:hours\n");for(day=1;day<=7;day++){ printf("%d--:\n",day);scanf("%d",&h);if(day<=5) gz=gz+h*20;elsegz=gz+h*20*3;sj=gz*0.045;printf("gz=%.2f,sj=%.2f\n",gz,sj);}4、用if 语句和switch 语句分别编写程序,实现以下功能:从键盘输入数字1,2,3,4,分别显示excellent,good,pass,fail :输入其他键时显示error。

main(){int i;printf("input i:1-2-3-4\n");scanf("%d",&i);switch(i){case 1: {printf("excellent\n");break;}case 2: {printf("good\n");break;}case 3: {printf("pass\n");break;}case 4: {printf("fail\n");break;}default:{printf("error\n");break;}}}5、现在是网络信息时代,很多市民通过电话上网。

目前某市电信局的上网收费和付费方式分以下几类(以月为单位) :( 1)包月服务:小于30 小时,60 元/月,超过30 小时的部分按 5 分/分钟累计(包括电话费) ,每月随电话费收费;( 2)990用户:10分/分钟(包括电话费) ,每月随电话费收费。

(3)169用户:上网信息费7分/分钟,电话费21分/3 分钟(不足3分钟按3分钟计),每月到电信局以现金方式收费或用卡付费。

main(){ int yhlb,time;float fei;printf("input yhlb,time(ninute):\n");scanf("%d%d",&yhlb,&time);{case 1:{if(time/60<30)fei=60;elsefei=60+(time-30*60)*0.05;printf("baoyuefuwu:fei=%.2f\n",fei);break;}case 2:{fei=time*0.1;printf("990yonghu:fei=%.2f\n",fei);break;}case 3:{fei=time*0.07;if(time%3==0)fei=fei+0.21*time/3;elsefei=fei+0.21*floor(time/3)+0.21;printf("169:fei=%.2f\n",fei);break;}}}6、给学生评语,若学生成绩在60 至69 则打印“及格” ,70 至89“良好”,90 至100“优秀”,60以下“不及格” ,请分别用if-else 语句和switch 语句编程。

/* 用if-else 语句实现*/#include "stdio.h"main(){float score;printf(" 请输入成绩: ");scanf("%f",&score);if(score>=90)else if(score>=70) printf(" 良好");else if(score>=60)printf(" 及格");elseprintf(" 不及格");}/* 用switch 语句实现*/#include "stdio.h"main(){float score;printf(" 请输入成绩: "); scanf("%f",&score); switch(score/10) case 10:case 9:printf(" 优秀");case 8:case 7:printf(" 良好");case 6:printf(" 及格"); default:printf(" 不及格");}.-n/1007、计算数列:n-n/2+n/3-n/4+#include "stdio.h"main(){float i,m,sum=0,n; scanf("%f",&n);for(i=1;i<=100;i++){if((int)i%2==0)m=-1/i;elsem=1/i;sum+=m;}printf(" 这个数列的值是%f \n",n*sum);}8、相传古代印度国王舍罕要褒奖他的聪明能干的宰相达依尔(国际象棋发明者) ,问他需要什么,达依尔回答说:“国王只要在国际象棋的棋盘上第一个格子放一粒麦子,第二个格子放二粒,第三个格子放四粒,依此类推,每一格加一倍,一直放到64 格,我就感恩不尽了。

”国王答应了,结果全印度的粮食用完了还不够。

国一很纳闷,怎么也算不清这笔帐。

请编程实现。

(提示:需要计算sum=1+2+22+23+……+263,求出小麦的颗粒数。

1立方小麦大约1.42X 108粒。

)#include "stdio.h"main(){ int i;double s,t;s=1;t=1;for(i=1;i<=63;i++){ t=t*2;s=s+t;printf("%d,%lf\n",i,t);}printf("s=%lf\n",s);}9、搬砖问题:36人搬36 块砖,男搬4,女搬3,小孩两人抬一块砖。

要求一次全搬完,问男、女和小孩各需要多少人?#include "stdio.h"main(){int nan,nu,child;for(nan=1;nan<9;nan++){ for(nu=1;nu<12;nu++){ child=36-nan-nu;if(nan*4+nu*3+child/2.0==36)printf("%d %d %d\n",nan,nu,child);}}}项目实训( 1 ) #include "stdio.h"main(){int i;float t=1.0,pai=1.0,n;for(i=1;i<=50;i++){t=(2*i*0.1/(2*i-1))*(2*i*0.1/(2*i+1)) pai=pai*t;}printf("PAI 的近似值是%f \n",2*pai);}(2)思路和( 1)相似(略) 。

相关主题