C Primer Plus (第六版)中文版 7.12编程练习

  • 格式:doc
  • 大小:100.00 KB
  • 文档页数:11

C Primer Plus (第六版)中文版 7.12编程练习 /********************** 一 **************************** #include #include int main(void) { char ch; int space = 0;//空格数 int line = 0;//换行符 int other = 0;//其他字符 printf("输入你想要测试的字符(#字符结束)\n"); while ((ch=getchar()) != '#') { if (ch == ' ') space++; else if (ch == '\n') line++; else other++; } printf("\n您一共输入\n%d个空格,%d个换行符,%d个其他字符\n", space, line, other); return 0; } */

/********************** 二 **************************** #include #include int main(void) { char ch=1; int count=0;//字符计数 printf("请输入字符(#字符结束)\n"); while ((ch = getchar()) != '#') { printf("%c-%d\t", ch,ch); count++; if (count % 8 == 0) printf("\n"); } printf("\n"); printf("一共输入%d个字符,输入结束\n",count); return 0; } */ /********************** 三 **************************** #include #include int main(void) { int num = 0; int even = 0;//偶数计数 int odd = 0;//奇数计数 int even_sum=0;//偶数之和 int odd_sum=0;//奇数之和 printf("请输入整数(输入0结束)\n"); while (scanf("%d",&num)==1) { if (num != 0) { if (num % 2 == 0) { even_sum = even_sum + num; even++; } else { odd_sum = odd_sum + num; odd++; } } else break; } printf("输入数值0,入口关闭,程序结束\n"); printf("偶数个数为%d,和为%d, 平均值为%.2f\n",even,even_sum, (float)even_sum/ even); printf("奇数个数为%d,和为%d, 平均值为%.2f\n", odd, odd_sum, (float)odd_sum / odd); return 0; } */ /********************** 四 **************************** #include #include int main(void) { char ch = 0;// int count=0;//替换计数 printf("输入字符(#停止)"); while ((ch = getchar()) != '#') { if (ch == '.') { ch = '!'; count++; putchar(ch); } else if (ch == '!') { count++; putchar(ch); putchar(ch); } else putchar(ch); } printf("\n"); printf("进行了 %d 次替换", count); return 0; } */ /********************** 五 **************************** #include #include #include int main(void) { char ch = 0;// int count = 0;//替换计数 printf("输入字符(#停止)"); while ((ch = getchar()) != '#') { switch (ch) { case '.': ch = '!'; count++; putchar(ch); break; case '!': count++; putchar(ch); putchar(ch); break; default: putchar(ch); } } printf("\n"); printf("进行了 %d 次替换", count); return 0; } */ /********************** 六 **************************** #include #include int main(void) { char ch; char pre_c;//储存前一个字符 int count = 0;//ei计数 printf("输入字符(#停止)\n"); ch = getchar(); while( ch != '#') { if (ch == 'e') { pre_c = ch;//储存当前字符 ch = getchar();//读入下一个字符 if (ch == 'i') count++; } else ch = getchar(); } printf("ei出现了%d次\n", count); return 0; } */ /********************** 七 **************************** #include #define BASIC 10 //基本工资 10美元/小时 #define O_WORK 15//加班工资(超过40h后的) #define RATE_1 0.15//税率 #define RATE_2 0.2 #define RATE_3 0.25 #define NODE_1 300 //工资节点 #define NODE_2 450 int main(void) { float hours = 0;//周工作小时数 float sum = 0;//工资总额 float rate = 0;//税金 float income = 0;//净收入 printf("请输入每周工作的小时数:"); while ((scanf("%f", &hours)) == 1) { if (hours < 0) { printf("工作时间不能为负数,请重输\n"); printf("请输入每周工作的小时数:"); continue; } else if (hours <= 30) { sum = hours * BASIC; //工资总额 rate = sum*RATE_1; //税金 income = sum - rate;//净收入 } else if (hours <= 40) { sum = hours* BASIC; rate = NODE_1 * RATE_1 + (sum - NODE_1) * RATE_2; income = sum - rate; } else if (hours > 40) { sum = 40 * BASIC+(hours-40)*O_WORK; if(sum<=450) rate = NODE_1 * RATE_1 + (sum - NODE_1) * RATE_2; else rate = NODE_1 * RATE_1 + (NODE_2 - NODE_1)* RATE_2+ (sum - NODE_2) * RATE_3; income = sum - rate; } printf("工资总额%f 税金%f 净收入%f\n", sum, rate, income); printf("请输入每周工作的小时数:"); } return 0; } */ /********************** 八 **************************** #include #define GRADE_1 8.75//工资等级对应的基本工资 #define GRADE_2 9.33 #define GRADE_3 10.00 #define GRADE_4 11.20 #define O_WORK 15//加班工资(超过40h后的) #define RATE_1 0.15//税率 #define RATE_2 0.2 #define RATE_3 0.25 #define NODE_1 300 //工资节点 #define NODE_2 450 int main(void) { int grade = 0;//工资等级 float basic = 0;//基本工资 float hours = 0;//周工作小时数 float sum = 0;//工资总额 float rate = 0;//税金 float income = 0;//净收入

printf("请输入工资等级:"); while ((scanf("%d", &grade)) == 1) { switch (grade) { case 1: