文章目录

  • 7.12.1
  • 7.12.2
  • 7.12.3
  • 7.12.4
  • 7.12.5
  • 7.12.6
  • 7.12.7
  • 7.12.8
  • 7.12.9
  • 7.12.10
  • 7.12.11

7.12.1

/**
***编写一个程序,读到#字符停止,然后报告读取的空格数,换行符数和其他字符的数量
**/#include <stdio.h>
#include <ctype.h>int main()
{char ch;int sc = 0; //  space数int nc = 0; //  \n数int oc = 0; //  other字符数printf("Please enter, # to quit ->  ");while ((ch = getchar()) != '#'){if (ch == '#')break;else{if (ch == ' ')sc++;else if (ch == '\n')nc++;elseoc++;}}printf("%d space,%d enter,%d other", sc, nc, oc);return 0;
}

7.12.2

/**
***编写一个程序读取输入,读到#字符停止。程序要打印每个输入的字符以及对应的ASCLL码(十进制)。
***一行打印8个字符。建议:使用字符计数和求模运算符%,在每8个循环周期时打印一个换行符。
**/#include <stdio.h>
int main()
{char ch;   //输入字符int i = 0; //循环变量while ((ch = getchar()) != '#' && ch != '\n'){printf("%c %3d\t", ch, ch);i++;if (i % 8 == 0)printf("\n");}return 0;
}

7.12.3

/**
***编写一个程序,读取整数直到用户输入0。
***输入结束后,程序应报告用户输入的偶数(不包括0)个数。这些偶数平均值、输入的奇数个数及平均值。
**/#include <stdio.h>int main()
{int i_num; //输入的数int i_even_num = 0; //偶数个数int i_even_average; //偶数平均值int i_even_sum = 0; //偶数总数int i_odd_num = 0; //奇数个数int i_odd_average; //奇数平均值int i_odd_sum = 0; //奇数总数printf("\nPlease enter the number ( 0 to quit)  -> ");while (scanf("%d", &i_num) == 1){if (i_num == 0)break;if (i_num % 2 == 0) //如果输入的数能被2整除{i_even_num++;                             //偶数个数递增i_even_sum = i_even_sum + i_num;          //偶数总和等于自身+输入的偶数i_even_average = i_even_sum / i_even_num; //偶数平均值 = 偶数总数/偶数个数}else //输入的数不能被2整除{i_odd_num++;                           //奇数个数递增i_odd_sum = i_odd_sum + i_num;         //与偶数同理i_odd_average = i_odd_sum / i_odd_num; //与偶数同理}}printf("The even number have %d, average is %d.\n\n", i_even_num, i_even_average);printf("The odd number have %d, average is %d.\n", i_odd_num, i_odd_average);return 0;
}

7.12.4

/**
***使用 if else 语句编写一个程序读取输入,读到 # 停止。用感叹号替换句号,用两个感叹号替换原来的感叹号
***最后报告进行了多少次替换。
**/#include <stdio.h>
int main()
{char ch;int change = 0;while ((ch = getchar()) != '#'){if (ch == '.'){printf("!");change++;}else if (ch == '!'){printf("!!");change++;}elseputchar(ch);}printf("It's change %d time.", change);return 0;
}

7.12.5

/**
***使用 switch 语句编写一个程序读取输入,读到 # 停止。用感叹号替换句号,用两个感叹号替换原来的感叹号
***最后报告进行了多少次替换。
**/#include <stdio.h>int main()
{char ch;int change = 0;while ((ch = getchar()) != '#'){switch (ch){case '.':printf("!");change++;break;case '!':printf("!!");change++;break;default:putchar(ch);}}printf("It's change %d time.", change);return 0;
}

7.12.6

/**
***编写程序读取输入,读到 # 停止, 报告 ei 出现的次数。
***  【注意】
***  该程序要记录前一个字符和当前字符。用“Receive your eieio award”这样的输入来测试。
**/#include <stdio.h>
int main()
{char ch;char prev = 0;int i = 0;while ((ch = getchar()) != '#'){if (ch == 'i' && prev == 'e')i++;prev = ch;}printf("  ei 一共出现了%d次", i);return 0;
}

7.12.7

/**
***编写一个程序,提示用户输入一周工作的小时数,然后打印工资总额、税金、净收入。做如下假设:
***     a.基本工资 = 100美元/小时
***     b.加班(超过40小时) = 1.5倍时间
***     c.税率:  前300美元为15%
***              续150美元为20%
***              余下的25%
***
***用define定义符号的常量。
**/#include <stdio.h>
#define WORK_TIME 40                   //一周正常工作时间
#define HOUR_SALARY 100                //每个小时薪资: 美元/时
#define SALARY1 WORK_TIME *HOUR_SALARY //一周满工时的基本工资。40*100=4000美元int main()
{const double TAX1 = 300 * 0.15; //0~300美元的纳税金const double TAX2 = 150 * 0.2;  //301~450美元的纳税金int work_time;                  //用户输入的时间double work_salary;             //薪资double tax;                     //纳税double net_income;              //净收入printf("Please enter your work time on a week -->  ");scanf("%d", &work_time);//计算工资if (work_time <= 40){work_salary = work_time * HOUR_SALARY;}else{work_salary = SALARY1 + ((work_time - WORK_TIME) * HOUR_SALARY * 1.5);}if (work_salary <= 300){tax = work_salary * 0.15;}else if (work_salary > 300 && work_salary <= 450){tax = TAX1 + ((work_salary - 300) * 0.2);}else{tax = TAX1 + TAX2 + (work_salary - 450) * 0.25;}net_income = work_salary - tax; //净收入 = 基本工资 - 纳税printf("收入:%.2f\n", work_salary);printf("纳税:%.2f\n", tax);printf("净收入:%.2f\n", net_income);return 0;
}

7.12.8

/**
***修改练习7 的假设a,让程序可以给出一个供选择的工资等级菜单。使用switch 完成工资等级选择。
***运行程序后,显示的菜单应该类似这样:
*** ******************************************************************
*** Enter the number corresponding to the desired pay rate or action:
*** 1) $8.75/h                      2) $9.33/h
*** 3) $10.00/h                     4) $11.2/h
*** 5) quit
*** ******************************************************************
***
***计算用户的收入,税金,和净收入
***如果选择1~4其中一个数字,程序应该询问用户工作的小时数。程序要循环运行,除非输入5.如果1~5以外的数字,
***程序应提醒用户输入正确的选项,然后再重复显示菜单提示用户输入。使用#define创建符号常量表示各工资和税率。
**/#include <stdio.h>
#define ST_WORK_TIME 40                            //一周基本工时
#define ST_SALARY_WEEK i_choice * 40               //一周满40小时标准工薪
#define TAX1 d_salary * 0.15                       //首300以内15%
#define TAX2 TAX1 + (d_salary - 300) * 0.2         //续150以内20%
#define TAX3 TAX1 + TAX2 + (d_salary - 450) * 0.25 //余下的25%int main()
{int i_choice;        // i_选择:用来存放用户输入的时薪选项int i_work_time;     // i_工作时间:用来存放用户输入的一周工作时间double d_salary;     // d_薪资:用来存放 时间*时薪 的变量double d_tax;        // d_税率:用来存放用户应缴纳的税金double d_net_income; // d_净收入:用来存放用户最后的净收入a:printf("********************************************************************\n");printf("Enter the number corresponding to the desired pay rate or action  ->\n\n");printf("1) $8.75/h \t\t 2)9.33/h \n");printf("3) $10.0/h \t\t 4)11.2/h \n");printf("5) quit\n");printf("********************************************************************\n");printf("->");scanf("%d", &i_choice);switch (i_choice){case 1:printf("Please enter your work hours a week:");scanf("%d", &i_work_time);break;case 2:printf("Please enter your work hours a week:");scanf("%d", &i_work_time);break;case 3:printf("Please enter your work hours a week:");scanf("%d", &i_work_time);break;case 4:printf("Please enter your work hours a week:");scanf("%d", &i_work_time);break;case 5:goto b;break;default:printf("Please enter number in 1 ~ 5 ->\n");goto a;}if (i_work_time <= 40){d_salary = i_choice * i_work_time;}else{d_salary = ST_SALARY_WEEK + (i_work_time - ST_WORK_TIME) * i_choice * 1.5;}printf("\n\nYour salary is : \t$%.2f\n", d_salary);//计算税率if (d_salary <= 300){d_tax = TAX1;}else if (d_salary <= 450){d_tax = TAX2;}else{d_tax = TAX3;}printf("You need to pay taxes :\t $%.2f\n", d_tax);d_net_income = d_salary - d_tax;printf("Your net income is :\t $%.2f\n\n\n\n", d_net_income);goto a;b:printf("\n\nSee you !\n");return 0;
}

7.12.9

/**
***编写一个程序,只接受正整数输入,然后显示所有小于或等于该数的素数。
**/#include <stdio.h>
#include <stdbool.h>
int main()
{int range;int i, j;bool num_is_primes;printf("Enter a positive integer ->"); //输入一个正整数while (scanf("%d", &range) == 1 && range > 0){// if (range < 1)//     printf("This number can't be calculated\n"); //这个数字无法计算for (i = 2; i < range; i++){for (j = 2, num_is_primes = true; (j * j) <= i; j++){if (i % j == 0)num_is_primes = false;}if (num_is_primes)printf("\n%d是素数\n", i);}printf("Again(q to quit) ->");}printf("Done!");return 0;
}

7.12.10

/**
***1988年美国联邦税收计划是近代最简单的税收方案。它分为4个类别,每个类别有两个等级。
***下面是该税收计划的摘要(美元数为应征税的收入):
*** ------------------------------------------------
***     类别                      税金
***     单身          17850美元按15%计,超出部分按28%计
***     户主          23900美元按15%计,超出部分按28%计
***     已婚,共有     29750美元按15%计,超出部分按28%计
***     已婚,离异     14875美元按15%计,超出部分按28%计
*** ------------------------------------------------
***
***例如,一位工资为20000美元的单身纳税人,应缴纳税费0.15×17850+0.28×(20000-17850)美元。
***编写一个程序,让用户指定缴纳税金的种类和应纳税收入,然后计算税金。程序应通过循环让用户可以多次输入。
**/#include <stdio.h>int main()
{int i_state;         //婚姻状态double d_income;     //收入double d_tax = 0.00; //税金do{printf("-----------------------------------------");printf("\n\t请输入您当前的婚姻状态 (0 to quit) ->\n");printf("\n\t1、单身\t\t 2、户主\n");printf("\t3、已婚、共有\t 4、已婚、离异\n");printf("\t-> ");a:scanf("%d", &i_state);if (!i_state)break;if (i_state > 0 && i_state < 5){printf("\n\t请输入您的收入 ->");scanf("%lf", &d_income);switch (i_state){case 1:d_tax = d_income <= 17850 ? d_income * 0.15 : (0.15 * 17850) + (0.28 * (d_income - 17850));break;case 2:d_tax = d_income <= 23900 ? d_income * 0.15 : (0.15 * 23900) + (0.28 * (d_income - 23900));break;case 3:d_tax = d_income <= 29750 ? d_income * 0.15 : (0.15 * 29750) + (0.28 * (d_income - 29750));break;case 4:d_tax = d_income <= 14875 ? d_income * 0.15 : (0.15 * 14875) + (0.28 * (d_income - 14875));break;}printf("\n\t您应缴纳税金为: $%.2f\n", d_tax);}else{printf("\n\t请输入1~4之间的数:");goto a;}} while (i_state != 0);printf("感谢您使用 烙了个大饼牌税金计算器 。");return 0;
}

7.12.11

/** ABC邮购杂货店出售的洋蓟售价为$2.05/lb, 甜菜售价为$1.15/lb, 胡萝卜售价为$1.09/lb* 在添加运费之前,$100的订单有5%的打折优惠.* <=5lb的订单收取$6.5运费和包装费* 5~20lb的订单收取$14* >20lb的订单在$14的基础上每续重1lb增加$0.5* * 写一个程序, 在循环中使用switch语句实现用户输入不同的字母有不同的响应* 即输入a是选择洋蓟, 输入b是选择甜菜, 输入c是选择胡萝卜,q是退出订购* 程序要记录累计的重量. 即,用户输入4lb的甜菜, 然后输入5lb的甜菜,程序应报告9lb的甜菜.* 然后程序要计算货物总价, 折扣(若有的话), 运费和包装费.* * 随后程序应显示所有购买信息: 物品售价,订单重量(lb),订购的蔬菜费用,订单的总费用,折扣(若有的话), 运费包装费, 所有费用总额*/
#include <stdio.h>
#define ARTICHOKE_PRICE 2.05 // 洋蓟售价
#define BEET_PRICE 1.15      // 甜菜售价
#define CARROT_PRICE 1.09    // 胡萝卜售价
#define DISCOUNT 0.05        // 超$100(不含运费)的折扣int main(void)
{char goods = 0;        //商品选择int lb = 0;            //磅数int artiCountLb = 0;   //洋蓟总磅数int beetCountLb = 0;   //甜菜总磅数int carrotCountLb = 0; //胡萝卜总磅数double artiCountPrice = 0.0;   //洋蓟总磅数double beetCountPrice = 0.0;   //甜菜总磅数double carrotCountPrice = 0.0; //胡萝卜总磅数double freight = 0;    // 运费包装费double goodsPrice = 0; //商品总价int countLb = 0;       // 商品总重量printf("\n\t------------------------- ABC邮购杂货店 -------------------------\n");printf("\n\ta.洋蓟 $2.05/lb\t\tb.甜菜 $1.15/lb\t\tc.胡萝卜$1.09/lb");printf("\n\tq.退出订购\n");do{rechoose:printf("\n\t请选择:");fflush(stdin);scanf("%c", &goods);if (goods == 113)break;if ((goods > 99 || goods < 97) && goods != 113){printf("\t请输入 a / b / c 或 q.");goto rechoose;}printf("\n\t请输入要购买的数量(lb): ");scanf("%d", &lb);switch (goods){case 97:artiCountLb += lb;artiCountPrice = artiCountLb * ARTICHOKE_PRICE;break;case 98:beetCountLb += lb;beetCountPrice = beetCountLb * BEET_PRICE;break;case 99:carrotCountLb += lb;carrotCountPrice = carrotCountLb * CARROT_PRICE;break;}} while (goods != 113);goodsPrice = artiCountPrice + beetCountPrice + carrotCountPrice;countLb = artiCountLb + beetCountLb + carrotCountLb;// * <=5lb的订单收取$6.5运费和包装费// * 5~20lb的订单收取$14// * >20lb的订单在$14的基础上每续重1lb增加$0.5if (countLb > 0 && countLb <= 5)freight = 6.5;else if (countLb > 5 && countLb <= 20)freight = 14;else if (countLb > 20)freight = (countLb - 20) * 0.5 + 14;elsefreight = 0;printf("\t-----------------------------订单详情----------------------------\n");printf("\t\t  物品售价\t订单重量(lb)\n");printf("\t\t洋蓟   $%.2lf/lb\t\t%d\n", 2.05, artiCountLb);printf("\t\t甜菜   $%.2lf/lb\t\t%d\n", BEET_PRICE, beetCountLb);printf("\t\t胡萝卜 $%.2lf/lb\t\t%d\n", CARROT_PRICE, carrotCountLb);printf("\t\n");printf("\t\t订购素蔬菜费用:\t\t%.2lf\n", beetCountPrice + carrotCountPrice);printf("\t\t商品总费用(不含运费):\t%.2lf\n", goodsPrice);printf("\t\t折扣:\t\t\t%.2lf\n", goodsPrice > 100 ? DISCOUNT : 0.00);printf("\t\t运费包装费:\t\t%.2lf\n", freight);printf("\t\t总计:\t\t\t%.2lf\n", goodsPrice > 100 ? goodsPrice * DISCOUNT + freight : goodsPrice + freight);return 0;
}



《C Primer Plus 》第六版 习题 第七章相关推荐

  1. C primer plus(第六版)第十一章源代码

    C primer plus(第六版)第十一章源代码 /* 11.1 */ #include<stdio.h> #define MSG "I am a symbolic strin ...

  2. C primer plus(第六版)第五章源代码

    第五章 /* 5.1 */ #include<stdio.h> #define ADJUST 7.31 int main(void) {const double SCALE = 0.333 ...

  3. C Primer Plus (第六版) 第十四章_编程练习答案

    no1.c //重新编写复习题5,用月份名的拼写代替月份号(别忘了用strcmp()).在一个简单的程序中测试该函数 # include <stdio.h> # include <s ...

  4. C++ Primer Plus 第六版(中文版)第十一章(重置版)编程练习答案

    //本章程序需分多文件运行,请读者注意; //本博主所写的代码仅为阅读者提供参考; //若有不足之处请提出,博主会尽所能修改; //附上课后编程练习题目; //若是对您有用的话请点赞或分享提供给它人; ...

  5. C++Primer Plus(第六版)第七章编程练习

    好几道题没做,返回指针的函数写之前的写过就没再写一次了 #include <iostream> using namespace std; /* struct box {char maker ...

  6. c++primer plus第六版第十二章第一题

    //h文件 #pragma once class cow {char name[20];char*hobby;double weight; public:cow();cow(const char*m, ...

  7. C Primer Plus第六版(中文版)编程练习答案(完美修订版)汇总

    //本文是博主编写的C Primer Plus第六版(中文版)编程练习答案的所有链接; //使用超链接汇总于此,若是有用请点赞收藏并分享给他人; C Primer Plus 第六版(中文版)第二章(完 ...

  8. 深夜里学妹竟然问我会不会C?我直接把这篇文章甩她脸上(C Primer Plus 第六版基础整合)

    C Primer Plus 第六版 前言 第一章 初识C语言 一.C语言的起源 二.C语言的应用 三.C语言的特点 四.编译的过程 五.编码机制 1.简述 2.完成机制 六.在UNIX系统上使用C 七 ...

  9. C++ Primer Plus 第六版 所有章节课后编程练习答案

    我的独立博客地址:www.blog4jimmy.com,欢迎大家关注 下面的是C++ Primer Plus 第六版所有章节的课后编程练习的答案,都是博主自己写的,有不对的地方请大家留言指出讨论讨论 ...

最新文章

  1. python matplotlib.pyplot.imshow() (在2D常规栅格上显示图像(数据))
  2. 推荐一个能监控安卓手机上应用使用情况的应用,名叫ActionDash
  3. 【Data Cluster】真机环境下MySQL数据库集群搭建
  4. ImPan免费版 百度云网盘第三方不限速下载工具
  5. 第一章:1-01、计算机网络的发展可划分为几个阶段?每个阶段各有何特点?
  6. Deepin 2015 安装惠普打印机驱动
  7. asp.net listview 字段太多 滚动条_高考英语阅读理解生僻单词太多怎么办?十大招数帮到你...
  8. php 小墙 垃圾评论,关于php过滤垃圾评论
  9. 为什么我们要升级到 iOS 12.1.3?
  10. 电商平台系统架构设计案例分析
  11. 常见HTTP状态码大全
  12. X264码率控制总结——ABR,CQP,CRF
  13. 英文版-恩光照耀-Shine Jesus Shine
  14. Intel graphics HD 4600 核芯显卡 对比 nVIDIA Geforce GTX 750 2GB GDDR5 独立显卡
  15. Thinkpad E450c开启Intel virtual technology
  16. 学习-格鲁夫给经理人的第一课
  17. 关于Linux性能调优之内存负载调优
  18. org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask
  19. 直播报名丨“声AI · 新时代” 《中国声学智能产业发展和技术应用白皮书》重点解读
  20. linux下和嵌入式linux下通过udp接收来自vlc播放器的视频并转发播放

热门文章

  1. 论文精读 《CaDNN: Categorical Depth Distribution Network for Monocular 3D Object Detection》
  2. 问一下matlab里ARIMA模型咋预测
  3. keil中关于使用_at_绝对地址定位问题
  4. 鸿蒙系统专业就业前景,10大热门工科专业盘点,毕业后就业率不错,薪资待遇方面也比较高...
  5. linux c t添加arp表,Ubuntu下C语言+libnet实现ARP数据包广播
  6. 【NLP】流水的NLP铁打的NER:命名实体识别实践与探索
  7. html制作热力图制作,首页热力图.html
  8. 软件本地化可能会用到的工具
  9. 微信小程序开发导航:精品教程+网友观点+demo源码(5月9日更新)
  10. 非VR环境下使用Nolo手柄进行交互应用开发