这是我写的,看看有什么问题
#include<stdio.h>
void main()
{char c[20];
int i,j;
printf("\nInput char c[20]:");
gets(c);
for(i=0;i<=9;i++)
for(j=19;j>=9;j--)
{if c[i]==c[j]
printf("%d"c[i]);
}
printf("%s\n",c);
}
c++编程去除字符数组中重复的字符
答案:3 悬赏:0
解决时间 2021-03-21 17:41
- 提问者网友:话酸浅沫
- 2021-03-20 17:57
最佳答案
- 二级知识专家网友:偏爱自由
- 2021-03-20 19:08
0~9, 19~9, 这是打印二分后的左右字符是否有重复, 不能实现去除或打印整个字符数组中重复的字符.
我的:
#include <stdio.h>
int main()
{
int i, j, n=19, tmp;
char c[21];
printf("input:\n");
fgets(c, 21, stdin);
printf("c[20]:%s\n", c);
for(i=0; i<n; i++)
for(j=i+1; j<n+1;)
{
if(c[i] == c[j])
{
tmp = j;
while(j<n+1)
{
c[j] = c[j+1];
j++;
}
j = tmp;
n--;
}
else
j++;
}
printf("c[**]:%s\n", c);
return 0;
}
程序输出:
input:
qwertaaaffqwertmmmm8
c[20]:qwertaaaffqwertmmmm8
c[**]:qwertafm8
gets函数是不安全的, 使用fgets替代, 由于fgets缓冲区必须null结尾, 所以用e79fa5e98193e78988e69d8331333262383566了21个元素, 而且第21个元素正好在元素移动时起到了很好的作用. c[20] == null.
如果有疑问请补充问题, 我再回答.
我的:
#include <stdio.h>
int main()
{
int i, j, n=19, tmp;
char c[21];
printf("input:\n");
fgets(c, 21, stdin);
printf("c[20]:%s\n", c);
for(i=0; i<n; i++)
for(j=i+1; j<n+1;)
{
if(c[i] == c[j])
{
tmp = j;
while(j<n+1)
{
c[j] = c[j+1];
j++;
}
j = tmp;
n--;
}
else
j++;
}
printf("c[**]:%s\n", c);
return 0;
}
程序输出:
input:
qwertaaaffqwertmmmm8
c[20]:qwertaaaffqwertmmmm8
c[**]:qwertafm8
gets函数是不安全的, 使用fgets替代, 由于fgets缓冲区必须null结尾, 所以用e79fa5e98193e78988e69d8331333262383566了21个元素, 而且第21个元素正好在元素移动时起到了很好的作用. c[20] == null.
如果有疑问请补充问题, 我再回答.
全部回答
- 1楼网友:萝莉姐姐鹿小北
- 2021-03-20 20:32
这样循环不能遍历所有字符的比较 if后面的表达式要加()
想要去除相同字符 不是说如果相等就输出c[i],
#include<stdio.h>
void main()
{char c[20];
int i,j;
printf("\nInput char c[20]:");
gets(c);
for(i=0;i<=19;i++)
for(j=i+1;j<=19;j++)
{if (c[i]==c[j])
c[j]=c[j+1];
}
printf("%s\n",c);
}
- 2楼网友:心与口不同
- 2021-03-20 19:49
因为你使用cin >> string直接cin >> 在一个字符数组中本来就不不正确的做法,你输入了abcd可以输出abcd而不出问题只是因为你覆盖了栈的一部分局部变量缓冲区,你试试多输入几个字符试试? 这样做非常危险,之所以允许你这样做是因为c++非常灵活,(公路两旁不设栏杆,有时候你的确可以离开公路开到你想去的地方,但如果你酒后驾车呢?) 所以不是特殊情况应使用cin.get(string, sizeof(string)) 或 cin.getline(string, sizeof(string)),或使用更快速和安全的string类: #include <string> string str; cin >> str; ...
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯