注册 登录
编程论坛 C语言论坛

初学者C语言,输入一组字符,判断其中数字字符是否重复,输出正确答案

哈哈哈哈镜 发布于 2023-10-20 00:23, 1013 次点击
,输入一组字符,判断其中数字字符是否重复,输出正确答案
8 回复
#2
rjsp2023-10-20 08:33
输入一组字符,判断其中数字字符是否重复,输出正确答案
输入的格式是什么呢?一行,还是指定字符数量并忽略空白字符,……?
答案的格式是什么呢?输出“是”“否”,还是……?
#3
apull2023-10-20 10:16
int  num[10]={0}    保存数字字符数量
fgets读取字符串str,遍历判断是否数字,是的话保存到num里,num[str[i]-'0']++

最后遍历num找大于1的。
#4
哈哈哈哈镜2023-10-20 16:31
回复 2楼 rjsp
输入一行字符,判断其中的数字字符是否有重复的数字,并输出正确答案。
这就是原。
就是输入一行字符,其他没有规定。
我认为应该是输出判断,yes 或no
#5
哈哈哈哈镜2023-10-20 16:40
回复 3楼 apull
还是小白,不太理解
#6
沈和2023-10-20 19:47
以下是引用apull在2023-10-20 10:16:58的发言:

int  num[10]={0}    保存数字字符数量
fgets读取字符串str,遍历判断是否数字,是的话保存到num里,num[str-'0']++

最后遍历num找大于1的。


多尝试写一写,会发现还是简单的。三楼版主给的思路很准确了。
下面是一段参考代码。

程序代码:

#include <stdio.h>

int main(void) {
    char str[128];
    char* ps = str;
    int count[10] = { 0 };
    gets(str);
    while(*ps) {
        if (*ps >= '0' && *ps <= '9') {
            count[*ps - '0']++;
        }
        ps++;
    }
    for(int i=0; i<10; i++) {
        if (count[i] > 1) {
            puts("yes");
            return 0;
        }
    }
    puts("no");
    return 0;
}
#7
哈哈哈哈镜2023-10-20 22:19
回复 6楼 沈和
好的,谢谢大佬
#8
哈哈哈哈镜2023-10-22 10:05
回复 6楼 沈和
大佬,我想请教一下,count[*ps-'0']++是什么意思

[此贴子已经被作者于2023-10-22 10:38编辑过]

#9
沈和2023-10-22 10:59
回复 8楼 哈哈哈哈镜
字符的实质是 ascii 码。可以参考 https://c.

程序代码:

// '0': 48, '1': 49, '2': 50 ...

// 比如 *ps == '0',则有 *ps - '0' == 0, count[*ps - '0']++ 即 count[0]++
// 类比 *ps == '1',则有 *ps - '0' == 1, count[*ps - '0']++ 即 count[1]++
1