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;
}