The C Primer Plus 第七章答案

7.2
#include<stdio.h>
#include<string.h>
int main(void)
{
    int i=0;
    int s;
    char ch;
    while((ch=getchar())!='#')
    {
        putchar(ch);
        printf("%d ",ch);
        i++;
        if(i%8==0)
            printf("\n");
    }
    printf("\n");
    return 0;
}

7.3
#include<stdio.h>
int main(void)
{
	int integer, i, j;
	i = j = 0;
	float sum_even = 0.0, sum_odd = 0.0;
	while (scanf("%d", &integer) == 1)
	{
		if (integer == 0)
			break;
		else if (integer % 2 == 0)
		{
			i++;
			sum_even += integer;
		}
		else
		{
			j++;
			sum_odd += integer;
		}

	}
	printf("偶数的个数:%d,偶数的平均值:%.2f,奇数的个数:%d,奇数的平均值:%.2f\n", i, sum_even / i, j, sum_odd / j);
	return 0;
}

7.6
#include<stdio.h>
#include<ctype.h>
int main(void)
{
	char ch;
	int i,j;//j:记录e出现的位置
	int count;//出现的次数
	i=j=count=0;
	while((ch=getchar())!='#')
	{
			i++;
			if(ch=='e')
				j=i;
			if(j+1==i&&ch=='i')
				count++;

		}

printf("ei出现的次数:%d\n",count);
	return 0;
}
7.9
#include<stdio.h>
#include<stdbool.h>
bool isPrimer(int num);
int main(void)
{
	int num;
	do
	{
		printf("请输入一个整数;");

	} while (scanf("%d", &num) != 1);
	for (; num >= 1; num--)
	{
		if (isPrimer(num))
			printf("%d ", num);
	}
	printf("\n");
	return 0;
}
bool isPrimer(int num)
{
	int i;
	for (i = num - 1; i>1; i--)
	{
		if (num%i == 0)
			return false;
	}
	return true;
}
7.10
#include<stdio.h>
#define ANGLE 1//单身
#define HUZHU 2//户主
#define MARRY_1 3//已婚,共有
#define MARRY_2 4//离异
#define MONEY_1 17850
#define MONEY_2 23900
#define MONEY_3 29750
#define MONEY_4 14875

int main(void)
{
	int sex;
	float number,s;
	char ch;
	printf("请正确选择类型:\n");
			printf("1:单身			2:户主\n");
			printf("3:已婚,共有	4:已婚,离异\n");
			printf("'q':退出\n");
	while(scanf("%d%f",&sex,&number)==2&&sex>=1&&sex<=4)
	{
		if(sex==ANGLE)
		{
			if(number<=MONEY_1)
				s=number*0.15;
			else
				s=(number-MONEY_1)*0.28+MONEY_1*0.15;
		}
		else if(sex==HUZHU)
		{
			if(number<=MONEY_2)
				s=number*0.15;
			else
				s=(number-MONEY_2)*0.28+MONEY_2*0.15;
		}
		else if(sex==MARRY_1)
		{
			if(number<=MONEY_3)
			s=number*0.15;
			else
				s=MONEY_3*0.15+(number-MONEY_3)*0.208;
		}
		if(sex==MARRY_2)
		{
			if(number<=MONEY_4)
				s=number*0.15;
			else
				s=MONEY_4*0.15+(number-MONEY_4)*0.28;
		}
		printf("应缴纳税费:%.2f\n",s);
	}
	printf("Bye!\n");
	return 0;
}
7.11
#include<stdio.h>
#define YANG 2.05
#define TIANCAI 1.15
#define HULUOBO 1.09
#define DISCOUNT 0.05

int main(void)
{
	double num, s1, s2, s3, s, dis;
	double sum, d, sum_1, pay, b1, b2, b3, b;
	pay = dis = s = 0;
	b1 = b2 = b3 = sum = b = 0;
	char ch;
	while (1)
	{
		do
		{
			printf("请选择蔬菜:\n");
			printf("a:洋蓟的磅数	b:甜菜的磅数	c:胡萝卜的磅数	q:退出\n");
		} while (scanf("%c", &ch) != 1);
		if (ch == 'q')
			break;
		printf("请输入重量:");
		scanf("%lf", &num);//订购的重量
		switch (ch)
		{
		case 'a': b1 += num;  printf("物品售价:%f 订购的重量:%lf\n ", YANG, b1);
			break;//b:物品重量 s_1:售价
		case 'b': b2 += num;  printf("物品售价:%f 订购的重量:%lf\n ", TIANCAI, b2);
			break;
		case 'c': b3 += num;  printf("物品售价:%f 订购的重量:%lf\n ", HULUOBO, b3);
			break;
		}
		b += b1 + b2 + b3;
		while ((getchar()) != '\n')
			continue;

	}
	if (b>0 && b <= 5)
		s = 6.5;//s:运费和包装费
	else if ((b > 5) && b < 20)
		s = 14;
	else if (b > 20)
		s = (b - 20)*0.5 + 14;
	sum = b1*YANG + b2*TIANCAI + b3*HULUOBO;//订购的蔬菜费用
	sum_1 = sum;
	if (sum >= 100)
		dis = sum*DISCOUNT;//折扣
	d = sum_1 + s - dis;
	printf("运费和包装费:%lf", s);
	if (sum >= 100)
		printf("  折扣的费用:%lf", dis);
	printf("订购的蔬菜费用:%lf 订单的总费用:%lf\n", sum, d);
	return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值