#include <stdio.h>
#include<string.h>
int main(void)
{
char s[50];
for(int i=0;i<50;i++)
{
scanf("%c",&s[i]);
}
for(int i=0;i<strlen(s);i++)
{
for(int j=i+1;j<strlen(s);j++)
{
if(s[i]==s[j])
return 1;
}
}
return 0;
}
问大家一个c语言问题,判断字符出现是否唯一?我的代码哪里错了,为什么没有输出结果。
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
关注 引自免费微信小程序:皆我百晓生
从你提供的代码来看,主要存在两个问题导致程序未能正确输出结果。下面将详细解析并提供修正后的代码。
首先,你的代码在读取字符串时存在逻辑错误。你使用了一个循环读取字符,但这会导致无限循环,因为没有设置退出条件。正确的做法是使用
scanf
的字符串读取功能,即scanf("%s", s);
,这会一次性读取整个字符串到s
数组中。其次,你的代码中缺少打印输出结果的部分。你需要在
main
函数的结尾添加代码来根据返回值打印相应的信息。基于上述分析,修正后的代码如下所示:
#include <stdio.h> #include <string.h> // 函数声明,用于检查字符串中的字符是否唯一 int is_unique(const char *str); int main(void) { char s[50]; // 读取一行字符串,注意留出空间给'\0' scanf("%49s", s); // 调用is_unique函数检查字符串,并根据结果打印 if (is_unique(s)) { printf("1\n"); // 字符不唯一 } else { printf("0\n"); // 所有字符唯一 } return 0; } // 检查字符串中所有字符是否唯一的函数实现 int is_unique(const char *str) { int len = strlen(str); for (int i = 0; i < len; i++) { for (int j = i + 1; j < len; j++) { if (str[i] == str[j]) { return 1; // 发现重复字符,返回1 } } } return 0; // 所有字符均唯一,返回0 }
这段代码首先定义了一个
is_unique
函数,专门用来检查字符串中的字符是否唯一。然后,在main
函数中,我们使用scanf
读取字符串,并调用is_unique
函数进行检查,最后根据返回值打印相应的结果。这样修改后,你的程序应该可以正确地判断字符串中的字符是否唯一,并输出相应的结果了。
解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 Xsheii7我安装这个文件的时候跳出来另一个文件已锁定文件的无一部分进程无法访问。这个该怎么解决
- ¥15 unity terrain打包后地形错位,跟建筑不在同一个位置,怎么办
- ¥15 FileNotFoundError 解决方案
- ¥15 uniapp实现如下图的图表功能
- ¥15 u-subsection如何修改相邻两个节点样式
- ¥30 vs2010开发 WFP(windows filtering platform)
- ¥15 服务端控制goose报文控制块的发布问题
- ¥15 学习指导与未来导向啊
- ¥15 求多普勒频移瞬时表达式
- ¥15 如果要做一个老年人平板有哪些需求