| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1134 人关注过本帖
标题:C语言的一个问题..想不懂
只看楼主 加入收藏
xufan123
Rank: 5Rank: 5
等 级:职业侠客
帖 子:226
专家分:318
注 册:2010-11-15
收藏
得分:0 
这样搞 搞个指针哈 
#include<stdio.h>
void fun(int *p1,int *p2)
{
    int temp;
    {
    temp=*p1;
    *p1=*p2;
    *p2=temp;
    }
}
void main()
{
    int a=1,b=3,c=2;
    int *p1,*p2,*p3;
    p1=&a;
    p2=&b;
    p3=&c;
    if(a<b) fun(p1,p2);
    if(a<c) fun(p1,p3);
    if(b<c) fun(p2,p3);
    printf("%d%d%d",a,b,c);
}
2011-01-09 22:45
劣质数轴
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:89
专家分:163
注 册:2010-11-19
收藏
得分:0 
LS正解……
传回两个值要用传址调用
或者用数组、结构……
2011-01-09 22:53
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:0 
是值传递(by value)和引用(by reference)的问题吧。

   唯实惟新 至诚致志
2011-01-09 23:34
huangapple
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:545
专家分:1790
注 册:2010-12-30
收藏
得分:5 
#include<stdio.h>
void f(int *x,int *y)
{  int t;
   if(*x<*y){t=*x;*x=*y;*y=t;}
}
void main()
{  int a=1,b=3,c=2;
   f(&a,&b);f(&a,&c);f(&b,&c);
   printf("%d,%d,%d\n",a,b,c);
}
唉,深更半夜的,才5分

勤能补拙,熟能生巧!
2011-01-10 02:16
ukam
Rank: 2
等 级:论坛游民
帖 子:9
专家分:10
注 册:2011-1-4
收藏
得分:0 
你的问题究竟是什么啊?是排序吗
2011-01-10 09:14
wengdy
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2010-12-27
收藏
得分:0 
回复 14楼 huangapple
没办法啊,俺是新手,就那么几分,都给你拉...
2011-01-10 16:13
icebergwang
Rank: 2
来 自:河北廊坊
等 级:论坛游民
帖 子:17
专家分:19
注 册:2011-1-8
收藏
得分:0 
#include<stdio.h>
void f(int* x,int* y)
{
    int t;
    if(*x<*y) t=*x,*x=*y,*y=t;
}
void main()
{  
    int a=1,b=3,c=2;
    f(&a,&b);f(&a,&c);f(&b,&c);
    printf("%d,%d,%d\n", a,b,c);
}

跟着感觉走,欲速则不达
2011-01-10 19:28
lqpqbyb
Rank: 1
等 级:新手上路
帖 子:18
专家分:8
注 册:2011-1-8
收藏
得分:0 
程序改为如下:
void f(int *x,int *y)
{  int t;
   if(*x<*y){t=*x;*x=*y;*y=t;}
}
void main()
{  int a=1,b=3,c=2;
   int *pa=&a,*pb=&b,*pc=&c;
   f(pa,pb);f(pa,pc);f(pb,pc);
   printf("%d,%d,%d\n",a,b,c);
}
哈哈,用这个肯定行。
楼主原先的程序:
void f(int x,int y)
{  int t;
   if(x<y){t=x;x=y;y=t;}
}
void main()
{  int a=1,b=3,c=2;
   f(a,b);f(a,c);f(b,c);
   printf("%d,%d,%d\n",a,b,c);
}
你定义一个比较大小的函数f,但是你的主调函数f实参是常量;你的被调函数f形参也是整型的变量;
不管你被调函数如何改变形参变量的值x,y,但a,b值根本没改变,因此引入指针变量,让他们指向a,b,c;这样就可以了,建议楼主多看谭浩强的C程序设计,书内讲得非常清楚。

2011-01-11 18:44
威尔Smith
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-1-12
收藏
得分:0 
void f(int x,int y)
{  int t;
   if(x<y){t=x;x=y;y=t;} /*楼主解释下这个实现什么功能?*/
}
void main()
{  int a=1,b=3,c=2;
   f(a,b);f(a,c);f(b,c);
   printf("%d,%d,%d\n",a,b,c); /* 看不懂 */
}

根据楼主的意思,楼主可能想表达这个意思,冒昧写了个,如果错了,别见怪。
程序代码:
int f(int x,int y)
     {if(x<y)return y;
      else return x;}


 main()
{  int a=1,b=3,c=2;
   int f(int x,int y);
   printf("%d,%d,%d\n",f(a,b),f(a,c),f(b,c));
   getch();
}



只写模块
2011-01-12 13:48
快速回复:C语言的一个问题..想不懂
数据加载中...
 
   



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

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