6.编写一个程序读取输入,直到#,并报告序列ei出现的次数。
此程序必须要记住前一个字符和当前的字符。用诸如“Receive your eieio award.”的输入测试它。
#include
int main(void) {
char former=0,present; int count=0;
while((present=getchar()) != '#') {
if((former == 'e') && (present == 'i')) count++; former = present; }
printf(\ return(0); }
7.编写程序,要求输入一周中的工作小时数,然后打印工资总额、税金以及净工资。作如下假设: a.基本工资等级=10.00美元//J,时 b.加班(超过40小时)=1.5倍的时间 c.税率 前300美元为15% 下一个150美元为20% 余下的为25%
用#define定义常量,不必关心本例是否符合当前的税法。
#include
#define BASIC 10.00 //基本工资等级=BASIC美元/小时 //b.加班
#define TIME 40 //加班(超过TIME小时) = #define ADD 1.5 //ADD倍的时间 //c.税率
#define LIMIT1 300 //前LIMIT1美元为RATE1 #define RATE1 0.15
#define LIMIT2 150 //下一个LIMIT2美元为RATE2 #define RATE2 0.20
#define RATE3 0.25 //余下的位RATE3
int main(void) {
double hours,gross,tax;
printf(\ scanf(\
if (hours > 40) hours = 40 + (hours - 40) * 1.5; gross = hours * BASIC;
printf(\ if (gross <= LIMIT1) tax = gross * RATE1;
else if (gross <= LIMIT2) tax = LIMIT1 * RATE1 + (gross - LIMIT1) * RATE2; else tax = LIMIT1 * RATE1 + LIMIT2 * RATE2 + (gross - LIMIT1 - LIMIT2) * RATE3; printf(\
printf(\ return(0); }
8.修改练习7中的假设a,使程序提供一个选择工资等级的菜单。用switch选择工资等级。程序运行的开头应该像这样:
Enter the number corresponding to the desired pay rate or action: 1) $8.75/hr 2) $9.33/hr 3) $lO.OO/hr 4) $11.20/hr 5) quit
如果选择l到4.那么程序应该请求输入工作小时数。程序应该一直循环运行,直到输入5。如果输入l到5以外的选项,那么程序应该提醒用户合适的选项是哪些,然后再循环。用#define为各种工资等级和税率定义常量。
#include
//b.加班
#define TIME 40 //加班(超过TIME小时) = #define ADD 1.5 //ADD倍的时间 //c.税率
#define LIMIT1 300 //前LIMIT1美元为RATE1 #define RATE1 0.15
#define LIMIT2 150 //下一个LIMIT2美元为RATE2 #define RATE2 0.20
#define RATE3 0.25 //余下的位RATE3
int main(void) {
double basic,hours,gross,tax;
printf(\ printf(\ printf(\ printf(\ switch( get_int() ) {
case 1: basic = 8.75; break; case 2: basic = 9.33; break; case 3: basic = 10.00; break; case 4: basic = 11.20; break;
default: printf(\退出程序 }
printf(\ printf(\ scanf(\
if (hours > 40) hours = 40 + (hours - 40) * 1.5; gross = hours * basic;
printf(\ if (gross <= LIMIT1) tax = gross * RATE1;
else if (gross <= LIMIT2) tax = LIMIT1 * RATE1 + (gross - LIMIT1) * RATE2; else tax = LIMIT1 * RATE1 + LIMIT2 * RATE2 + (gross - LIMIT1 - LIMIT2) * RATE3; printf(\
printf(\ return(0); }
int get_int(void) //得到一个合适的整数,滤除非法数 { int num; char str[40];
while(scanf(\ {
gets(str);
printf(\ }
while ( getchar() != '\\n'); return num; }
9.编写一个程序,接受一个整数输入,然后显示所有小于或等于该数的素数。
#include
int isprime(int);
int main(void) {
int num,i;
printf(\ scanf(\
printf(\ for(i=2;i<=num;i++) if( isprime(i) ) printf(\ printf(\ return(0); }
int isprime(int n) //如果n是素数 返回1,反之 返回0 { int div;
for(div = 2; div * div <= n; div++) if (n % div == 0) return 0;
return 1; }
10. 1988年United States Federal Tax Schedule是近期最基本的。它分为4类,每类有两个等级。下面是其摘要;美元数为应征税的收入。
┏━━━━━━┳━━━━━━━━━━━━━━━━━━┓
┃ 种 类 ┃ 税 金 ┃ ┣━━━━━━╋━━━━━━━━━━━━━━━━━━┫
┃单身 ┃前17·850美元按15%,超出部分按28% ┃ ┣━━━━━━╋━━━━━━━━━━━━━━━━━━┫ ┃户主 ┃前23,900美元按15%,超出部分按28%┃ ┣━━━━━━╋━━━━━━━━━━━━━━━━━━┫
┃已婚,共有 ┃前29,750美元按15%,超出部分按28% ┃ ┣━━━━━━╋━━━━━━━━━━━━━━━━━━┫ ┃已婚,离异 ┃前14,875美元按l5%,超出部分按28% ┃ ┗━━━━━━┻━━━━━━━━━━━━━━━━━━┛
例如,有20 000美元应征税收入的单身雇佣劳动者应缴税金0.15×17 850美元+0.28×(20 000美元-17 850美元)。编写一个程序,让用户指定税金种类和应征税收入,然后计算税金。使用循环以便用户可以多次输入。
#include
#define MARRIED_SHARE 29750 #define MARRIED_DIVORCE 14875 #define RATE1 0.15 #define RATE2 0.28
int main(void) {
double type,pay,tax; char ch; while(1) {
printf(\
printf(\ while((ch = getchar()) == '\\n') continue; //滤掉回车 switch(ch) {
case '1': type = SINGLE; break; case '2': type = HOST; break;
case '3': type = MARRIED_SHARE; break; case '4': type = MARRIED_DIVORCE; break;
case '5': printf(\退出程序 default : printf(\ }
printf(\ printf(\ scanf(\
if (pay <= type) tax = pay * RATE1;
else tax = type * RATE1 + (pay - type) * RATE2; printf(\ }