c编程问题(附代码)

来源:百度知道 编辑:UC知道 时间:2024/05/16 15:08:17
题目:输入一行字符,分别统计出其中的英文字母,空格,数字和其他字符的个数。
程序:
#include<stdio.h>
void main()
{char str[100];
int i,zimu,kong,shu,qita;
printf("input sentence\n");
scanf("%s",str);
for(i=0;str[i]!='\0';i++)
{if(str[i]>='a'&&str[i]<='z'||str[i]>='A'&&str[i]<='Z')
zimu++;
else if(str[i]==' ');
kong++;
else if(str[i]>='0'&&str[i]<='9')
shu++;
else qita++;
printf("zimu=%d,kongge=%d,shuzi=%d,qita=%d\n",zimu,kong,shu,qita);
}

编译软件:turboC/C++ 3.0
编译无错。
运行时,只要输入空格,比如shid 123
字母累加到4,其他全部都为零。
似乎是把空格当作结束标志了。

请问为什么。我编的 程序好像没有错。
那我应该是用什么函数来输入这个字符串?

1.
将scanf("%s",str)改为gets(str)

2.

int i,zimu,kong,shu,qita;
改为:
int i=0,zimu=0,kong=0,shu=0,qita=0;

3.
将else if(str[i]==' '); 改为else if(str[i]==' ')

4.

printf("zimu=%d,kongge=%d,shuzi=%d,qita=%d\n",zimu,kong,shu,qita);
放在这个大括号外。

5.
程序缺少末尾的大括号。

修改后的程序:

#include<stdio.h>
void main()
{char str[100];
int i=0,zimu=0,kong=0,shu=0,qita=0;
printf("input sentence\n");
gets(str);

for(i=0;str[i]!='\0';i++)
{if(str[i]>='a'&&str[i]<='z'||str[i]>='A'&&str[i]<='Z')
zimu++;
else if(str[i]==' ')
kong++;
else if(str[i]>='0'&&str[i]<='9')
shu++;
else qita++;

}
printf("zimu=%d,kongge=%d,shuzi=%d,qita=%d\n",zimu,kong,shu,qita);

}<