7-1
#include<stdio.h>
int main(void)
{
char stop = '#';
int num_others = 0;
int num_blank = 0;
int num_enter = 0;
char ch;
printf("请输入一段字符串:");
while ((ch = getchar()) != stop)
{
if (ch == ' ') //注意字符和字符串区别,一个是单引号,一个是双引号
num_blank++;
else if (ch == '\n')//注意字符和字符串区别,一个是单引号,一个是双引号
num_enter++;
else
num_others++;
}
printf("空格数有%d个,换行符数有%d个,其他字符有%d个", num_blank, num_enter, num_others);
return 0;
}
7-2
int main(void)
{
char stop = '#';
int num_char = 0;
char ch;
printf("请输入一串字符:\n");
while ((ch = getchar()) != stop)
{
//num_char++;
if (num_char++ % 8 == 0)//如果上一步++,这里便不再是%8,而是%7
{
printf("\n");
}
if (ch == '\n')//换行符要显示出来
printf("'\\n'-%.3d ", ch);
else if (ch == '\t')//制表符要显示出来
printf("'\\t'-%.3d ", ch);
else
printf("%c-%.3d ", ch, ch);
}
printf("Done");
return 0;
}
这里有一个缺点,只要输入换行键程序就会输出结果,此时继续输入的话,第一行的8个便不再是8个,而是和上一次输出剩的最后一行输出加起来为8个;
这样就是一直等待输入,直到输入#才开始运行;
7-3
int main(void)
{
int num_odd = 0;
int num_even = 0;
double average = 0;
int sum = 0;
int num = 0;
int input;
printf("输入一串整数(输入0结束程序):");
while (scanf("%d", &input) == 1 && input != 0)
{
if (input % 2 == 0)
num_even++;
else
num_odd++;
num++;
sum += input;
}
average = (double)sum / num;
printf("你输入的偶数有%d个,奇数有%d个,平均数为%lf.", num_even, num_odd, average);
return 0;
}
7-4
int main(void)
{
char stop = '#';
int num_convert1 = 0;
int num_convert2 = 0;
char ch;