编写一个将输入复制到输出的程序,并将其中连续的多个空格用一个空格代替。 思路
#include <stdio.h>
int main(){
int c;
int count;
while ((c=getchar()) != EOF)
{
if(c == ' ')
{
++count;
if (count < 2)
{
putchar(c);
}
else{
--count;
}
}
else{
putchar(c);
count = 0;
}
}
}
编写一个程序,打印输入中单词长度的直方图。水平方向的直方图比较容易绘制,垂直方向的直方图则要困难些。 水平版本
#include <stdio.h>
int main(){
int c=0;
int array[3]={0,0,0};
while ((c = getchar()) != '\\n')
{
if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z')
{
array[0] = array[0]+1;
}
else if (c >= '0' && c <='9')
{
array[1] =array[1]+1;
}
else
{
array[2] =array[2]+1;
}
}
for (int b = 0; b < 3; b++)
{
for (int i = 0; i < array[b]; i++)
{
printf("*");
}
printf("%d\\n", array[b]);
}
}
编写一个程序,打印输入中各个字符出现频度的直方图
#include <stdio.h>
int main(){
int array[26];
int c;
for (int i = 0; i < 26; i++)
{
array[i] = 0;
}
while ((c = getchar())!= '\\n' )
{
if(c >= 'A' && c <= 'Z'){
array[c - 65]++;
}
else if (c >='a' && c <='z')
{
array[c - 97]++;
}
}
for (int b = 0; b < 26; b++)
{
printf("%c", b + 65);
for (int i = 0; i < array[b]; i++)
{
printf("*");
}
printf("%d\\n", array[b]);
}
}