中易网

c++编程去除字符数组中重复的字符

答案:3  悬赏:0  
解决时间 2021-03-21 17:41
这是我写的,看看有什么问题
#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);
}
最佳答案
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.

如果有疑问请补充问题, 我再回答.
全部回答
这样循环不能遍历所有字符的比较 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); }
因为你使用cin >> string直接cin >> 在一个字符数组中本来就不不正确的做法,你输入了abcd可以输出abcd而不出问题只是因为你覆盖了栈的一部分局部变量缓冲区,你试试多输入几个字符试试? 这样做非常危险,之所以允许你这样做是因为c++非常灵活,(公路两旁不设栏杆,有时候你的确可以离开公路开到你想去的地方,但如果你酒后驾车呢?) 所以不是特殊情况应使用cin.get(string, sizeof(string)) 或 cin.getline(string, sizeof(string)),或使用更快速和安全的string类: #include <string> string str; cin >> str; ...
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
做玻璃钢化粪池销售能赚到钱么,主要要怎么入
一菲,一诺,梓璇,亦诗,姓陈,女孩哪个名字好听
怎么算清淤换填在特殊路基中占有的比例。
如何使用libvirt创建虚拟机
夏季如何穿衣服让宝宝舒服
2011韩国跨年演唱会哪里可以看
未发掘的帝陵
2016年中国空军招飞要多少分才能就读
手背上长小疙瘩,是怎么回事啊?
脸大的女孩带什么样的眼镜比较好看?本人是娃
刚买的品胜电霸2 5000毫安的 充电时候发现红
看到你的坚强,坚强的伪装 这是歌词,歌曲很
用浏览器打开百度云邀请链接以后不能自动跳转
合肥五星驾校现在练车地点在哪?还是在长丰吗
求。小凤不是仙 txt
推荐资讯
英雄无敌3,无需插入光盘的,哪里可以下载啊
唐氏筛查AFP值的含义,谢了~~
如果打狗队来家里抓狗怎么办
谁知道找对象哪款手机软件好用?
周公解梦梦见开豪车?
"家丑"为什么不能"外扬"?我觉得严重的时候应
大玩家台球厅地址在哪,我要去那里办事
仿写成语:废寝忘食(4个)
LA 洛杉矶的Downtown真的有那么危险么?
平江县城关镇有招聘暑期工吗.?
怎样求长方体的表面积
能用发霉,变质的残羹剩饭或饲料喂养家禽家畜
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?