标题:题目是:找出一个英文句子中不同字母个数
只看楼主
bug娃娃
Rank: 2
等 级:论坛游民
帖 子:101
专家分:27
注 册:2019-3-15
结帖率:95.24%
已结贴  问题点数:15 回复次数:6 
题目是:找出一个英文句子中不同字母个数
我认为我自己写的这个代码不满足条件,但是又不知道怎么改?而且这个运行出来还是不正确的,所以希望大神们给我讲讲
//统计不同的单词个数
#include<stdio.h>
#include<string.h>

void main()
{
    int len,i,j,temp = 0;
    char input[100];
    gets(input);
    len = strlen(input);

    if(input[0] == ' ')
    {
        printf("这样不得行!\n");
    }
    else if(input[0] == '\0')
    {
        printf("这样不得行!\n");
    }
    else
    {
        for(i = 0;i < len;i++)
        {
            for(j = 0;j < i;j++)
            {
                if(input[i] == input[j])
                {
                    temp = 0;
                //    break;
                }
            }
            temp += 1;
        }
    }
    printf("不同的单词个数是%d\n",temp);
}
搜索更多相关主题的帖子: 英文 不同 个数 temp input 
2019-04-05 19:29
不懂才问
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:大草原
等 级:贵宾
威 望:29
帖 子:1501
专家分:6573
注 册:2010-7-5
得分:5 
#include<stdio.h>
#include<string.h>

void main()
{
    int len,i,j,temp = 0;
    char input[100];
    gets(input);
    len = strlen(input);

    if(input[0] == ' ')
    {
        printf("这样不得行!\n");
    }
    else if(input[0] == '\0')
    {
        printf("这样不得行!\n");
    }
    else
    {
        for(i = 0;i < len;i++)
        {
            for(j = 0;j < i;j++)
            {
                printf("现在的input[i%d]的值是%c,input[j%d]的值是%c\n",i,input[i],j,input[j]);
                if(input[i] == input[j])
                {
                    temp = 0;
                //    break;
                }
            }
            temp += 1;
        }
    }
    printf("不同的单词个数是%d\n",temp);


建议加入一些调试语句,也许能找到问题。

报告老师,我低头不是因为我在装低调,是你问的问题,我真的不会答,,,
2019-04-05 19:55
word123
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:13
帖 子:333
专家分:1622
注 册:2014-4-5
得分:5 
#include<stdio.h>
#include<string.h>
//在你的代码上手敲的,如果运行有问题,自己调一下,反正逻辑是这样的
//最好设置一个数组,bool map[128],字符也就那几个,转换为整数作为下标访问,遍历一遍查找当前字符是否已经遍历过就行了
//原代码复杂度O(n2),遍历一遍的话时间复杂度O(n)
void main()
{
    int len,i,j,temp = 0;
    char input[100];
    gets(input);
    len = strlen(input);

    if(input[0] == ' ')
    {
        printf("这样不得行!\n");
    }
    else if(input[0] == '\0')
    {
        printf("这样不得行!\n");
    }
    else
    {
        for(i = 0;i < len;i++)
        {
            for(j = 0;j < i;j++)
            {
                if(input[i] == input[j])
                {
                    //temp = 0;
                    break;
                }
            }
            if(i==j){  //说明里面循环运行完,前面没有找到相同的字符,计数
                temp += 1;
            }
        }
    }
    printf("不同的单词个数是%d\n",temp);
}
2019-04-05 21:43
bug娃娃
Rank: 2
等 级:论坛游民
帖 子:101
专家分:27
注 册:2019-3-15
得分:0 
谢谢了
2019-04-07 15:31
bug娃娃
Rank: 2
等 级:论坛游民
帖 子:101
专家分:27
注 册:2019-3-15
得分:0 
不是,我的意思是找一个只有英文和空格的英文句子中的不同字母个数,但是结果不是我想要的
2019-04-07 16:01
幻紫灵心
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山咔咔里面
等 级:贵宾
威 望:53
帖 子:395
专家分:2640
注 册:2018-3-30
得分:5 
在你的上边改的,统计不同字母数。
程序代码:
#include<stdio.h>
#include<string.h>
#include<ctype.h>
int main()
{
    int len,i,temp = 0;
    char input[100];
    int visit[150],cnt=0;
    gets(input);
    len = strlen(input);
    memset(visit,0,sizeof(visit));//初始化全部未访问
    for(i = 0;i < len;i++) {
        if(isalpha(input[i])) {//是字母
            if(visit[input[i]]==0){//未访问
                temp++;
                visit[input[i]]=1;
            }
        } else if(input[i]!=' ') {//非空格
            cnt++;
        }
    }
    printf("不同的字母个数是%d,非 字母空格:%d\n",temp,cnt);
}

saber,别哭.
2019-04-07 16:29
bug娃娃
Rank: 2
等 级:论坛游民
帖 子:101
专家分:27
注 册:2019-3-15
得分:0 
我弄出来了
2019-04-07 16:32



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




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

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