C Primer Plus(第五版)学习(五)
来源:互联网 发布:淘宝导航栏编辑器 编辑:程序博客网 时间:2024/05/22 05:28
第7章《C控制语句:分支和跳转》是我觉得用来开发具有智能行为的基础,所以这一章我也用了好长时间去研读。关键字:continue,break,goto(为了避免程序胡乱跳,最好不用),if else,while,switch。还有如何判断素数,如何让用户不断输入等等这些都是让我思考的问题。
我做的课后编程习题如下(如有不对的地方请指出来其一探讨,谢谢):
1.编写以个程序。该程序读取输入直到遇到#字符,然后报告读取的空格数目、读取的换行符数目以及读取的所有其他字符数目。
#include <stdio.h>#define STOP '#'//以#号作为结尾#include <ctype.h>int main(void){char c;//读入的字符int n_space=0;//空格数目int n_line=0;//换行符数目int n_words=0;//其他字符数目printf("请输入一段内容(以#结尾):");while((c=getchar())!=STOP){if(c=='\n')n_line++;//统计行if(isspace(c))n_space++;//统计空格n_words++;//统计其他字符}printf("空格数目=%d, 换行符数目=%d, 其他字符数目=%d\n",n_space,n_line,n_words);return 0;}
2.编写一个程序。该程序读取输入直到遇到#字符。是程序打印每个输入的字符以及它的十进制ASCII码。每行打印8个字符/编码对。建议:利用字符计数和模运算符(%)在每8个循环周期时打印一个换行符。
#include <stdio.h>#define STOP '#'int main(void){char c;//用户读取字符int n=0;//用来计数字符数printf("输入的字符以及对应的ASCII码如下.\n");printf("用户输入一段内容(以#号结束):");while ((c=getchar())!=STOP){n++;printf("%2c/%2d",c,c);if(0==n%8)printf("\n");}printf("\n");return 0;}
3.编写一个程序。该程序读取整数,直到输入0.输入终止后,程序应该报告输入的偶数(不包括0)总个数、偶数的平均值,输入的奇数总个数以及奇数的平均值。
#include <stdio.h>#define STOP '0'int main(void){int nu;int sum_a=0;int cout_a=0;//偶数个数int sum_b=0;int cout_b=0;//奇数个数printf("请输入整数(以0结束):\n");while((nu=getchar())!=STOP){if('\n'==nu)//以回车符作为输入整数的间隔符continue; nu=nu-48;//用自己的数值进行计算,不用ASCII码if(nu%2==0)//如果是偶数{cout_a++;sum_a+=nu;}else//如果是奇数{cout_b++;sum_b+=nu;}}printf("偶数的个数 %d,偶数的平均数%d.\n",cout_a,sum_a/cout_a);printf("奇数个数 %d, 奇数的平均数%d.\n",cout_b,sum_b/cout_b);return 0;}
4.利用switch重做第3题。
#include <stdio.h>#define STOP '0'int main(void){int nu;int sum_a=0;int cout_a=0;//偶数个数int sum_b=0;int cout_b=0;//奇数个数printf("请输入整数(以0结束):\n");while((nu=getchar())!=STOP){if('\n'==nu)//以回车符作为输入整数的间隔符continue;nu=nu-48;//用自己的数值进行计算,不用ASCII码switch(nu%2){case 0://偶数情况cout_a++;sum_a+=nu;break;case 1://奇数情况cout_b++;sum_b+=nu;break;default:break;}}printf("偶数的个数 %d,偶数的平均数%d.\n",cout_a,sum_a/cout_a);printf("奇数个数 %d, 奇数的平均数%d.\n",cout_b,sum_b/cout_b);return 0;}
5.编写程序,要求输入一周中的工作小时数,然后打印工资总额、税金以及净工资。作如下假设:
a.基本工资等级=10.00美元/小时
b.加班(超过40小时)=1.5倍的时间
c.税率 前300美元为15%;下一个150美元为20%;余下的为%25.
用#define定义常量。
#include <stdio.h>#define FOUD 10//基本工资10美元/小时#define RAT_1 0.15//税率前300美元为15%#define RAT_2 0.20//下一个150美元为20%#define RAT_3 0.25//余下的为25%#define B_T 40//加班时间分界点#define BREAK_1 300//分界点300美元#define BREAK_2 450//分界点450美元#define BASE_1 (FOUD*B_T)//工作40小时总工资double tax(double fg);//用来计算税金int main(void){double total=0,taxes=0,netpay=0;//总额,税金,净工资int time;//一周工作时间printf("请输入您一周工作时间:");scanf("%d",&time);if (time<=B_T){total=FOUD*time;taxes=tax(total);netpay=total-taxes;}else{total=BASE_1+FOUD*(time-B_T)*1.5;taxes=tax(total);netpay=total-taxes;}printf("您的工资总额 %.1f,税金 %.1f,净工资 %.1f.\n",total,taxes,netpay);return 0;}double tax(double fg){if (fg<=BREAK_1)return (fg*RAT_1);else if(fg<=BREAK_2)//总额在300美元到450美元之间return ((fg-BREAK_1)*RAT_2+BREAK_1*RAT_1);else//总额超过450美元的时候 return (BREAK_1*RAT_1+(BREAK_2-BREAK_1)*RAT_2+(fg-BREAK_2)*RAT_3);}
0 0
- C Primer Plus(第五版)学习(五)
- (c primer plus第五版) 学习笔记
- (c primer plus第五版)学习笔记
- C Primer Plus(第五版)学习(一)
- C Primer Plus(第五版)学习(二)
- C Primer Plus(第五版)学习(三)
- C Primer Plus(第五版)学习(四)
- C Primer Plus(第五版)学习(六)
- C Primer Plus(第五版)学习(七)
- C Primer Plus(第五版)学习(八)
- C Primer Plus(第五版)学习(九)
- C primer plus (第五版)学习总结
- C++ Primer Plus学习笔记五(第五章)
- C Primer Plus 第五版
- C Primer Plus 第五版 前四章学习总结
- C Primer Plus(第五版)学习笔记-诊断库
- 《C++Primer Plus》学习笔记(五)
- C PRIMER PLUS(第五版)疑问总结一
- Jenkins服务器磁盘空间管理策略
- NotificationManager和Notification的使用总结
- 硬件工程师面试经历2015---面试篇
- Window下使用WinPcap发Rarp包
- string
- C Primer Plus(第五版)学习(五)
- 黑马程序员 斗地主洗牌代码实现
- System.exit(0)和System.exit(1)区别
- JavaIO详解
- Android触摸监听的传递
- TCP的输出
- Android:onNewIntent()触发机制及注意事项
- CentOS更换网卡之后的配置
- merge interval