实现从终端获取一条语句,计算这条语句中的空格、字母、数字的个数,统计这条语句全部字符的数量,实现多次输入,并统计一共输入的字符的数量。
源代码如下:
#include
int main()
{
char ch;
int space_count = 0;
int letter_count = 0;
int num_count = 0;
int all_count = 0;
int allall_count = 0;
while (1) //多次输入
{
ch = getchar(); //从缓冲区读取字符串
if (ch == ' ')
{
space_count++; //统计空格字符个数
}
if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))
{
letter_count++; //统计字母字符个数
}
if (ch >= '0' && ch <= '9')
{
num_count++; //统计数字字符个数
}
all_count++; //统计一次输入所有字符个数
allall_count++; //统计多次输入一共输入的字符个数
if (ch == '\n')
{
printf ("space_count : %d\n",space_count);
printf ("letter_count : %d\n",letter_count);
printf ("num_count : %d\n",num_count);
printf ("all_count : %d\n",all_count);
printf ("allall_count : %d\n",allall_count);
//每次清空计数变量
space_count = 0;
letter_count = 0;
num_count = 0;
all_count = 0;
}
}
return 0;
}
根据本题的题意,适合的方法是循环从标准输入读取一个字符,并将它打印到屏幕上。使用ch = getchar();可以做到这一点,另外,scanf("%c",&ch);的功能也是一样。我们在完成问题时,需要灵活使用各种方法,千万不能被固有思想束缚。
不过今天在玩输入输出时,碰到一个问题。代码如下:
char s[10];
scanf("%s",s);
printf ("%s\n",s);
我又做了这些测试:
char s[10];
scanf("%s",s);
printf ("%s\n",s);
printf ("%s\n",s+12);
而我加上指针时,又出现了其他结果:
char s[10];
char *p;
scanf("%s",s);
printf ("%s\n",s);
p = s;
printf ("%s\n",s);
如果我在其中进行一个整形的变量赋值,结果能正常输出14个字符:
char s[10];
scanf("%s",s);
printf ("%s\n",s);
int a = 0;
printf ("%s\n",s);