标题:关于指针的简单问题
只看楼主
wei19931119
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-1-23
结帖率:100%
已结贴  问题点数:10 回复次数:5 
关于指针的简单问题
输入10个整数,将其中最小的书与第一个数对换,最大的数和最后一个数对换。

#include<stdio.h>
int*p,*q,a[10];
int main()
{
    void input(int*p);
    void swap(int p1,int p2);
    void output(int*q);
    int max,min,i;
    printf("Please input 10 numbers:");
    output(q);
    return 0;
}
void input(int*p)
{
    for(p=a;p<(a+10);p++)
        scanf("%d",p);
}
void swap(int p1,int p2)
{
    int k;
    k=p1;
    p1=p2;
    p2=k;
}
void output(int*q)
{
    for(q=a;q<(a+10);q++)
        printf(" %d",*q);
}

结果不能进行对换,求解释。
   
搜索更多相关主题的帖子: void include numbers return 
2013-05-09 21:21
不要脸的猫
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:41
专家分:126
注 册:2012-6-20
得分:2 
值传递与地址传递的方式的区别,建议楼主了解了解

埋骨何须桑梓地,人生无处不青山
2013-05-09 21:43
Baoshenglin
Rank: 2
等 级:论坛游民
帖 子:22
专家分:27
注 册:2013-3-2
得分:4 
#include<stdio.h>
void getdata(int *a,int n)
{int i;
 for(i=0;i<n;i++)
     scanf("%d",&a[i]);
}
void fun(int *a,int n)
{int t;
 int i=0,j=1;
 while(j<n)
     {if(a[i]>a[j])
         i=j;
      j++;
     }
 t=a[0];
 a[0]=a[i];
 a[i]=t;
 i=0;j=1;
 while(j<n)
     {if(a[i]<a[j])
          i=j;
      j++;
     }
 t=a[9];
 a[9]=a[i];
 a[i]=t;
}
void putdata(int *a,int n)
{int i;
 for(i=0;i<n;i++)
     printf("%d ",a[i]);
}
main()
{int a[10];
 getdata(a,10);
 fun(a,10);
 putdata(a,10);
}
2013-05-09 21:52
helloUJS
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:168
专家分:731
注 册:2013-3-27
得分:4 
#include <stdio.h>
int*p,*q,a[10];
int main()
{
    void input(int*p);
    void swap(int *p1,int *p2);
    void output(int*q);
    int max,min,i;
    printf("Please input 10 numbers:");
    input(a);  /*输入10个数到数组a,实参为a,不能是p或q,注意p、q的初始值*/
    for(i=0;i<10;i++)  /*最小数到a[0],最大数到a[9]*/
    {
       if(a[i]<a[0])
          swap(&a[0],&a[i]);
       if(a[i]>a[9])
          swap(&a[9],&a[i]);
    }
    output(a); /*输出数组a*/
    return 0;
}
void input(int*p)
{
    for(p=a;p<(a+10);p++)
        scanf("%d",p);
}
void swap(int *p1,int *p2)  /*参数为指针*/
{
    int k;
    k=*p1;
    *p1=*p2;
    *p2=k;
}

void output(int*q)
{
    for(q=a;q<(a+10);q++)
        printf(" %d",*q);
}
供参考
2013-05-09 22:14
wei19931119
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-1-23
得分:0 
昨天漏了一些东西

#include<stdio.h>
int*p,*q,a[10];
int main()
{
    void input(int*p);
    void swap(int p1,int p2);
    void output(int*q);
    int max,min,i;
    printf("Please input 10 numbers:");
    input(p);
    max=min=a[0];
    for(i=1;i<10;i++)
        if(a[i]>max)
            max=a[i];
    swap(max,a[0]);
    for(i=0;i<10;i++)
        if(a[i]<min)
            min=a[i];
    swap(min,a[9]);
    output(q);
    return 0;
}
void input(int*p)
{
    for(p=a;p<(a+10);p++)
        scanf("%d",p);
}
void swap(int p1,int p2)
{
    int k;
    k=p1;
    p1=p2;
    p2=k;
}
void output(int*q)
{
    for(q=a;q<(a+10);q++)
        printf(" %d",*q);
}
   
2013-05-10 09:58
wei19931119
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-1-23
得分:0 
应为
swap(max,a[9]);
swap(min,a[0]);
但还是不行。
2013-05-10 11:04



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




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

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