C语言一点小问题
#include<stdio.h>
int count[3];//声明一个全局变量
int main(void)
{
char choice=0;
do
{
void search(char a[100]);//寻找各种字符的函数
char word[100];//存储任意字符的数组
printf("请输入任意的字符:");
gets(word);
search(word);
printf("所输入的字符中,有%d个字母,%d个数字,%d个空格,%d个其它字符.\n",count[0],count[1],count[2],count[3]);
printf("你想再来一遍吗?");
scanf(" %c",&choice);
getchar();
}
while(choice=='y');
}
void search(char a[100])
{
int i;
for(i=0;a[i]!='\0';i++)
{
if(a[i]==32)
count[2]++;
else if(a[i]>='0' && a[i]<'9')
count[1]++;
else if(a[i]>='a' && a[i]<'z')
count[0]++;
else if(a[i]>='A' && a[i]<='Z')
count[0]++;
else
count[3]++;
}
}
为什么循环输出的结果会累加呢????怎么解决呢?各位大神`````求教啦```
[解决办法]
#include<stdio.h>int count[3]; //声明一个全局变量int main(void){ char choice=0; do { void search(char a[100]); //寻找各种字符的函数 char word[100]; //存储任意字符的数组 printf("请输入任意的字符:"); gets(word); search(word); printf("所输入的字符中,有%d个字母,%d个数字,%d个空格,%d个其它字符.\n",count[0],count[1],count[2],count[3]); printf("你想再来一遍吗?"); fflush(stdin); scanf("%c",&choice); getchar(); } while(choice=='y'); return 0;}void search(char a[100]){ int i; for (i = 0;i < 3; ++i) { count[i] = 0; } for(i=0;a[i]!='\0';i++) { if(a[i]==32) count[2]++; else if(a[i]>='0' && a[i]<'9') count[1]++; else if(a[i]>='a' && a[i]<'z') count[0]++; else if(a[i]>='A' && a[i]<='Z') count[0]++; else count[3]++; }}
[解决办法]
我以为什么哦。这些都是小问题,你每次重新开始输入字符的时候,count[0]=0,count[1]=0;count[2]=0;懂了吗
#include<stdio.h>
int count[4]; //声明一个全局变量,这是4 ,不是3;数组下标是4-1=3;
int main(void)
{
char choice=0;
do
{
count[0]=0;count[1]=0;count[2]=0;count[3]=0; //要初始化为0;你每次重新计数了,要使它们为0
void search(char a[100]); //寻找各种字符的函数
char word[100]; //存储任意字符的数组
printf("请输入任意的字符:");
gets(word);
search(word);
printf("所输入的字符中,有%d个字母,%d个数字,%d个空格,%d个其它字符.\n",count[0],count[1],count[2],count[3]);
printf("你想再来一遍吗?");
scanf(" %c",&choice);
getchar();
}
while(choice=='y');
}
void search(char a[100])
{
int i;
for(i=0;a[i]!='\0';i++)
{
if(a[i]==32)
count[2]++;
else if(a[i]>='0' && a[i]<'9')
count[1]++;
else if(a[i]>='a' && a[i]<'z')
count[0]++;
else if(a[i]>='A' && a[i]<='Z')
count[0]++;
else
count[3]++;
}
}