标题:能帮我看看那错了吗?
只看楼主
Sandy143
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2015-3-23
结帖率:66.67%
已结贴  问题点数:20 回复次数:4 
能帮我看看那错了吗?
问题描述
  Anagrams指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不区分大小写)所出现的次数都是相同的。例如,“Unclear”和“Nuclear”、“Rimon”和“MinOR”都是Anagrams。编写一个程序,输入两个单词,然后判断一下,这两个单词是否是Anagrams。每一个单词的长度不会超过80个字符,而且是大小写无关的。
//运行总是 NO 为什么?
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#define size 100
bool solve(char *a,char *b,int m,int n);
int main(){
    int m,n,i,j;
    char a[size];
    char b[size];
    fgets(a,size,stdin);
    fgets(b,size,stdin);
    m=strlen(a);
    n=strlen(b);
    for(i=0;i<m;i++)
    toupper(a[i]);
    for(j=0;j<n;j++)
    toupper(b[j]);
    if(solve(a,b,m,n))
    puts("Yes");
    else
    puts("NO");
}
bool solve(char a[],char b[],int m,int n){
    int i,j,k;
    bool p;
    for(i=0;i<m;i++){
        for(j=0;j<n;j++){
            if((a[i]==b[j])&&(isupper(b[j])))
            tolower(b[j]);
        }
    }
    for(k=0;k<n;k++){
        if(isupper(b[k]))
        p=false;     
    }
        p=true;
}
搜索更多相关主题的帖子: 单词 include 区分大小写 英文字母 
2015-03-23 20:12
执笔画江山
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:265
专家分:1010
注 册:2015-1-13
得分:5 
p=true;位置不对。

授人以鱼,不如授人以渔
2015-03-23 20:20
Sandy143
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2015-3-23
得分:0 
请问怎么修改呢
2015-03-23 22:03
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
得分:10 
我来个笨办法吧

程序代码:
#include <stdio.h>
#include <ctype.h>
#include <string.h>

void dict(char *dic1, char *dic2) {
    int i, j, k;

    for(i = 65, k = 0; i < 91; i++)
        for(j = 0; j < 80; k++, j++)
            dic1[k] = dic2[k] = i;
}

void word(char *s1, char *s2) {
    int i;

    puts("输入第 1 个单词 换行结束:");
    for(i = 0; i < 80; i++) {
        s1[i] = getchar();

        if(islower(s1[i]))
            s1[i] = toupper(s1[i]);

        if(s1[i] == '\n')
            break;
    }

    s1[i] = '\0';

    puts("输入第 2 个单词 换行结束:");
    for(i = 0; i < 80; i++) {
        s2[i] = getchar();

        if(islower(s2[i]))
            s2[i] = toupper(s2[i]);

        if(s2[i] == '\n')
            break;
    }

    s2[i] = '\0';
}

void fliter(char *s1, char *s2, char *dic1, char *dic2) {
    int i, j;

    for(i = 0; s1[i] != '\0'; i++) {
        for(j = 0; j < 2082; j++) {
            if(s1[i] == dic1[j]) {
                dic1[j] = ' ';
                break;
            }
        }
    }

    for(i = 0; s2[i] != '\0'; i++) {
        for(j = 0; j < 2082; j++) {
            if(s2[i] == dic2[j]) {
                dic2[j] = ' ';
                break;
            }
        }
    }
}


int main(void) {
    char s1[81] = {0}, s2[81] = {0};
    char dic1[2082] = {0}, dic2[2082] = {0};

    dict(dic1, dic2);
    word(s1, s2);
    fliter(s1, s2, dic1, dic2);

    if((strcmp(dic1, dic2)) == 0) printf("Yes\n");

    else printf("No\n");

    return 0;
}

Only the Code Tells the Truth             K.I.S.S
2015-03-23 23:07
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
得分:5 
额...   逻辑很简单啊...

考的是细心

三十年河东,三十年河西,莫欺少年穷!
2015-03-24 17:29



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




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

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