永发信息网

请帮忙指出c++程序的错误之处

答案:3  悬赏:70  手机版
解决时间 2021-05-10 06:07
  • 提问者网友:回忆在搜索
  • 2021-05-09 05:12

#include<iostream>
using namespace std;
int main()
{void input(int *p);
void ouput(int *p);
void deal(int *p);
int a[10];
intput(a);
deal(a);
output(a);
return 0;
}
void intput(int *p)
{int i;
for(i=0;i<10;i++)
cin>>*(p+i);
}
void deal(int *p)
{int i,j,k;
i=0;
for(j=1;j<10;j++)
if(*(p+j)<*p(p+i))
i=j;
k=*(p+i);*p(p+i)=*p;*p=k;
i=9;
for(j=8;j>=0;j--)
if(*(p+j)>*(p+i))
i=j;
k=*(p+i);*p(p+i)=*p;*p=k;
}
void output(int *p)
{int i;
for(i=0;i<10;i++)
cout<<*(p+i);
}

最佳答案
  • 五星知识达人网友:洒脱疯子
  • 2021-05-09 06:28

#include<iostream>
using namespace std;
int main()
{
void intput(int *p);
void output(int *p);
void deal(int *p);
int a[10];
intput(a);
deal(a);
output(a);
getchar();getchar();
return 0;
}
void intput(int *p)
{
int i;
for(i=0;i<10;i++)
cin>>*(p+i);
}


void deal(int *p)
{
int i,j,k;
for(i=1;i<=9;i++)
for(j=0;j<10-i;j++)
if(*(p+j+1)<*(p+j))
{
k=*(p+j+1);
*(p+j+1)=*(p+j);
*(p+j)=k;
}
}



void output(int *p)
{
int i;
for(i=0;i<10;i++)
cout<<*(p+i)<<" ";
}

全部回答
  • 1楼网友:逐風
  • 2021-05-09 09:09

int main() {void input(int *p); void ouput(int *p); void deal(int *p);

这几个函数是这样声明的,为什么后面调用时是:

intput(a);

output(a);多了个“t”?

而且ouput函数没有定义,编译器找不到该函数,看了后面你应该声明的是output()吧!还有就是deal函数里会发生下表越界问题,其他错误楼上的都已经说明了,我就不重复,不过你这段代码运行的效果不是很理想,不知你是不是要从最大数与第一位交换,最小数与最后一个交换?

效果如下:

#include<iostream> using namespace std; int main() {void input(int *p); void output(int *p); void deal(int *p); int a[10]; input(a); deal(a); output(a); return 0; } void input(int *p) {int i; for(i=0;i<10;i++) cin>>*(p+i); }

void deal(int *p) {int i,j,k; i=0; for(j=1;j<10;j++) if(*(p+j)<*(p+i)) i=j; k=*(p+i);*(p+i)=*p;*p=k; i=9; for(j=8;j>=0;j--) if(*(p+j)>*(p+i)) i=j; k=*(p+i);*(p+i)=*p;*p=k; }

void output(int *p) { int i; for(i=0;i<10;i++) cout<<*(p+i)<<" "; cout<<endl; }

截图:

  • 2楼网友:轻雾山林
  • 2021-05-09 08:00

#include<iostream> using namespace std; void main() //主函数不用定义类型,一般用void声明。 {void input(int *p); void ouput(int *p); void deal(int *p); int a[10]; intput(a); deal(a); output(a);

//return 0; 主函数没有返回值,这个return没有必要。 } void intput(int *p) {int i; for(i=0;i<10;i++) cin>>*(p+i); } void deal(int *p) {int i,j,k; i=0; for(j=1;j<10;j++) if(*(p+j)<*p(p+i)) //你多写了个字母P,删掉就可以了 i=j; k=*(p+i);*p(p+i)=*p;*p=k;//同上 i=9; for(j=8;j>=0;j--) if(*(p+j)>*(p+i)) i=j; k=*(p+i);*p(p+i)=*p;*p=k; //同上

} void output(int *p) {int i; for(i=0;i<10;i++) cout<<*(p+i); }

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯