| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1236 人关注过本帖
标题:我正在自学,在这里卡死挂机了...有一些地方不懂,能不能解析一下,谢谢
取消只看楼主 加入收藏
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
结帖率:97.22%
收藏
已结贴  问题点数:20 回复次数:13 
我正在自学,在这里卡死挂机了...有一些地方不懂,能不能解析一下,谢谢
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
#include <ctype.h>
#define TEXTLEN 10000
#define BUFFERSIZE 100
#define MAXWORDS 500
#define WORDLEN 15

int main(void)
{
    char text[TEXTLEN]={0};
    char buffer[BUFFERSIZE]={0};
    char jieshu[]="*\n";

    const char kongge=' ';
    const char danying='\'';

    char words[MAXWORDS][WORDLEN+1];
    int nword[MAXWORDS];
    char word[WORDLEN+1];
    int wordlen=0;
    int wordcount=0;
    int i;
    int index;
    bool isnew=true;

    printf("这个程序能算出每个单词出现的次数");
    printf("\n请输入文本:\n\n");

    while(true)
    {
        if(!strcmp(fgets(buffer,BUFFERSIZE,stdin),jieshu))
            break;
        if(strlen(text)+strlen(buffer)+1>TEXTLEN)
        {
            printf("这已经是文本容量的最大值了。");
            return 1;
        }
        strcat(text,buffer);
    }
    for(i=0;i<strlen(text);i++)
    {
        if(text[i]==danying||isalnum(text[i]))
            continue;
        text[i]=kongge;
    }
    index=0;
    while(true)
    {
        while(text[index]==kongge)
            index++;
        if(text[index]='\0')
            break;
        wordlen=0;
        while(text[index]==kongge||isalpha(text[index]))
        {
            if(wordlen==WORDLEN)
            {
                printf("这已经是单词长度的最大值了。");
                return 1;
            }
            word[wordlen++]=tolower(text[index++]);
        }
        word[wordlen]='\0';
        
        for(i=0;i<wordcount;i++)               在这里就开始摸不清头脑了
            if(strcmp(word,words[i])==0)         wordcount代表什么?为什么要把它定义为0?
            {                                    输出结果也不对,
                ++nword[i];                      只用解析这下面的一段就行了,谢谢
                isnew=false;
                break;
            }
            isnew=true;
            if(isnew)
            {
                if(wordcount>=MAXWORDS)
                {
                    printf("\n对不起,单词个数已经超过了最大值。\n");
                    printf("(我们不能得到这个结果)\n");
                    return 1;
                }
                strcpy(words[wordcount],word);
                nword[wordcount++]=1;
            }
    }
    for(i=0;i<wordcount;i++)
    {
        if(!(i%3))
            printf("\n");
        printf(" %-15s%5d",words[i],nword[i]);
    }
    return 0;
}

搜索更多相关主题的帖子: include 自学 10000 
2012-10-20 18:09
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
收藏
得分:0 
主要是看wordcount,我实在是不懂它的意思...

I have not failed completely
2012-10-20 18:20
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
收藏
得分:0 
可能有些地方有些问题,还请帮忙改进一下

I have not failed completely
2012-10-20 19:45
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
收藏
得分:0 
额...可是就是因为后面我不懂才上这么大的,不然我也想把它分支的...

I have not failed completely
2012-10-20 22:29
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
收藏
得分:0 
帮忙看下吧,不然我真卡在这里了...

I have not failed completely
2012-10-20 22:31
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
收藏
得分:0 
.....那个先放着吧,能不能帮我看看这道题:
        #include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdbool.h>

int main(void)
{
    char A[100];
    int i,Bcc,PQ;

    printf("请输入一段文字:\n");
    fgets(A,sizeof(A),stdin);
    for(i=0;i<strlen(A);i++)
    {
        if(isalnum(A[i])==0)
            A[i]=' ';
        A[i]=tolower(A[i]);
    }
    while(true)
    {
       for(PQ=0;PQ<A[i];PQ++)
           if(A[PQ]=' ')
               PQ++;
       for(Bcc=0;Bcc<=0;Bcc++)
       {
           if(strstr(A[i],A[Bcc])==NULL)
           {
              printf("\n这不是一个回语\n");
              return 1;
           }
           i--;
       }
       printf("\n这是一个回语\n");
       break;
    }
    return 0;
}

       编辑器提出strstr的用法不对,而且结果也有异常
        希望帮我纠下错,谢谢
       任选一题答都给分的

I have not failed completely
2012-10-20 23:36
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
收藏
得分:0 
就是检查这是不是一个回文,如:Madam ,I'm Adam就是一个回文,因为它正读反读均相同,(忽略大小写,忽略标点和空白)

I have not failed completely
2012-10-21 09:33
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
收藏
得分:0 
顺便问一下,return 1是直接跳出所有循环还是只跳出当前的循环?

I have not failed completely
2012-10-21 09:44
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
收藏
得分:0 
我改了一些错误,可输出还是有点问题,下面是改过以后的程序:
           
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdbool.h>

int main(void)
{
    char A[100];
    int i,PQ=0;
    bool OPQ=true;
    printf("请输入一段文字:\n");
    fgets(A,sizeof(A),stdin);
    for(i=0;i<strlen(A);i++)
    {
        if(isalnum(A[i])==0)
            A[i]=' ';
        else
        A[i]=tolower(A[i]);
    }
    while(true)
    {
         while(PQ<strlen(A))
         {
           if(A[PQ]==' ')
           {
               PQ++;
           continue;
           }
           if(A[PQ]!=A[i-PQ])
           {
              printf("\n这不是一个回语\n");
              OPQ=false;
              return 1;
           }PQ++;
       }
       if(OPQ==true)
       printf("\n这是一个回语\n");
       break;
    }
    return 0;
}

        请帮忙改一改,我也得快点结账了,不然都没分用了...

I have not failed completely
2012-10-21 11:30
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
收藏
得分:0 
我又改了一下,但是,你懂的....

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdbool.h>

int main(void)
{
    char A[100]={0};
    int i,PQ=0;
    bool OPQ=true;
    printf("请输入一段文字:\n");
    fgets(A,sizeof(A),stdin);
    for(i=0;i<(strlen(A));i++)
    {
        if(isalnum(A[i])==0)
            A[i]=' ';
        else
        A[i]=tolower(A[i]);
    }
         while(PQ<(strlen(A)))
         {
           if(A[PQ]==' ')
           {
               PQ++;
           continue;
           }
           if(A[PQ]!=A[i-PQ])
           {
              printf("\n这不是一个回文\n");
              OPQ=false;
              return 1;
           }PQ++;
         }
       if(OPQ==true)
       printf("\n这是一个回文\n");
    return 0;
}

        

I have not failed completely
2012-10-21 13:53
快速回复:我正在自学,在这里卡死挂机了...有一些地方不懂,能不能解析一下,谢 ...
数据加载中...
 
   



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

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