可以看下原因是什么吗?

统计输入的字符串中平均每句话包含的单词个数,单词间以空格、“,”或“.”结束,每个句子以“.”结束

#include<stdio.h>
#include<string.h>
int main()
{
    char s[50],a[10]={0};
    gets(s);
    int i=0,sentence=0,word=0,j=0,sum=0,aver;
    while(s[i]!='\0')
    {
        if(s[i]=='.')
        sentence++;
        if((s[i]==' '||s[i]==',')&&s[i]!='.')
        word++;
        a[j++]=word+1;//将每句话的单词数存入数组a 
        if(s[i]=='.')
        word=0;
    }
    for(j=0;j<10;j++)
    sum+=a[j];
    aver=sum/sentence;
    printf("结果:\n");
    printf("共%d句话,平均每句话单词%d",sentence,aver);
    return 0;
}

代码如下,下面的代码仅依照问题的意思而来,没有考虑如每个单词前或后有两个或两个以上空格或者逗号等的情况。


#include<stdio.h>
#include<string.h>
int main()
{
    char s[100];
    int a[100];
    //测试字符串:the one sentence.the two sentence, yes.the three sentnce.
    gets(s);
    puts(s);

    int k;
    for(k = 0 ;k <100;k++){
        a[k]=0;
    }
    
    int i=0,sentence=0,word=0,j=0,sum=0;
    double aver;
    
    while(s[i]!='\0')
    {
        
        //句号.之前的也算一个单词 
        if(s[i]==' '||s[i]==','||s[i]=='.')
            word++;
        
        //每当读到句号.就是增加一个句子数,然后将此前读入的单词数计入句子数目数组中 
        if(s[i]=='.'){
            sentence++;
            a[j++]=word;//将每句话的单词数存入数组a 
        }

        
        if(s[i]=='.')
            word=0;
        //读取字符串s中的下一个字符。 
        i++;
    }
    
    for(j=0;j<100;j++)
           sum+=a[j];
       //乘以1.0用于将结果转换为double类型。 
    aver=sum*1.0/sentence;
    
    printf("结果:\n");
    printf("共%d句话,%d个单词,平均每句话单词%lf",sentence,sum,aver);
    return 0;
}

我咋没见你的{},{}用了不丢人,有时候必须用{}
根据你代码,我感觉if for都应该加