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

#include <iostream>
#include <iomanip>

using namespace std;
const int max=5;

int main()
{
int a[max];
int i,j,k,t;
int *p=a;
cout<<"Enter the a:";
for(i=0;i<max;i++)
cin>>*(p+i);

for(i=0;i<max;i++){
k=i;
for(j=i+1;j<max;j++)
if(*(p+j)<*(p+k)){
k=j;
t=*(p+k);
*(p+k)=*(p+j);
*(p+j)=t;
}
}
for(p=a;p<(a+max);)
cout<<*p++<<' ';
cout<<endl;
return 0;
}

用指针将数组从小到大排列。
但输出老是错的,哪出问题了
自己找不到啊

搜索更多相关主题的帖子: 指针 
2007-07-26 02:25
圆圆的鸟蛋
Rank: 1
等 级:新手上路
帖 子:216
专家分:0
注 册:2007-4-22
收藏
得分:0 
k=j;
t=*(p+k);
*(p+k)=*(p+j);
*(p+j)=t;
LZ仔细分析一下这里吧!因为一句k=j,导致了数据交换的错误!
在下个人觉得完全没有必要用指针来做,也完全没有定义变量k的必要。。

鸟蛋开始孵化。。。我等待那一天Forever。。
2007-07-26 02:59
zhaojinhai
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-7-25
收藏
得分:0 
t=*(p+j);
*(p+k)=*(p+j);
*(p+j)=t;
k=j;
试试这个
2007-07-26 11:15
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 

[CODE]int main()
{
int a[max];
int i,j,k,t;
int *p=a;
cout<<"Enter the a:";
for(i=0;i<max;i++)
cin>>*(p+i);
for(i=0;i<max;i++){
k=i;
for(j=i+1;j<max;j++)
if(*(p+j)<*(p+k)) //不用括号,每外层循环只做一次交换,内层只需要找最小索引
k=j;
t=*(p+k); //交换是索引i和k的值
*(p+k)=*(p+i);
*(p+i)=t;


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


[此贴子已经被作者于2007-7-26 12:18:42编辑过]


Fight  to win  or  die...
2007-07-26 11:38
a8451727
Rank: 1
等 级:新手上路
帖 子:238
专家分:5
注 册:2007-5-22
收藏
得分:0 
以下是引用圆圆的鸟蛋在2007-7-26 2:59:15的发言:
k=j;
t=*(p+k);
*(p+k)=*(p+j);
*(p+j)=t;
LZ仔细分析一下这里吧!因为一句k=j,导致了数据交换的错误!
在下个人觉得完全没有必要用指针来做,也完全没有定义变量k的必要。。

刚刚学到指针啊,练习一下的


2007-07-26 12:10
a8451727
Rank: 1
等 级:新手上路
帖 子:238
专家分:5
注 册:2007-5-22
收藏
得分:0 
以下是引用aipb2007在2007-7-26 11:38:24的发言:

[CODE]int main()
{
int a[max];
int i,j,k,t;
int *p=a;
cout<<"Enter the a:";
for(i=0;i<max;i++)
cin>>*(p+i);
for(i=0;i<max;i++){
k=i;
for(j=i+1;j<max;j++)
if(*(p+j)<*(p+k)) //不用括号,每外层循环只做一次交换,内层只需要找最小索引
k=j;
t=*(p+k); //交换是索引i和k的值
*(p+k)=*(p+i);
*(p+i)=t;


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




关于循环里面,最不懂就是多个或少个括号的区别


2007-07-26 15:07
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 

不加括号,循环的域只到下一句
加括号,到整个花括号结束


Fight  to win  or  die...
2007-07-26 16:10
a8451727
Rank: 1
等 级:新手上路
帖 子:238
专家分:5
注 册:2007-5-22
收藏
得分:0 
多谢了

2007-07-26 21:34
快速回复:[求助]指针,看下错哪了。
数据加载中...
 
   



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

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