鱼C论坛

 找回密码
 立即注册
查看: 3495|回复: 11

有个程序,,运行后没有发现错误。。但是就得不到我想要的结果。。、

[复制链接]
发表于 2011-10-11 15:37:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
请各位大虾看看。。哪里有问题,。,,
#include<stdio.h>
void swap(int *a,int *b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;

}
void main()
{
int i,j,k,*p1,*p2,*p3;
p1=&i;
p2=&j;
p3=&k;
printf("请输入i,j,k:\n");
scanf("%d %d %d",i,j,k);
swap(p1,p2);
swap(p2,p3);
swap(p1,p3);
printf("调换后的值为:\n");
printf("%d %d %d ",i,j,k);
}
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-10-11 15:51:40 | 显示全部楼层
  1. #include<stdio.h>
  2. void swap(int *a,int *b)
  3. {
  4. int temp;
  5. temp=*a;
  6. *a=*b;
  7. *b=temp;

  8. }
  9. void main()
  10. {
  11. int i,j,k,*p1,*p2,*p3;
  12. printf("请输入i,j,k:\n");
  13. scanf("%d %d %d",i,j,k);
  14. p1=&i;
  15. p2=&j;
  16. p3=&k;
  17. swap(p1,p2);
  18. swap(p2,p3);
  19. swap(p1,p3);
  20. printf("调换后的值为:\n");
  21. printf("%d %d %d ",i,j,k);
  22. }
复制代码
这样去试试,我没调试,只是看了代码有错就回复下。。:$
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-10-12 12:39:03 | 显示全部楼层
scanf("%d %d %d",i,j,k);
改成 scanf("%d %d %d",&i,&j,&k);

swap参数传的是指针
所以要取地址的!

评分

参与人数 1荣誉 +3 收起 理由
小甲鱼 + 3 正解!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-10-13 06:06:56 | 显示全部楼层

谢谢了。。。这么初级的错误我都犯了。。刚学没多久。。,。还要虚心向大家学习啊。。。
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-10-13 07:34:54 | 显示全部楼层
YJL 发表于 2011-10-13 06:06
谢谢了。。。这么初级的错误我都犯了。。刚学没多久。。,。还要虚心向大家学习啊。。。

我发现运行后得不到我想要的两两互换的结果。。后面swap(p3,p1);删了就有了。。这是怎么回事 锕。。
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-10-13 07:35:29 | 显示全部楼层
苹果皮 发表于 2011-10-12 12:39
scanf("%d %d %d",i,j,k);
改成 scanf("%d %d %d",&i,&j,&k);

我发现运行后得不到我想要的两两互换的结果。。后面swap(p3,p1);删了就有了。。这是怎么回事 锕。。刚才回复错了。。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-10-13 09:08:28 | 显示全部楼层
弄不懂 你说什么,,我运行了程序,互换符合代码的表达
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-10-13 09:11:19 | 显示全部楼层
ㄨ珊瑚岛Γ 发表于 2011-10-13 09:08
弄不懂 你说什么,,我运行了程序,互换符合代码的表达

不可能吧。。你再试试,,那个i 还是没换啊,,,
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-10-13 09:48:27 | 显示全部楼层
试了 会换呀,
输入 1   2   3
swap(p1,p2); 换前 p1 = 1 ,p2 = 2 换后 p1 = 2  ,p2 = 1;

swap(p2,p3);  换前 p2 = 1 ,p3 = 3 换后 p2 = 3  ,p3 = 1;

swap(p1,p3);   换前 p1 = 2 ,p3 = 1 换后 p1 = 1  ,p3 = 2;

最后的结果是 i = 1, j = 3, k = 2 ;

回答完毕,,自己好好琢磨琢磨...
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-10-13 10:32:24 | 显示全部楼层
想不到我也范了个初级错误。。。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-10-13 15:14:20 | 显示全部楼层
..............都看木懂啊
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-10-13 16:05:46 | 显示全部楼层

...........
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-8 21:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表