标题:求大佬教程序c语言,老是写错
只看楼主
insist99
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2018-12-19
结帖率:0
已结贴  问题点数:20 回复次数:6 
求大佬教程序c语言,老是写错
从文本中输入一篇英语文章到程序中,计算里面的单词数,再求字母的众数不分大小写,在按照单词长到短排序到一个新建的文本中。求大佬教我谢谢!!!
搜索更多相关主题的帖子: 教程 c语言 文本 单词 大小写 
2018-12-23 20:41
哈哈笑吧
Rank: 2
等 级:论坛游民
威 望:1
帖 子:12
专家分:99
注 册:2017-11-24
得分:20 
#include<stdio.h>
#include<string.h>
//替换字符串
void swap(char *a,char *b)
{
    char temp[25]={0};
    strcpy(temp,a);
    strcpy(a,b);
    strcpy(b,temp);
}
int main()
{
    char str[100]={0}, p[25][10];
    int a[25][10];
    //变量定义的有点多
    int sum=0,i,j=0,x=0,y=0,m=0,r=0,t=0;
    printf("请输入单词:");
    //输入英语文章
    gets(str);
    //统计单词的数量
    for(i=0;str[i]!=0;i++)
    {
        if((str[i+1]==' '||str[i]<65||str[i]>127||str[i+1]==0)&&str[i]!=' ')
        {
            ++sum;
        }
    }
    printf("单词数:%d\n",sum);
    //将str字符串分成段赋给二维字符数组
    for(i=0;str[i]!=0;i++)
    {
        //如果字符是空格,或者是'\0',或者不是字母,将字符值改为'\0',从而达到p得到的是一个单词,而不是一段单词
            if(str[i]==' '||str[i+1]==0||str[i]<65||str[i]>127)
            {
                p[j++][m]='\0';
                m=0;
            }
            else    //如果字符不是空格,不是'\0',但如果字符是字母,就开始赋值
            {
                p[j][m++]=str[i];        
            }        
    }
    //输出字符串
    for(i=0;i<j;i++)
    {
        printf("%s ",p[i]);
    }
    //冒泡排序
    for(r=0;r<j;r++)
    {
        for(t=r+1;t<j;t++)
        {
            if(strlen(p[r])<strlen(p[t]))
            {
                swap(p[r],p[t]);
            }
        }
    }
    //输出排序后的字符串
    printf("\n排序后\n");
    for(i=0;i<j;i++)
    {
        printf("%s ",p[i]);
    }
    //写入文件
    FILE *fp1;
    fp1=fopen("str.txt","w+");
    for(i=0;i<j;i++)
    {
        fwrite(p[i],1,strlen(p[i]),fp1);
        fwrite("\n",1,1,fp1);
    }
    //关闭文件写入
    fclose(fp1);
    getchar();
    return 0;
}

本人能力有限,做的并不完美,请谅解
2018-12-24 15:46
哈哈笑吧
Rank: 2
等 级:论坛游民
威 望:1
帖 子:12
专家分:99
注 册:2017-11-24
得分:0 
1.rar (31.57 KB)
2018-12-24 15:48
insist99
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2018-12-19
得分:0 
大佬,谢谢啦,可是还是不对呀,排序有错误。
2018-12-25 20:40
insist99
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2018-12-19
得分:0 
结果是这样子的:
unforgettaunforgettaexperienceexperienceexperiencesophomore
unforgettaexperienceexperienceexperiencesophomore
experienceexperienceexperiencesophomore
experienceexperiencesophomore
experiencesophomore
sophomore
Everyone
course
sports
senior
school
school
annual
years
track
field
have
held
When
high
also
game
the
was
and
and
old
was
an
in
of
my
a
I
I
I





2018-12-25 20:45
哈哈笑吧
Rank: 2
等 级:论坛游民
威 望:1
帖 子:12
专家分:99
注 册:2017-11-24
得分:0 
试试把数组的范围再增加点,可能个别单词超过了数组范围,导致越界
2018-12-26 10:19
insist99
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2018-12-19
得分:0 
谢谢你啦
2018-12-28 09:23



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-492241-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.171578 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved