求教,只有30分

B2110 找第一个只出现一次的字符

jojinvn @ 2024-12-12 11:50:22

#include<stdio.h>
#include<string.h>
int main(){
    char a[1101];
    gets(a);
    int len=strlen(a);
    int cnt=0;
    int flag=0;
    for(int i=0;i<len;i++){
        for(int j=0;j<len;j++){
            if(a[i]==a[j]){
                cnt++;
            }
        }
        if(cnt==1){
            printf("%c",a[i]);
            flag=1;
            break;
        }
    }
    if(flag==0){
        printf("no");
    }
    return 0;
}

by KarmaticEnding @ 2024-12-12 12:16:33

@jojinvn

试试这组样例

iiiiiirs

你会发现你的输出是 no。这是因为你的变量 cnt 没有清空。


by KarmaticEnding @ 2024-12-12 12:17:08

你可以这样:

#include<stdio.h>
#include<string.h>
int main(){
    char a[1101];
    gets(a);
    int len=strlen(a);
    int cnt=0;
    int flag=0;
    for(int i=0;i<len;i++){
        cnt=0;
        for(int j=0;j<len;j++){
            if(a[i]==a[j]){
                cnt++;
            }
        }
        if(cnt==1){
            printf("%c",a[i]);
            flag=1;
            break;
        }
    }
    if(flag==0){
        printf("no");
    }
    return 0;
}

by ETO_NOI @ 2024-12-12 12:17:46

cnt每次都要初始化为0


by jojinvn @ 2024-12-12 12:32:58

@KarmaticEnding谢谢哥!


by jojinvn @ 2024-12-12 12:33:27

@ETO_NOI对哦,谢谢啦!


|