| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1350 人关注过本帖
标题:[求助2]指针,看下错哪了。
取消只看楼主 加入收藏
a8451727
Rank: 1
等 级:新手上路
帖 子:238
专家分:5
注 册:2007-5-22
结帖率:86.67%
收藏
 问题点数:0 回复次数:8 
[求助2]指针,看下错哪了。

输入10个数,找出最大数,放在第一,原来第一的在第二````依次类推。

怎么我的只是覆盖了第一个
并且最大数还存在上次位置,指到我晕了。

#include<iostream>
using namespace std;
int main()
{
const int max=10;
int a[max];
int *p=a;
int i,j,k,t;

cout<<"Enter the array number:";
for(i=0;i<max;i++)
{
cin>>a[i];
}

for(i=0;i<max;i++){
for(j=0;j<max;j++)
k=j+1;
if(*(p+j)<*p+k)
*(p+j)=*(p+k);//这里为什么不是每次上一数覆盖下一个数?
*p=*(p+j);
}

for(i=0;i<max;i++)
cout<<a[i]<<' ';
cout<<endl;
return 0;
}

[此贴子已经被作者于2007-7-27 2:30:33编辑过]

搜索更多相关主题的帖子: 指针 
2007-07-27 02:28
a8451727
Rank: 1
等 级:新手上路
帖 子:238
专家分:5
注 册:2007-5-22
收藏
得分:0 
回复:(wtyj112)首先你给的描述有歧义,然后你给的程...
不是写冒泡哦。

比如:8 6 1 2 9 3
只需 9 8 6 1 2 3

2007-07-27 12:57
a8451727
Rank: 1
等 级:新手上路
帖 子:238
专家分:5
注 册:2007-5-22
收藏
得分:0 
以下是引用福尔摩斯在2007-7-27 7:22:07的发言:
*(p+j)=*(p+k);//这里为什么不是每次上一数覆盖下一个数?
*p=*(p+j);

错!

我知道错啊,指点下啊


2007-07-27 12:59
a8451727
Rank: 1
等 级:新手上路
帖 子:238
专家分:5
注 册:2007-5-22
收藏
得分:0 

哈哈,大家辛苦了。
多谢。


2007-07-28 10:18
a8451727
Rank: 1
等 级:新手上路
帖 子:238
专家分:5
注 册:2007-5-22
收藏
得分:0 

[CODE]#include<iostream>
using namespace std;
int main()
{
const int max=10;
int a[max];
int *p=a;
int i,j,value1,value2;
int index1=0,index2;
cout<<"Enter the array number:";
for(i=0;i<max;i++)
{
cin>>*(p+i);
}
value1=*p;
value2=*p;
for(i=1;i<max;i++){
if(value1<*(p+i)){
value1=*(p+i);
index1=i;
}
}
for(j=1;j<max;j++){
if(value2>*(p+j)){
value2=*(p+j);
index2=j;
}
}
cout<<value1<<' '<<value2<<endl;
for(i=index1;i>0;i--){
*(p+i)=*(p+i-1);
*(p+i-1)=value1;
}
for(j=index2;j<max;j++){
*(p+j)=*(p+j+1);
*(p+j+1)=value2;
}


for(p=a;p<(a+max);p++)
cout<<*p<<' ';
cout<<endl;
return 0;
}[/CODE]

我自己又加了个提取最小数的,但为什么最小数最后会变成10呢?无论最小那个是什么,都变成10的

[IMG]http://photo.store.qq.com/http_imgload.cgi?/rurl2=7e4fd5d9a063c878ddccf31b06203d6cbf487e558384baa859dd17418cce3ce8a0dc1b030821d5beaf5255c296c6f6ca3ce1808feefbb6c31f85f298f8d7c2333c11144b5a71965802da668b5d13816d39baf6e0[/IMG]

[IMG]http://photo.store.qq.com/http_imgload.cgi?/rurl2=51709e058777c92ca8f74543d893fa5f79c92705000621e185e6e8ed5e8170ddc8197797558dbd84b44147430070b18c9a5f5d1ac1b964a56b74a2759be86127acbaf97db97d3bbc66830ff3a635df47fa3f807c[/IMG]

2007-07-29 16:18
a8451727
Rank: 1
等 级:新手上路
帖 子:238
专家分:5
注 册:2007-5-22
收藏
得分:0 

前面的可以了,帮我看下后面那个问题啊


2007-07-29 23:18
a8451727
Rank: 1
等 级:新手上路
帖 子:238
专家分:5
注 册:2007-5-22
收藏
得分:0 
for(j=index2;j<max-1;j++){
*(p+j)=*(p+j+1);
*(p+j+1)=value2;
}


我说我想了这么久,原来错这了。

2007-07-30 12:05
a8451727
Rank: 1
等 级:新手上路
帖 子:238
专家分:5
注 册:2007-5-22
收藏
得分:0 
以下是引用wtyj112在2007-7-30 9:49:32的发言:
你这个程序能扩展到几个有点趣问题 我喜欢
你怎么会想到做这个程序的啊??
你能不能再从一些老的程序上再想点有趣的新问题出来 。。

对程序挑剔点就行了
我初学的,加你Q了。


2007-07-30 12:06
a8451727
Rank: 1
等 级:新手上路
帖 子:238
专家分:5
注 册:2007-5-22
收藏
得分:0 
以下是引用wtyj112在2007-7-30 12:43:30的发言:
不只错那里 还有就是 你的程序流程是 找出最大 -> 找出最小 -> 把最大放最前 -> 把最小放最后
这个流程是有问题的 你自己仔细想想为什么那里有问题!!

还有一个有点趣的地方 不知道你注意了没有 出错的时候为什么 最后一个老是10 而不是别的?
最后一个老是10 而不是别的?

你说下看看

你不说我还没考虑过这个问题呢

[此贴子已经被作者于2007-7-30 14:05:18编辑过]


2007-07-30 13:51
快速回复:[求助2]指针,看下错哪了。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031867 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved