C++在线等,高手速度来,有代码,改错即可!!

关于删除数组中相同元素的代码,如4333得到43#include<iostream.h>voidmain(){chars[20];cout<<"请输入一个数组:";cin... 关于删除数组中相同元素的代码,如4333得到43#include<iostream.h>
void main()
{
char s[20];
cout<<"请输入一个数组:";
cin>>s;
int i=0,k=0;
while(s[i+1]!='\0')
{if(s[i]==s[i+1])
{k++;}
else {s[i+1]=s[i+k+1];}
i++;
}
cout<<s<<endl;
}
我的思路是相同的记下,(++K)然后继续判断前后是否不同,再让数组跳K个,但是这个代码不满足,怎么改啊?
2.关于5X5数组,冒泡排序,要有INPUT和排序2个函数
我的函数没问题,但是编译显示不能输出结果,为何?
#include<iostream.h>
void Input_sz(int a[][5])
{for(int i=0;i<5;i++)
for(int j=0;j<5;j++)
cin>>a[i][j];
cout<<a[i][5]<<" "<<endl;
}
void Bubble_sort(int a[][5])
{
int t;
for(int j=0;j<25;j++)
{for(int i=0;i<25;i++)
{
if(a[i/5][i%5]>a[(i+1)/5][(i+1)%5])
{t=a[i/5][i%5];
a[i/5][i%5]=a[(i+1)/5][(i+1)%5];
a[(i+1)/5][(i+1)%5]=t;}}
}
int main()
{
int a[5][5];
Input_sz(a[][5]);
Bubble_sort(a[][5]);
for(int j=0;j<5;j++)
for(int i=0;i<5;i++)
cout>>a[i][j]>>" "<<endl;
}
展开
 我来答
cjj796
2013-12-02 · TA获得超过8710个赞
知道大有可为答主
回答量:1.3万
采纳率:68%
帮助的人:4122万
展开全部

你好!

   第一个问题的答案,满意请采纳

程序可以保证字符串内重复的字符都剔除

完整的修改后的代码:

#include<iostream.h>
void main()
{
char s[20];
int s1[100]={0};

cout<<"请输入一个数组:";
cin>>s;
int i=0,k=0;

while(s[i]!='\0')
{
  if(s1[s[i]-48]== 0 )
  {
    cout<<s[i];
s1[s[i]-48]=1;
  }
  i++;
}
}

 第二个问题的答案:

    

来自:求助得到的回答
蔷天巧Qw
推荐于2016-06-30 · 超过18用户采纳过TA的回答
知道答主
回答量:67
采纳率:0%
帮助的人:37.5万
展开全部
第一题:
while(s[i+1]!='\0')改成while(s[i]!='\0')
else {s[i+1]=s[i+k+1];改成else{s[i-k+1]=s[i+1];

程序:

#include<iostream.h>
void main()
{
char s[20];
cout<<"请输入一个数组:";
cin>>s;
int i=0,k=0;
while(s[i]!='\0')
{
if(s[i]==s[i+1])
{k++;}
else
{s[i-k+1]=s[i+1];}
i++;
}
cout<<s<<endl;
}

/*************************************************************************************/

第二题:void Bubble_sort(int a[][5]) 里面最后少一个 ‘}’
main()函数最后一句:cout<<a[i][j]<<" "<<endl;您写成了cout>>a[i][j]>>" "<<endl;注意cout<<不要写反了

程序:
#include<iostream.h>

void Input_sz(int a[][5])
{
for(int i=0;i<5;i++)
for(int j=0;j<5;j++)
cin>>a[i][j];
cout<<a[i][5]<<" "<<endl;
}
void Bubble_sort(int a[][5])
{
int t;
for(int j=0;j<25;j++)
{
for(int i=0;i<25;i++)
{
if(a[i/5][i%5]>a[(i+1)/5][(i+1)%5])
{
t=a[i/5][i%5];
a[i/5][i%5]=a[(i+1)/5][(i+1)%5];
a[(i+1)/5][(i+1)%5]=t;
}
}
}////////////////少括号
}
int main()
{
int a[5][5];
Input_sz(a);
Bubble_sort(a);
for(int j=0;j<5;j++)
for(int i=0;i<5;i++)
cout<<a[i][j]<<" "<<endl; //cout<<a[i][j]<<" "<<endl >>>>
}
更多追问追答
追问
第二题是对的,但输出的数堆一起,与上面图差不多,怎么改?
追答
main()里for改成下面形式:
for(int i=0;i>>>
cout<<endl;
}

改动:两个for()里的i和j互换位置;(这是因为原来的输出方式会把原数组沿对角线对称后输出,如果非要这样输出可以不改for。) 还有,cout<<endl放到里面的for外,保证输出一组后换行。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式