c primer plus7.12编程练习
来源:互联网 发布:99宿舍软件 编辑:程序博客网 时间:2024/05/24 04:04
<pre name="code" class="html">//第11题#include <Stdio.h>#include <ctype.h>#define PRICE_ARTICHOKE 1.25//朝鲜蓟的售价是1.25美元/磅#define PRICE_BEET 0.65//甜菜的售价是0.65美元/磅#define PRICE_CARROT 0.89//胡萝卜的售价是0.89美元/磅#define ORDER_100 0.05 //100美元的订单提供%5的优惠#define LOWER_5 3.5 //5磅以下的订单收取3.5美元运输和装卸费用#define HIGHER_5_LOWER_20 10 //超过5磅不足20磅的每单收取10美元的运输和装卸费用#define HIGH_20 0.1//超过20磅的在8美元基础上每磅加收0.1美元int main (void){int a,b,c;//分别表示朝鲜蓟磅数,甜菜的磅数,胡萝卜的磅数double all_incost=0,discount,transportation,sum=0,money=0;//总订单,折扣,运输费用,总数,费用总数double cost;//花费char ch;//用来选择蔬菜double basic;//售价int pound;//购买的磅数printf("请输入a,b,c分别代表朝鲜蓟,甜菜,胡萝卜,选择您打算购买的蔬菜\n");while((ch=tolower(getchar()))!='q'){switch(ch){case 'a':printf("您想订购所少磅朝鲜蓟?\n");scanf("%d",£);basic=PRICE_ARTICHOKE;cost=basic*pound;//买这些磅数的费用printf("其中每磅的单价是%.2lf,",basic);printf("您需要花费%.2lf\n",cost);all_incost+=cost;sum+=pound;printf("请继续订购,按q退出订购\n");getchar();continue;case 'b':printf("您想订购所少磅甜菜?\n");scanf("%d",£);basic=PRICE_BEET;cost=basic*pound;//买这些磅数的费用printf("其中每磅的单价是%.2lf,",basic);printf("您需要花费%.2lf\n",cost);all_incost+=cost;sum+=pound;printf("请继续订购,按q退出订购\n");getchar();continue;case 'c':printf("您想订购所少磅胡萝卜?\n");scanf("%d",£);basic=PRICE_CARROT;cost=basic*pound;//买这些磅数的费用printf("其中每磅的单价是%.2lf,",basic);printf("您需要花费%.2lf\n",cost);all_incost+=cost;sum+=pound;getchar();continue;default:printf("输入错误,请重新输入\n");getchar();continue;printf("请继续订购,按q退出订购\n");continue;}}printf("购买%.lf磅\n",sum);if(sum<5){transportation=LOWER_5;discount=0;}if(sum>=5&&sum<20){transportation=HIGHER_5_LOWER_20;discount=0;}if(sum>=20&&sum<100){transportation=8+0.1*sum;discount=0;}if(sum>=100){transportation=8+0.1*sum;discount=ORDER_100*all_incost;}money=transportation+all_incost-discount;printf("运输费用是%.2lf",transportation);printf("折扣是%.2lf",discount);printf("总费用是%.2lf\n",money);return 0;}
<span style="font-family: Arial, Helvetica, sans-serif;">//编写一个程序,该程序读取输入直到遇到#字符,然后报告读取的空格数目,换行符数目以及读取的所有其它字符数目</span>
#include <stdio.h>int main (void){ char ch; int blank=0,line=0,others=0; while((ch=getchar())!='#') { if(ch==' '||ch=='\t') blank++; else if(ch=='\n') line++; else others++; } printf("blank=%d,line=%d,others=%d\n",blank,line,others); return 0;}
//编写一个程序,该程序读取输入直到遇到#字符,使程序打印每个输入的字符,以及它的实际值ASCII码,每行打印8个字符/编码对,建议:利用字符计数和模运算符%,在每八个循环周期时打印一个换行符#include <Stdio.h>int main (void){ char ch; int i=0; while((ch=getchar())!='#') { printf("%c=%d ",ch,ch); i++; if(i%8==0) { printf("\n"); } } return 0;}
//编写一个程序,该程序读取整数,直到输入0,输入终止后程序应该报告输入的偶数(不包括0)总个数,偶数的平均值,输入的奇数总个数,奇数的平均值#include <Stdio.h>int main (void){ int a[50],i=0,even=0,odd=0,sum_even=0,sum_odd=0; for(scanf("%d",&a[i]);a[i]!=0;scanf("%d",&a[i])) { if(a[i]%2==0) { even++; sum_even+=a[i]; } else { odd++; sum_odd+=a[i]; } i++; } printf("偶数的个数%d,平均值%.2f\n奇数的个数%d,平均值%.2f\n",even,(float)sum_even/even,odd,(float)sum_odd/odd); return 0;}
//不用数组来写#include <Stdio.h>int main (void){ int a,even=0,odd=0,sum_even=0,sum_odd=0; for(scanf("%d",&a);a!=0;scanf("%d",&a)) { if(a%2==0) { even++; sum_even+=a; } else { odd++; sum_odd+=a; } } printf("偶数的个数%d,平均值%.2f\n奇数的个数%d,平均值%.2f\n",even,(float)sum_even/even,odd,(float)sum_odd/odd); return 0;}
//利用else if语句编写程序读取输入,直到#,用一个感叹号代替每个句号,将原有的每个感叹号用两个感叹号代替,最后报告进行了多少次代替#include <Stdio.h>int main (void){ char ch; int period_replace=0,point_replace=0; while((ch=getchar())!='#') { if(ch=='.') { ch='!'; period_replace++; } else if(ch=='!') { point_replace++; putchar('!'); } putchar(ch); } printf("%d\n",period_replace+point_replace); return 0;}
//用switch重做练习3//编写一个程序,该程序读取整数,直到输入0,输入终止后程序应该报告输入的偶数(不包括0)总个数,偶数的平均值,输入的奇数总个数,奇数的平均值#include <Stdio.h>int main (void){ int a[50],i=0,even=0,sum_even=0,odd=0,sum_odd=0; for(scanf("%d",&a[i]);a[i]!=0;i++,scanf("%d",&a[i])) { switch(a[i]%2) { case 0:sum_even+=a[i]; even++; break; case 1:sum_odd+=a[i]; odd++; break; } } printf("even is %d,average is %.2f\nodd is %d,average is %.2f\n",even,(float)sum_even/even,odd,(float)sum_odd/odd); return 0;}
//换一种方法#include <Stdio.h>int main (void){ int a,even=0,sum_even=0,odd=0,sum_odd=0; while(1) { scanf("%d",&a); if(a==0) break; switch(a%2) { case 0:sum_even+=a; even++; break; case 1:sum_odd+=a; odd++; break; } } printf("even is %d,average is %.2f\nodd is %d,average is %.2f\n",even,(float)sum_even/even,odd,(float)sum_odd/odd); return 0;}
//编写一个程序读取输入,直到#,并报告序列ei出现的次数#include <stdio.h>int main (void){ char ch; int i=0; while((ch=getchar())!='#') if(ch=='e') if((ch=getchar())!='#'){ if(ch=='i')i++;}elsebreak; printf("%d\n",i); return 0;}
//换一种方法,分别记录之前的字母和当前的字母#include <Stdio.h>int main (void){char previous=0,present;int i=0;while((present=getchar())!='#'){if(previous=='e'&&present=='i')i++;previous=present;}printf("%d\n",i);return 0;}
//编写程序,要求输入一周中的工作小时数,然后打印工资总额,税金以及净工资。#include <Stdio.h>#define M 40#define A 300*0.15#define B 150*0.2+A#define PAY 10*40;int main (void){int hour;double sum=0,taxe=0,net_pay=0;printf("input the hour\n");do{scanf("%d",&hour);}while(hour<0);if(hour<=M){sum=hour*10;if(sum<300)taxe=0.15*sum;else if(sum>300&&sum<450)taxe=0.2*(sum-300)+A;}else{sum=(hour-M)*1.5*10+PAY;if(sum<300)taxe=0.15*sum;else if(sum>300&&sum<450)taxe=0.2*(sum-300)+A;elsetaxe=0.25*(sum-450)+B;}net_pay=sum-taxe;printf("总工资是%lf,税是%lf,净工资是%lf\n",sum,taxe,net_pay);return 0;}
//优化前一种方法#include <Stdio.h>#define M 40#define A 300*0.15#define B 150*0.2+Aint main (void){int hour,number;double sum=0,taxe=0,net_pay=0,basic;printf("Enter the number corresponding to the desired pay rate or action\n");printf("1)$8.75/hr2)$9.33/hr\n3)$10.00/hr4)$11.20/hr\n5)quit\n");scanf("%d",&number);while(number!=5){switch(number){case 1:basic=8.75;break;case 2:basic=9.33;break;case 3:basic=10;break;case 4:basic=11.2;break;default:printf("请输入1-4\n");}printf("input the hour\n");do{scanf("%d",&hour);}while(hour<0);if(hour<=M){sum=hour*basic;if(sum<300)taxe=0.15*sum;else if(sum>300&&sum<450)taxe=0.2*(sum-300)+A;}else{sum=(hour-M)*1.5*basic+basic*40;if(sum<300)taxe=0.15*sum;else if(sum>300&&sum<450)taxe=0.2*(sum-300)+A;elsetaxe=0.25*(sum-450)+B;}net_pay=sum-taxe;printf("总工资是%lf,税是%lf,净工资是%lf\n",sum,taxe,net_pay);printf("请输入下一组数据\n");scanf("%d",&number);}return 0;}
//略微改动的尝试#include <Stdio.h>#define M 40#define A 300*0.15#define B 150*0.2+Aint main (void){int hour,number;double sum=0,taxe=0,net_pay=0,basic;printf("Enter the number corresponding to the desired pay rate or action\n");printf("1)$8.75/hr2)$9.33/hr\n3)$10.00/hr4)$11.20/hr\n5)quit\n");scanf("%d",&number);while(1){switch(number){case 1:basic=8.75;break;case 2:basic=9.33;break;case 3:basic=10;break;case 4:basic=11.2;break;case 5:return 0;default:printf("请输入1-4\n");}printf("input the hour\n");do{scanf("%d",&hour);}while(hour<0);if(hour<=M){sum=hour*basic;if(sum<300)taxe=0.15*sum;else if(sum>300&&sum<450)taxe=0.2*(sum-300)+A;}else{sum=(hour-M)*1.5*basic+basic*40;if(sum<300)taxe=0.15*sum;else if(sum>300&&sum<450)taxe=0.2*(sum-300)+A;elsetaxe=0.25*(sum-450)+B;}net_pay=sum-taxe;printf("总工资是%lf,税是%lf,净工资是%lf\n",sum,taxe,net_pay);printf("请输入下一组数据\n");scanf("%d",&number);}return 0;}
//编写一个程序,接受一个整数输入,然后显示所有小于或等于该数的素数#include <Stdio.h>int main (void){unsigned long num; //接受的整数unsigned long div;//可能的素数unsigned long number;//小于输入num的数int isprime; //素数的标记printf("please input an integer for analysis: ");printf("Enter q to quit\n");while(scanf("%lu",&num)==1){for(number=2;number<=num;number++){for(div=2,isprime=1;(div*div)<=number;div++)if(number%div==0){isprime=0; //不是素数}if(isprime)printf("%lu is prime.\n",number);}printf("Please enter another integer for analysis: ");printf("Enter q to quit.\n");}printf("Bye\n");return 0;}
//第十题#include <Stdio.h>#define RATE1 0.15#define RATE2 0.28#define SINGLE 17850#define HOUSEHOLDER 23900#define MARRIED_COMMON 29750#define MARRIED_DIVORCED 14875int main (void){int basic,number;unsigned long tax,income;printf("Please enter a number: ");printf("1-----已婚\n2------户主\n3------已婚,共有\n4--------已婚,离异\n");printf("按q退出\n");while((scanf("%d",&number)==1)){switch(number){case 1:basic=SINGLE;break;case 2:basic=HOUSEHOLDER;break;case 3:basic=MARRIED_COMMON;break;case 4:basic=MARRIED_DIVORCED;break;default:printf("输入错误,请选择1-4之间的数\n");}printf("请输入您的收入\n");scanf("%lu",&income);if(income>basic){tax=RATE1*basic+RATE2*(income-basic);}elsetax=RATE1*basic;printf("tax is %d\n",tax);printf("请输入下一组数据");}return 0;}
0 0
- c primer plus7.12编程练习
- C Primer Plus7-1
- C Primer Plus7-2
- C Primer Plus7-3
- C Primer Plus7-4
- C Primer Plus7-5
- C Primer Plus7-6
- C Primer Plus7-9
- C.Primer.Plus(第六版)第12章 编程练习
- c++primer plus 2.7编程练习作业
- C++primer plus 编程练习10.10
- C Primer Plus第二章编程练习
- c++primer plus第五章编程练习
- C++primer plus第六章编程练习
- C++primer plus第十七章编程练习
- C Primer Plus 练习 6-12
- C primer plus 第十章 练习12:
- C++Primer 练习 12.7
- Hadoop深入学习:解析HDFS的写文件流程
- ORA-29275 的问题
- 文章标题
- PL/SQL使用技巧
- HTTP Content-type 与 AFNetworking
- c primer plus7.12编程练习
- SQL/LINQ/Lamda
- [HDU1789]Doing Homework again[贪心]
- 使用easyBCD 安装 Win8 + Ubuntu 13.10 双系统
- java-计算任意日期所在周、月、年的第一天与最后一天
- 2015.06.23
- Eclipse自动生成作者、日期注释等功能
- 20150623----Android-Settings源码分析
- Load resources from relative path using local html in uiwebview