《C Primer Plus》第七章 编程习题

目录

7.12.1

7.12.2

7.12.3

7.12.4

7.12.5

7.12.6

7.12.7

7.12.8

7.12.9

7.12.10

7.12.11


7.12.1

编写一个程序,读到#字符停止,然后报告读取的空格数,换行符数和所有其他字符的数量。

/*7.12.1. 编写一个程序,读到#字符停止,然后报告读取的空格数,换行符数和所有其
他字符的数量。*/
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main(void)
{
	char ch;
	int i = 0;   //空格数
	int n = 0;   //换行符数
	int k = 0;   //其他字符数
	while ((ch = getchar()) != '#')
	{
		if (ch == ' ')
			i++;
		else if (ch == '\n')
			n++;
		else
			k++;
	}
	printf("空格数:%d,换行符数:%d,其他字符数:%d", i, n, k);
	return 0;
}

运行结果:

7.12.2

编写一个程序读取输入,读到#字符停止。程序要打印每个输入的字符以及对应的ASKII码(十进制)。每行打印8个“字符-ASKII码”组合。建议:使用字符计数和求模运算符(%)在每8个循环周期时打印一个换行符。

/*7.12.2. 编写一个程序读取输入,读到#字符停止。程序要打印每个输入的字符以及对应的
ASKII码(十进制)。每行打印8个“字符-ASKII码”组合。建议:使用字符计数和求模运算符
(%)在每8个循环周期时打印一个换行符。*/
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main(void)
{
	char ch;
	int n = 0;   //字符数
	while ((ch = getchar()) != '#')
	{
		n++;
		printf("%c:%d  ", ch, ch);
		if (n % 8 == 0)
		{
			printf("\n");
		}
	}
	return 0;
}

运行结果:

7.12.3

编写一个程序,读取整数直到用户输入0。输入结束后,程序应报告用户输入的偶数(不包括0)个数,这些偶数的平均值、输入的奇数个数及其奇数的平均值。

/*7.12.3. 编写一个程序,读取整数直到用户输入0。输入结束后,程序应报告用户输入的
偶数(不包括0)个数,这些偶数的平均值、输入的奇数个数及其奇数的平均值。*/
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main(void)
{
	int num;
	int even_n = 0 ;      //偶数个数
	int odd_n = 0;        //奇数个数
	float s_even = 0.0;   //所有偶数的和
	float s_odd = 0.0;    //所有奇数的和

	while (((scanf("%d", &num) == 1)) && num != 0)
	{
		if (num % 2 == 0)
		{
			s_even += num;
			++even_n;
		}
		else
		{
			s_odd += num;
			++odd_n;
		}
	}
	printf("偶数个数 = %d\n奇数个数 = %d\n偶数平均值 = %.1f\n奇数平均值 = %.1f\n",
		even_n, odd_n, s_even / even_n, s_odd / odd_n);
	return 0;
}

运行结果:

7.12.4

使用if else 语句编写一个整数读入,读到#停止。用感叹号替换句号,用两个感叹号替换原来的感叹号,最后报告进了多少次替换。

/*7.12.4. 使用if else 语句编写一个整数读入,读到#停止。用感叹号替换句号,用两个
感叹号替换原来的感叹号,最后报告进了多少次替换。*/
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main(void)
{
	char ch;
	char a = 0;    //转换次数
	while ((ch = getchar()) != '#')
	{
		if (ch == '.')
		{
			ch = '!';
			++a;
		}
		if (ch == '!')
		{
			ch = '!!';
			++a;
		}
	}
	printf("一共转换了:%d 次\n", a);
	return 0;
}

运行结果:

7.12.5

用switch重写练习4。(练习4:使用if else 语句编写一个整数读入,读到#停止。用感叹号替换句号,用两个感叹号替换原来的感叹号,最后报告进了多少次替换。)

/*7.12.5. 用switch重写练习4。*/
/*7.12.4. 使用if else 语句编写一个整数读入,读到#停止。用感叹号替换句号,用两个
感叹号替换原来的感叹号,最后报告进了多少次替换。*/
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main(void)
{
	char ch;
	char a = 0;    //转换次数
	while ((ch = getchar()) != '#')
	{
		switch (ch)
		{
		case '.':
			ch = '!';
			++a;
		case '!':
			ch = '!!';
			++a;
			break;
		default:
			break;
		}
	}
	printf("一共转换了:%d 次\n", a);
	return 0;
}

运行结果:

7.12.6

编写程序读入输入,读到#停止,报告ei出现的次数。注意:该程序要记录前一个字符和当前字符。用"Receive your eieio award"这样的输入来测试。

/*7.12.6. 编写程序读入输入,读到#停止,报告ei出现的次数。注意:该程序要记录前
一个字符和当前字符。用"Receive your eieio award"这样的输入来测试。*/
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#includ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值