C语言网

 找回密码
 加入社区!

QQ登录

只需一步,快速开始

查看: 259|回复: 4

[求助】C语言习题解答 [复制链接]

Rank: 1

主题
0
帖子
7
C币
9 枚
在线时间
0 小时
发表于 2010-9-2 22:08:18 |显示全部楼层
1,void f(int v,intw)
     {  int t;
   
        t=v;   v=w;   w=t;

      }
    main()
        {int   x=1,y=3,z=2;

         if(x>y)     f(x,y)
         else if(y>z)    f(y,z);

         else            f(x,z);
          printf ("%d,%d,%d,%d\n", x,y,z);
      }

2.void     swap1(int c[])

{  int t ;

      t=c[0];c[0]=c[1];c[1]=t;
void   swap2(int c0,int c1)
{int t;
     t=c0;c0=t1;c1=t

    main()
   {int  a[2]={3,5},b[2]={3,5}

      swap1(a);  swap2(b[0],b[1]);
   
     printf("%d,%d,%d,%d,a[0],a[1],b[0],b[1]);


3. void fun (int *a,int i,int j)
   {int t;

      if(i<j)
     { t=a[i];a[i]=a[j];a[j]=t
     fun (a,++i ,--j);
        }
      }
     
      main()
      int a[]={1,2,3,4,5,6},i ;
      fun(a,0,5);
      for (i=0;i<6;i++)
              printf("%d",a[i]);
      }

求大虾详细解答。。。。越详细越好,我是刚学C,不是太懂,谢谢!!!!

Rank: 1

主题
0
帖子
7
C币
9 枚
在线时间
0 小时
发表于 2010-9-3 09:15:58 |显示全部楼层
请高人解答啊,谢谢!!!!!!!!!!!!!!

Rank: 8Rank: 8

主题
24
帖子
636
C币
758 枚
在线时间
504 小时
发表于 2010-9-3 12:09:52 |显示全部楼层
第一个是传值调用,不改变原参数的值!也就是输出1 3 2这个知道吧?不清楚的话在好好看看书哦!还有就是你打错了好多啊!第一个输出语句就多打 了个%d!呵呵!下次注意!
第二个你也打错了不少哦!第一个swap1是传址调用!会改变原参数的值!这都是书上的知识!还有就是swap2和第一个程序一样是传值调用,故输出5 3 3 5
第三个你在发上来看看!仔细敲出来!调试错误太多了
因为执着,所以成功

Rank: 8Rank: 8

主题
24
帖子
636
C币
758 枚
在线时间
504 小时
发表于 2010-9-3 12:21:36 |显示全部楼层
#include<stdio.h>
void fun (int *a,int i,int j)
   {int t;

      if(i<j)
     {
                  t=a[i];a[i]=a[j];a[j]=t;
          }
          if(i>j)
                  return ;
     fun (a,++i ,--j);
        
      }
     
      main()
          {
      int a[]={1,2,3,4,5,6},i ;
      fun(a,0,5);
      for (i=0;i<6;i++)
              printf("%d",a[i]);
      }
第三个加个return语句以跳出;不然没输出!纵观三题都是考查传值和传址调用的理解!好好看看书哈
因为执着,所以成功

Rank: 1

主题
0
帖子
7
C币
9 枚
在线时间
0 小时
发表于 2010-9-7 20:58:10 |显示全部楼层
明白了一些,谢谢诶
您需要登录后才可以回帖 登录 | 加入社区!

C语言 ( 粤ICP备11042647号-2 )

GMT+8, 2012-2-7 23:03

©2009-2011 cyuyan.com.cn

回顶部