1.编写一个程序读取输入,读到#字符停止,然后报告读取的空格数、换行符数和所有其他字符的数量。
#include <stdio.h>
int main(void)
{
char ch;
int s_c,n_c,_ch;
s_c=n_c=_ch=0;
printf("Enter the character for count('#' to quit):\n");
while((ch=getchar())!='#')
{
if(ch==' ')
s_c++; //统计空格
else if(ch=='\n')
n_c++; //统计换行符
else
_ch++; //统计其他字符
}
printf("Space count=%d,'\\n' count=%d,other characters=%d\n",s_c,n_c,_ch);
return 0;
}
2.编写一个程序读取输入,读到#字符停止。程序要打印每个输入的字符以及对应的 ASCII码(十进制)。每行打印8个“ 字符- ASCII码” 组合。建议: 使用字符计数和求模运算符(%)在每 8个循环周期时打印一个换行符。
#include <stdio.h>
int main(void)
{
char ch;
int count=0; //字符计数
printf("Enter the character,'#' to quit:\n");
while((ch=getchar())!='#')
{
if(ch=='\n') //换行符不计算在内
continue;
count++;
printf("%c-%d;",ch,ch);
if(count%8==0)
printf("\n");
}
return 0;
}
注:由于是缓冲输出,输入Enter键时将输出在缓冲区中的字符(包括换行符本身),换行符不计算在内使得程序的运行更加清晰。
3.编写一个程序,读取整数直到用户输入0。输入结束后,程序应报告用户输入的偶数(不包括 0)个数、这些偶数的平均值、输入的奇数个数及其奇数的平均值。
#include <stdio.h>
int main(void)
{
int n;
int odd_sum,even_sum; //偶数的和、奇数的和
int odd_count,even_count; //偶数计数、奇数计数
float odd_average,even_average; //偶数平均值、奇数平均值
odd_sum=even_sum=odd_count=even_count=0;
printf("Enter the integer for analysis,0 to quit:\n");
while(scanf("%d",&n)==1)
{
if(n==0)
break;
if(n%2==0)
{
odd_count++; //统计偶数个数
odd_sum+=n; //偶数的和
}
else
{
even_count++; //统计奇数个数
even_sum+=n; //奇数的和
}
}
odd_average=(float)odd_sum/odd_count;
even_average=(float)even_sum/even_count;
if(odd_count!=0)
printf("odd_count:%d,The average is %.3f\n",odd_count,odd_average);
else
printf("No odd number.\n");
if(even_count!=0)
printf("even_count:%d,The average is %.3f\n",even_count,even_average);
else
printf("No even number.\n");
return 0;
}
4.使用 if else语句编写一个程序读取输入,读到#停止。用感叹号替换句号,用两个感叹号替换原来的感叹号,最后报告进行了多少次替换。
#include <stdio.h>
int main(void)
{
char ch;
int count1,count2;
count1=count2=0;
printf("Enter the characters for analysis,'#' to quit:\n");
while((ch=getchar())!='#')
{
if(ch=='.')
{
ch='!'; //句号转换为感叹号
count1++; //句号转换次数
putchar(ch);
}
else if(ch=='!')
{
count2++; //感叹号转换次数
putchar(ch);
putchar(ch); //一个感叹号转换为两个感叹号
}
else
putchar(ch);
}
pr