哪的错?

efuliang 2003-02-09 06:52:01
//输入5个数,按升序排列,但是结果很吓人
//这是我练习指针与函数,顺便再加上冒泡排序与选择排序的
//请帮我看看是哪出的错,谢谢了
#include <iostream.h>
#define M 5
void maopao(int *p,int n) //形式参数为指针变量,冒泡法
{
int i,j,temp;
for(i=0;i<n;i++)
for(j=n-i;j<n;j++)
if(p[j]>p[j+1])
{
temp=p[i];
p[i]=p[j+1];
p[j+1]=temp;
}
for(i=0;i<n;i++)
cout<<p[i];
cout<<endl;
}
void xuanze(int *p,int n) //形式参数为指针变量,选择法
{
int i,j,temp;
for(i=0;i<n;i++)
for(j=i+1;j<=n;j++)
if(p[i]>p[j])
{
temp=p[i];
p[i]=p[j];
p[j]=temp;
}
for(i=0;i<n;i++)
cout<<p[i];
cout<<endl;
}
void main(void)
{
int i,j;
int shu[5];
int *pp;
cout<<"请输入"<<M<<"个整数,输出按升序排列"<<endl;
for(i=0;i<M;i++)
cin>>shu[i];
pp=shu;
maopao(pp,M);
xuanze(pp,M);
}
...全文
41 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
whoke 2003-02-09
  • 打赏
  • 举报
回复
#include <iostream>

const int M = 5;
void maopao(int *p,int n) //ÐÎʽ²ÎÊýΪָÕë±äÁ¿£¬Ã°ÅÝ·¨
{
for(int i=0; i<n; i++)
for(int j=i+1; j<n; j++)
if(p[i]>p[j])
{
int temp=p[i];
p[i]=p[j];
p[j]=temp;
}
for(int i=0; i<n; i++)
cout<<p[i];
cout<<endl;
}

void xuanze(int *p,int n) //ÐÎʽ²ÎÊýΪָÕë±äÁ¿£¬Ñ¡Ôñ·¨
{
for(int i=0;i<n;i++)
{
int MinPos =i;
for(int j = i+1; j<=n; j++)
{
if(p[MinPos]>p[j])
{
MinPos=j;
}
}
int temp =p[MinPos];
p[MinPos] =p[i];
p[i] = temp;
}
for(int i=0; i<n; i++)
cout<<p[i];
cout<<endl;
}

int main(int argc, char *argv[])
{
int i,j;
int shu[5];
int *pp;
cout<<"ÇëÊäÈë"<<M<<"¸öÕûÊý£¬Êä³ö°´ÉýÐòÅÅÁÐ"<<endl;
for(i=0;i<M;i++)
cin>>shu[i];
pp=shu;
maopao(pp,M);
xuanze(pp,M);
return 0;
}
wxl00wxl 2003-02-09
  • 打赏
  • 举报
回复
j=n-i;并且n=5,i=0

j=???
efuliang 2003-02-09
  • 打赏
  • 举报
回复
j怎么能等于5?
wxl00wxl 2003-02-09
  • 打赏
  • 举报
回复
maopao(pp,M);中for(j=n-i;j<n;j++),
此时i=0,j=5,第一次不进入循环便开始第2次

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧