C Primer Plus 第六版---编程练习7

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

/*
* if(输入 != #)
*	读取输入;
*	if(输入 == 空格)
*		count1++;
*	else if(输入 == 换行)
*		count2++;
*	else
*		count3++;
*输出统计
*/
#include<stdio.h>
#define SPACE ' '
#define LINE '\n'
int main()
{
	int sc = 0, lc = 0, oc = 0;
	char ch;
	while ((ch = getchar()) != '#')
	{
		if (ch == SPACE)
			sc++;
		else if (ch == LINE)
			lc++;
		else
			oc++;
	}
	printf("空格字符数%d, 换行字符数%d, 其他字符数%d\n", sc, lc, oc);
	return 0;
}

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

/*
* if(input != '#')
*	读取input
*	while(字符数 % 8 != 0)
*		输出字符
*		输出ASCII码
* 
*/
#include<stdio.h>
#define LINE 8

int main()
{
	int count = 0;
	char ch;
	while ((ch = getchar() != '#'))
	{
		count++;
		printf("%c %d", ch, ch);
		if (count % LINE == 0)
			printf("\n");
	}
	return 0;
}

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

/*
* while(input != 0)
*	读取 input:
*	if(input % 2 ==0)
*		sum1 += input;
*		count1++;
*		average1 = sum1 / count1;
*	else
*		sum2 += input;
*		count2++;
*		average2 = sum2 / count2;
*printf(偶数个数、平均值;奇数个数、平均数)
* 
*/
#include<stdio.h>
int main()
{
	int even_num = 0, even_sum = 0, odd_num = 0, odd_sum = 0, integer;
	printf("输入整数(输入0来停止):");
	while (scanf("%d", &integer) == 1 && integer != 0)
	{
		if (integer % 2 == 0)
		{
			even_num++;
			even_sum += integer;
		}
		else
		{
			odd_num++;
			odd_sum += integer;
		}
		printf("输入整数(输入0停止)\n");
	}
	printf("偶数有%d个,其平均数为%.1f\n", even_num, (float)even_sum / even_num);
	printf("奇数有%d个,其平均数为%.1f\n", odd_num, (float)odd_sum / odd_num);
	return 0;
}

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

#include<stdio.h>
int main(void)
{
	int count = 0;
	char ch;
	printf("输入字符(#来停止)\n");
	while ((ch = getchar()) != '#')
	{
		if (ch == '.')
		{
			count++;
			printf("!");
		}
		else if (ch == '!')
		{
			count++;
			printf("!!");
		}
		else
			printf("%c", ch);
	}
	printf("替换次数为%d\n", count);
	return 0;
}

5.使用switch重写练习4。

#include<stdio.h>
int main(void)
{
	int count = 0;
	char ch;
	printf("输入字符(#来停止)\n");
	while ((ch = getchar()) != '#')
	{
		switch (ch)
		{
		case '.':count++, printf("!");
			break;
		case '!':count++, printf("!!");
			break;
		default:printf("%c", ch);
			break;
		}
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值