#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);
}
请帮忙指出c++程序的错误之处
- 提问者网友:回忆在搜索
- 2021-05-09 05:12
- 五星知识达人网友:洒脱疯子
- 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); }