| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 537 人关注过本帖
标题:帮忙看一下这道指针的简单习题!
只看楼主 加入收藏
zwlcdh
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2007-2-8
收藏
 问题点数:0 回复次数:6 
帮忙看一下这道指针的简单习题!
/*输入3个整数,按由小到大的顺序输出*/
#include<stdio.h>
void main()
{void chang(int,int,int);
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
chang(a,b,c);
}
void chang(int x,int y,int z)
{int *p,k;
if(x>y){k=x;x=y;y=k;}
if(y>z){k=y;y=z;z=k;}
if(x>z){k=x;x=z;z=k;}
p=&x;
for(;p<&x+3;p++)
printf("%d ",*p);
printf("\n");
}
这个编译没有问题,但结果有问题!帮忙看一下那里有毛病?
搜索更多相关主题的帖子: 习题 指针 
2007-03-05 10:23
summoner
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:1622
专家分:0
注 册:2005-3-3
收藏
得分:0 
p++后,指针不知道指到哪去了,当然显示的不是排序后2个的数值

[URL=javascript:window.close();e=new Enumerator(window.opener.document.images);for(;!e.atEnd();e.moveNext()){e.item().src=\'http://blog./UploadFiles/2007-1/117175967.gif\';}]其疾如風、其徐如林、侵掠如火、不動如山、難知如陰、動如雷震[/URL]
2007-03-05 10:52
zwlcdh
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2007-2-8
收藏
得分:0 

#include<stdio.h>
void main()
{void chang(int,int,int);
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
chang(a,b,c);
}
void chang(int x,int y,int z)
{int *p,k,i;
if(x>y){k=x;x=y;y=k;}
if(y>z){k=y;y=z;z=k;}
if(x>z){k=x;x=z;z=k;}
p=&x;
for(i=0;i<3;i++)
printf("%d ",*(p+i));
printf("\n");
}
改成这样结果还是不对阿!!跟没有排序一样!

2007-03-05 11:37
summoner
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:1622
专家分:0
注 册:2005-3-3
收藏
得分:0 
printf("%d %d %d",x,y,z);

[URL=javascript:window.close();e=new Enumerator(window.opener.document.images);for(;!e.atEnd();e.moveNext()){e.item().src=\'http://blog./UploadFiles/2007-1/117175967.gif\';}]其疾如風、其徐如林、侵掠如火、不動如山、難知如陰、動如雷震[/URL]
2007-03-05 12:00
summoner
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:1622
专家分:0
注 册:2005-3-3
收藏
得分:0 

你的那些用法是对数组的用法


[URL=javascript:window.close();e=new Enumerator(window.opener.document.images);for(;!e.atEnd();e.moveNext()){e.item().src=\'http://blog./UploadFiles/2007-1/117175967.gif\';}]其疾如風、其徐如林、侵掠如火、不動如山、難知如陰、動如雷震[/URL]
2007-03-05 12:01
xianlin_lea
Rank: 1
等 级:新手上路
帖 子:72
专家分:0
注 册:2006-10-6
收藏
得分:0 
影响结果的并不是

for(i=0;i<3;i++)
printf("%d ",*(p+i)); \\改为p++或printf("%d %d %d",x,y,z);都可以


影响结果的真正原因在:
if(x>y){k=x;x=y;y=k;}
if(y>z){k=y;y=z;z=k;}
if(x>z){k=x;x=z;z=k;}
这样并不能真正实现排序!

可以用一些方法进行测试!(例如"黑盒法")

对于大于2个的数排序建议用一些常用的排序方法(如冒泡,选择,插入,堆排序,快速排序……)

2007-03-05 12:27
zwlcdh
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2007-2-8
收藏
得分:0 

天啊!又发现自己一个对指针的错误认识!辛苦大家了

2007-03-05 17:37
快速回复:帮忙看一下这道指针的简单习题!
数据加载中...
 
   



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

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