编程论坛
注册
登录
编程论坛
→
C语言论坛
初学者C语言,输入一组字符,判断其中数字字符是否重复,输出正确答案
哈哈哈哈镜
发布于 2023-10-20 00:23, 1013 次点击
,输入一组字符,判断其中数字字符是否重复,输出正确答案
8 回复
#2
rjsp
2023-10-20 08:33
输入一组字符,判断其中数字字符是否重复,输出正确答案
输入的格式是什么呢?一行,还是指定字符数量并忽略空白字符,……?
答案的格式是什么呢?输出“是”“否”,还是……?
#3
apull
2023-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