C Primer Plus第七章编程练习答案(完整版)

前段时间有事耽搁了,所以更新速度慢了很多
第一题

//7-1
#include<stdio.h>
int main()
{
	char ch;
	int sp=0;
	int nl=0;
	int other=0;
	while((ch=getchar()) != '#')
	{
		if(ch == ' ')
			sp++;
		else if(ch == '\n')
			nl++;
		else
			other++;
	}
	printf("空格数为:%d\n换行符数为:%d\n其他字符数:%d",sp,nl,other);
	return 0;
}

第二题

//7-2
#include<stdio.h>
int main()
{
	int count=0;
	char ch;
	printf("请输入字符串:");
	while((ch=getchar())!='#')
	{
		printf("%c-%d ",ch,(int)ch);
			count++; 
		if((count%8)==0)
			printf("\n");
	}
}

第三题

//7-3
#include<stdio.h>
int main()
{
	printf("请输入整数(0停止):");
	int num;
	int even=0,odd=0;
	double sum_e=0.0;
	double sum_o=0.0;
	while(scanf("%d",&num)==1 && num!=0)
	{
		if(num%2==0)
		{
			even++;
			sum_e+=num;
		}
		else
		{
			odd++;
			sum_o+=num;	
		}	
	}
	printf("The number of even numbers is:%d\n ",even);
	if(even>0)
		printf("The average number of even numbers is:%f\n",sum_e/even);
	printf("The number of odd numbers is:%d\n ",odd);
	if(odd>0)
		printf("The average number of odd numbers is:%f",sum_o/odd);
	return 0;
}

第四题

//7-4
#include<stdio.h>
int main()
{
	char ch;
	int i=0,j=0;
	printf("请输入字符串(#停止):");
	while((ch=getchar())!='#')
	{
		if(ch=='.')
		{
			i++;
			printf("%c",'!');
		}
		else if(ch=='!')
		{
			j++;
			printf("%s","!!");
		}
		else
			printf("%c",ch);
	}
	printf(".被替换为!的次数为:%d\n",i);
	printf("!被替换为!!的次数为:%d",j);
	return 0;
}

第五题

#include<stdio.h>
int main()
{
	char ch;
	int i = 0;
    int j = 0;
    printf("请输入字符串(#停止):");
	while((ch=getchar())!='#')
	{
		switch(ch)
		{
			case '.' : putchar('!');
					   i++;	
					   break;
			case '!' : putchar('!');
					   putchar('!');
					   j++;
					   break;
			default : putchar(ch);
			
		}
	}
	printf(".被替换为!的次数为:%d\n",i);
	printf("!被替换为!!的次数为:%d",j);
	return 0;
}

第六题

//7-6
#include<stdio.h>
int main()
{
	printf("请输入一个字符串(遇到#停止):");
	char ch1,ch2;
	int count=0;
	while((ch1=getchar())!='#')
	{
		if(ch1=='e')
			if((ch2=getchar())=='i')
				count++;
	}
	printf("有%d个ei",count);
	return 0; 
	
}

第七题

//7-7
#include<stdio.h>
#define BSALARY 10
#define BHOURS 40
#define OVER 1.5
#define MONEY1 300
#define MONEY2 150
#define TAX1 0.15
#define TAX2 0.20
#define TAX3 0.25
int main()
{
	double hours,salary,tax,income;
	printf("Please tell us how many hours you work a week:");
	scanf("%lf",&hours);
	if(hours<=BHOURS)
		salary=hours*BSALARY;
	else
		salary=BSALARY*BHOURS+(hours-BHOURS)*OVER*BSALARY;
	if(salary<=MONEY1)
		tax=salary*TAX1;
	else if(salary<=MONEY1+MONEY2)
		tax=MONEY1*TAX1+(salary-MONEY1)*TAX2;
	else
		tax=MONEY1*TAX1+MONEY2*TAX2+(salary-MONEY1-MONEY2)*TAX3;	
	income=salary-tax;
	printf("The salary is:%.2f\n",salary);
	printf("The tax is:%.2f\n",tax);
	printf("The income is:%.2f",income);
	return 0;	
}
  

第八题

//7.8
#include<stdio.h>
#define BHOURS 40
#define OVER 1.5
#define MONEY1 300
#define MONEY2 150
#define TAX1 0.15
#define TAX2 0.20
#define TAX3 0.25
int main()
{
	double hours,salary,tax,income,BSALARY;
    printf("***************************************************************** \n");
    printf("Enter the number corresponding to the desired pay rate or action: \n");
    printf("1) $8.75/hr           2) $9.33/hr\n3) $10.00/hr          4) $11.20/hr\n5) quit \n");
    printf("***************************************************************** \n");
	int x=1;
	int num;
	scanf("%d",&num);
	while(x)
	{
		switch (num)
		{
			case 1: BSALARY=8.75;
					x=0;
					break;
			case 2: BSALARY=9.33;
					x=0;
					break;
			case 3: BSALARY=10.00;
					x=0;
					break;
			case 4: BSALARY=11.20;
					x=0;
					break;
			case 5: return 0;
			default:printf("Please input a number in 1-5");
					scanf("%d",&num);
		}
	}
	printf("Please tell us how many hours you work a week:\n");
	scanf("%lf",&hours);
	if(hours<=BHOURS)
		salary=hours*BSALARY;
	else
		salary=BSALARY*BHOURS+(hours-BHOURS)*OVER*BSALARY;
	if(salary<=MONEY1)
		tax=salary*TAX1;
	else if(salary<=MONEY1+MONEY2)
		tax=MONEY1*TAX1+(salary-MONEY1)*TAX2;
	else
		tax=MONEY1*TAX1+MONEY2*TAX2+(salary-MONEY1-MONEY2)*TAX3;	
	income=salary-tax;
	printf("The salary is:%.2f\n",salary);
	printf("The tax is:%.2f\n",tax);
	printf("The income is:%.2f",income);
	return 0;	
}

第九题

//7-9
#include<stdio.h>
int main()
{
	int num;
	printf("Please input a positive integer:");
	while((scanf("%d",&num))&&num>0)
	{
		if(num>=2)
		{
			printf("The prime numbers are:\n");
			printf("2\n");
			int div,x;
			int flag=1;
			for(x=3; x<=num; x++)
			{
				for(div=2; div<x; div++)
					if(x%div==0)
						flag=0;
				if(flag)
					printf("%d\n",x);
			}
		}
		else
			printf("No pirme");			
	}
	return 0;
}

第十题

//7-10
#include<stdio.h>
int main()
{
	int ca;
	double income,tax;
	printf("请输入相应类别的代表数字:1.单身 2.户主 3.已婚,共有 4.已婚,离异\n");
	printf("请输入应纳税金额(输入q退出)");
	while((scanf("%d",&ca))&&(scanf("%lf",&income))) 
	{
		if(ca==1)
		{
			if(income<=17850)
				tax=income*0.15;
			else
				tax=17850*0.15+(income-17850)*0.28;
		}
		else if(ca==2)
		{
			if(income<=23900)
				tax=income*0.15;
			else
				tax=23900*0.15+(income-23900)*0.28;
		}
		else if(ca==3)
		{
			if(income<=29750)
				tax=income*0.15;
			else
				tax=29750*0.15+(income-29750)*0.28;
		}
		else
		{
			if(income<=14875)
				tax=income*0.15;
			else
				tax=14875*0.15+(income-14875)*0.28;
		}	
		printf("The tax is %lf",tax);	
	}	 
	return 0;
} 
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值