标题:请帮帮小弟看懂这条程序,讲的尽量详细点,谢谢了!
取消只看楼主
弟大勿勃
Rank: 2
等 级:论坛游民
帖 子:186
专家分:59
注 册:2014-4-17
结帖率:81.82%
已结贴  问题点数:20 回复次数:5 
请帮帮小弟看懂这条程序,讲的尽量详细点,谢谢了!
程序代码:
#include <stdio.h>

void main()
{
      void  exchange(int *q1, int *q2, int *q3);

      int a, b, c, *p1, *p2, *p3;

      scanf("%d %d %d", &a, &b, &c);
      p1 = &a;
      p2 = &b; 
      p3 = &c;

      exchange(p1, p2, p3);  //确保a > b > c
      printf("%d %d %d\n", a, b, c);
}


void  exchange(int *q1, int *q2, int *q3) //int *q1 = p1;
{
      void swap(int *pt1, int *pt2); //用于交换&……&%

      if( *q1 < *q2 )
      {
            swap(q1, q2);
      }
      if( *q1 < *q3 )
      {
            swap(q1, q3);
      }
      if( *q2 < *q3 )
      {
            swap(q2, q3);
      }
}

 
void  swap(int *pt1, int *pt2)
{
      int temp;

      temp = *pt1;
      *pt1 = *pt2;
      *pt2 = temp;
}

为什么这段程序部事先声明好所有函数,而是在定义中声明函数。比如说“
void main()
{
      void  exchange(int *q1, int *q2, int *q3);...
还有void  exchange(int *q1, int *q2, int *q3) //int *q1 = p1;
{
      void swap(int *pt1, int *pt2); //用于交换&……&%...”
这是什么结构额?为什么不能事先把“exchang”和“swap”一起声明了,然后在下面就直接调用。按源程序的结构让我看的好凌乱啊!!!
搜索更多相关主题的帖子: exchange 
2014-10-04 17:13
弟大勿勃
Rank: 2
等 级:论坛游民
帖 子:186
专家分:59
注 册:2014-4-17
得分:0 
回复 2 楼 wssy213
你看它都是void类型的,我把它在开头声明了就会报错的。。
2014-10-04 17:29
弟大勿勃
Rank: 2
等 级:论坛游民
帖 子:186
专家分:59
注 册:2014-4-17
得分:0 
回复 5 楼 wssy213
程序代码:
#include <stdio.h>
void  exchange(int *q1, int *q2, int *q3)
void swap(int *pt1, int *pt2)
void main()
{
    

      int a, b, c, *p1, *p2, *p3;

      scanf("%d %d %d", &a, &b, &c);
      p1 = &a;
      p2 = &b; 
      p3 = &c;

      exchange(p1, p2, p3);  //确保a > b > c
      printf("%d %d %d\n", a, b, c);
}


void  exchange(int *q1, int *q2, int *q3) //int *q1 = p1;
{

      if( *q1 < *q2 )
      {
            swap(q1, q2);
      }
      if( *q1 < *q3 )
      {
            swap(q1, q3);
      }
      if( *q2 < *q3 )
      {
            swap(q2, q3);
      }
}

 
void  swap(int *pt1, int *pt2)
{
      int temp;

      temp = *pt1;
      *pt1 = *pt2;
      *pt2 = temp;
}

我就是这个意思,不是说先写主程序的话必须先声明要调用的函数“void  exchange(int *q1, int *q2, int *q3)
和void swap(int *pt1, int *pt2)”,但不行啊。是不是应为都是void型的原因?我对这个不太懂,请指教啊!如果你能写出来帮我改改看嘛大神~~
2014-10-05 15:12
弟大勿勃
Rank: 2
等 级:论坛游民
帖 子:186
专家分:59
注 册:2014-4-17
得分:0 
回复 7 楼 zklhp
那为什么能在主函数中声明exchang函数
程序代码:
void main()
{
      void  exchange(int *q1, int *q2, int *q3);

      int a, b, c, *p1, *p2, *p3;
?这种结构我以前没见过额,还有他下面被调用的函数exchang又有出现swap函数的声明
void  exchange(int *q1, int *q2, int *q3) //int *q1 = p1;
{
      void swap(int *pt1, int *pt2); 
,这又是怎么回事?
2014-10-05 16:30
弟大勿勃
Rank: 2
等 级:论坛游民
帖 子:186
专家分:59
注 册:2014-4-17
得分:0 
唉。。没人指点一下吗?
2014-10-06 12:46
弟大勿勃
Rank: 2
等 级:论坛游民
帖 子:186
专家分:59
注 册:2014-4-17
得分:0 
回复 11 楼 kal
那你能改一下这个程序吗,让他声明在前。
2014-10-09 22:20



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-436855-1-1.html




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

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