请C++高手指点,为什么编译时候没有错,但是执行的时候显示有一个错误呢?

这个是我写的代码:#include<iostream>usingnamespacestd;inta[10],*pointer=a;intmain(){voidsr();v... 这个是我写的代码:
#include<iostream>
using namespace std;
int a[10],*pointer=a;
int main()
{
void sr();
void wcg(int *p);
void sc(int *p);
sr();
wcg(pointer);
sc(pointer);
system("PAUSE");
return 0;
}
void sr()
{
int i;
cout<<"Please input 10 names:";
for(i=0;i<10;i++)
cin>>*(pointer+i);
}
void wcg(int *p)
{
int i,j,x,d,max,min,temp;
for(i=0,j=i+1;i<9;)
{
if(*(p+i)<*(p+j)) {min=*(p+i);x=i;j++;}
else {min=*(p+j);x=j;i=j;j++;}
}
if(x!=0) {temp=*(p+x);*(p+x)=*p;*p=*(p+x);}
for(i=0,j=i+1;i<9;)
{
if(*(p+i)>*(p+j)) {max=*(p+i);d=i;j++;}
else {max=*(p+j);d=j;i=j+1;i=j;j++;}
}
if(d!=9) {temp=*(p+d);*(p+d)=*(p+9);*(p+9)=*(p+d);}
}

void sc(int *p)
{
cout<<"warry:";
for(p=a;p<(p+10);p++)
cout<<*p<<" ";
cout<<endl;
}
代码在编译的时候没有错,但是在执行的时候提示错误:
0个数第1个最大第10个最小.obj : error LNK2005: _main already defined in 字符串指针.obj
10个数第1个最大第10个最小.obj : error LNK2005: "void __cdecl sr(void)" (?sr@@YAXXZ) already defined in 字符串指针.obj
Debug/字符串指针.exe : fatal error LNK1169: one or more multiply defined symbols found
执行 link.exe 时出错.
经过我和同学的讨论最终得出这个答案~~~~~~~~先谢谢你们了虽然没采用你们的答案
#include<iostream>
using namespace std;
int a[10],*pointer=a;
int main()
{
void sr();
void wcg(int *p);
void sc(int *p);
sr();
wcg(pointer);
sc(pointer);
return 0;
}
void sr()
{
int i;
cout<<"Please input 10 names:";
for(i=0;i<10;i++)
cin>>*(pointer+i);
}
void wcg(int *p)
{
int min,i,max,j;
min=*p;
max=*p;
for(i=0;i<10;i++)
{
if(min>*(p+i)) { min=*(p+i);j=i; }
}
for(i=0;i<10;i++)
{
if(max<*(p+i)) { max=*(p+i);j=i; }
}
if(max!=*(p+9)) {*(p+j)=*(p+9);*(p+9)=max;}
if(min!=*p) {*(p+j)=*p;*p=min;}
}
void sc(int *p)
{
cout<<"warry:";
for(p=a;p<(a+10);p++)
cout<<*p<<" ";
cout<<endl;
}

申明好象也可以在里面吧~~~
这个代码是把10个值的最大值和最小值找出来,把最小值放在第1个最大值放在最后1个。
展开
 我来答
ggdmdf
2008-10-08 · TA获得超过1520个赞
知道小有建树答主
回答量:1024
采纳率:0%
帮助的人:1242万
展开全部
1.
for(i=0,j=i+1;i<9;)
{
if(*(p+i)<*(p+j)) {min=*(p+i);x=i;j++;}
else {min=*(p+j);x=j;i=j;j++;}
}
如果p[0]最小,那么都只执行if复合语句,结果i不变,j递增,循环……
for循环修改为:
for(i=0,j=i+1;i<9, j<10;)

2.
for(i=0,j=i+1;i<9;)
{
if(*(p+i)>*(p+j)) {max=*(p+i);d=i;j++;}
else {max=*(p+j);d=j;i=j+1;i=j;j++;}
}
同1,如果p[0]最大……同样修改下for

3.
for(p=a;p<(p+10);p++)
cout<<*p<<" ";
在最后的输出中,你看看你的条件设为什么了。
p < p+10
这条件在内存检测完之前永久成立,检测完几乎是不可能的,现在内存都以G为单位!
修改for循环为:
for(p=a;p<(a+10);p++)

解决问题。

另外,这段代码的功能似乎成了:
输入10个数字,将其中最小及最大的数修改为第一个数。。。
强大!~~~
尘封梦想
2008-10-08 · TA获得超过139个赞
知道答主
回答量:170
采纳率:0%
帮助的人:119万
展开全部
这个很奇怪啊
怎么在main里定义函数 这不像是c++的语法
int main()
{
void sr();
void wcg(int *p);
void sc(int *p);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zpgsb
2008-10-08 · TA获得超过453个赞
知道小有建树答主
回答量:552
采纳率:72%
帮助的人:286万
展开全部
声明貌似也应该在外面的吧。
再问问,你的程序要干什么?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式