migeee 2022-01-06 15:58 采纳率: 100%
浏览 111
已结题

C语言输入字符串,用空格逗号隔开单词,统计每个单词出现次数

问题遇到的现象和发生背景

第一个单词统计错误,其他正常

问题相关代码,请勿粘贴截图
#include<stdio.h>
#include<conio.h>
#include<string.h>
#define Max 30
#define M 10
#define N 5


int chachong(char b[M][N],int c[M],char t[N],int n)
{
    int i,r=0;
    for(i=0;i<=n;i++)
    if(strcmp(b[i],t)==0)
    {
        r=1;
        c[i]++;
        break;
    }
    return r;
}


int main()
{
    char a[Max];
    char b[M][N];
    char t[N];
    int c[M]={0};
    int i=0,j=0,yes,n=-1;
    gets(a);
    //for(i=0;i<=strlen(a);i++)
    do{
        if((a[i]==' ')||(a[i]==',')||(a[i]=='\0'))
        {
            yes=chachong(b,c,t,n);//查重
            if(yes!=1){
            n++;
            strcpy(b[n],t);
            c[n]=1;
            }//无重复,写进数组
            memset(t,0,sizeof(t));
            j=0;
        }
        else
        {
            t[j]=a[i];
            
            j++;//存到临时字符串数组
        }
        i++;
    }while(i<=strlen(a));
    //排序(2个)
    //输出
    for(i=0;i<=n;i++)
    {
          printf("%s:%d\n",b[i],c[i]);
    }

}

运行结果及报错内容

img

  • 写回答

1条回答 默认 最新

  • 书山客 2022-01-06 16:20
    关注
    
    #include<stdio.h>
    #include<conio.h>
    #include<string.h>
    #define Max 30
    #define M 10
    #define N 5
    
    int chachong(char b[M][N], int c[M], char t[N], int n)
    {
        int i, r = 0;
        for (i = 0; i <= n; i++)
            if (strcmp(b[i], t) == 0)
            {
                r = 1;
                c[i]++;
                break;
            }
        return r;
    }
    
    int main()
    {
        char a[Max];
        char b[M][N];
        char t[N] = {0};
        int c[M] = { 0 };
        int i = 0, j = 0, yes, n = 0;
        gets_s(a);
        //for(i=0;i<=strlen(a);i++)
        do {
            if ((a[i] == ' ') || (a[i] == ',') || (a[i] == '\0'))
            {
                yes = chachong(b, c, t, n);//查重
                if (yes != 1) {
                    strcpy(b[n], t);
                    c[n] += 1;
                    n++;
                }//无重复,写进数组
                memset(t, 0, sizeof(t));
                j = 0;
            }
            else
            {
                t[j] = a[i];
                j++;//存到临时字符串数组
            }
            i++;
        } while (i <= strlen(a));
        //排序(2个)
        //输出
        for (i = 0; i < n; i++)
        {
            printf("%s:%d\n", b[i], c[i]);
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月14日
  • 已采纳回答 1月6日
  • 创建了问题 1月6日

悬赏问题

  • ¥20 求快手直播间榜单匿名采集ID用户名简单能学会的
  • ¥15 DS18B20内部ADC模数转换器
  • ¥15 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历