用指针法求输入的10个数中最大值最小值出现的问题

zhujun2730 2011-05-08 09:27:50
#include<iostream>
using namespace std;
void main()
{
int a[10];
int *p=a;
int min=p[0],max=p[0],i;
for(i=1;i<10;i++)
{
cin>>*p;
if(p[i]>min)
min=p[i];
if(p[i]<max)
max=p[i];
}
cout<<"最大值:"<<max<<endl;
cout<<"最小值:"<<min<<endl;
}





用上面的代码运行后,为什么会出现这样的结果:
1 2 3 4 5 6 7 8 9 10
最大值:-858993460
最小值:-858993460




小弟刚学指针方面,望高手指点一下,那些需要修改的代码。。。。。。
...全文
1434 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
longbaoer_1215 2011-05-22
  • 打赏
  • 举报
回复
cqulyk 人真好,值得歌颂
cqulyk 2011-05-22
  • 打赏
  • 举报
回复
希望大家回帖的时候能有责任感,不然给出错误答案,会让新手更加迷惑。
cqulyk 2011-05-22
  • 打赏
  • 举报
回复
3L 你在循环里改变了p的值,怎么能用P[i]引用数组元素呢?
4L 你只输入了9个元素的值,怎么能得出正确的结果呢?同时,你和3L一样,你在循环里改变了p的值,怎么能用P[i]引用数组元素呢?

cqulyk 2011-05-08
  • 打赏
  • 举报
回复
我的天,你这个错误还真多啊~~~~~~~~

#include<iostream>
using namespace std;
void main()
{
int a[10];
int *p=a;
cin>>*p;//先输入数组第一个元素的值
int min=p[0],max=p[0],i;//p[0]未初始化 min max 也未初始化 是一个随机值

for(i=1;i<10;i++)
{
cin>>*(++p);//应该改成++p
//if(p[i]>min)'>'和'<'反了&&指针p已经向后移动,所以用P已经无法得到预想的值 改成a[i]
if(a[i] < min)//p 改成a
//min=p[i];
min = a[i]; //p 改成a
//if(p[i]<max)同上
if(a[i] > max)//p 改成a
//max=p[i];
max = a[i];//p 改成a

}
cout<<"最大值:"<<max<<endl;
cout<<"最小值:"<<min<<endl;
}
sl09123823 2011-05-08
  • 打赏
  • 举报
回复
int min=p[0],max=p[0],i;
p[0]尚未赋值,
cin>>*p;
这只对首元素赋值了
if(p[i]>min)
min=p[i];
if(p[i]<max)
max=p[i];
自习想一下只是不是吧最大值赋给min最小值赋给了max
sl09123823 2011-05-08
  • 打赏
  • 举报
回复
#include<iostream>
using namespace std;
void main()
{
int a[10];
int *p=a;
int min,max;
for(int i=0;i<10;i++)
{
cin>>*(p+i);
min=p[0],max=p[0];
if(p[i]<min)
min=p[i];
if(p[i]>max)
max=p[i];
}
cout<<"最大值:"<<max<<endl;
cout<<"最小值:"<<min<<endl;
}

书虫 2011-05-08
  • 打赏
  • 举报
回复
#include<iostream>
using namespace std;
void main()
{
int a[10];
int *p=a;
int min=p[0],max=p[0],i;
for(i=1;i<10;i++)
{
cin>>*(p++);
if(p[i]>min)
min=p[i];
if(p[i]<max)
max=p[i];
}
cout<<"最大值:"<<max<<endl;
cout<<"最小值:"<<min<<endl;
}


chenjn10 2011-05-08
  • 打赏
  • 举报
回复
cin>>*p; min=*p;
p++;
for(i=1;i<10;i++)
{
cin>>*p;
if(p[i]>min)
min=p[i];
if(p[i]<max)
max=p[i];
p++;
}
我觉得, 这个里面,你的指针p一直都没有变化吧。 这样,你的p[i]一直都没有赋值,就是随机了
可以改成: 如上

另外,p[0]才是第一个
maoxing63570 2011-05-08
  • 打赏
  • 举报
回复
int a[10];
int *p=a;
int min=p[0],max=p[0],i;
到这里你的数组中的值都是随机值,也就像你打印出来的那样
HeartWasNot 2011-05-08
  • 打赏
  • 举报
回复
你没初始化int min=p[0],max=p[0]。开始数组是没有赋值的。。所以你min和max都是随机值。。。

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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