标题:新手题 指针作为函数形参使最大最小数对调 有大佬能看看哪里错了么?
只看楼主
qq14
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2020-11-23
结帖率:100%
已结贴  问题点数:20 回复次数:4 
新手题 指针作为函数形参使最大最小数对调 有大佬能看看哪里错了么?
输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写3个函数:①输入10个数;②进行处理;③输出10个数。所有函数的参数均用指针。
我的代码如下,是哪个环节的问题呢,指针不是很懂
#include <stdio.h>
#include <stdlib.h>
void In(int *b);
void Swap(int *x,int *y);
void Out (int *b);
int main()
{
    int x[10];
    int *b=x;
    In(b);
    int k=0,K=9;
    for(int j=0;j<10;j++)
    {
        if(x[k]>x[j]) {k=j;}
    }
    for(int g=0;g<10;g++)
    {
        if(x[K]<x[g]) {K=g;}
    }
    if(k!=0) Swap(&x[0],&x[k]);
    if(K!=9) Swap(&x[9],&x[K]);
    Out(b);
    return 0;
}
void In(int *b)
{
    int x[10];
    for(int i=0;i<10;i++)
    {
        scanf("%d",&x[i]);
    }
    b=x;
}
void Swap(int *x,int *y)
{
    int t;
    t=*x;
    *x=*y;
    *y=t;
}
void Out(int *b)
{
    int y[10];
    b=y;
    for(int i=0;i<10;i++)
    {
        printf("%d ",y[i]);
    }
}
输出了10个奇奇怪怪的数字。。
搜索更多相关主题的帖子: void int for 指针 函数 
2020-12-25 20:13
风过无痕1989
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:8
帖 子:228
专家分:1050
注 册:2020-7-17
得分:10 
回复 楼主 qq14
程序代码:
#include <stdio.h>
#include <stdlib.h>
void In(int *b);
int Swap(int *x, int *y);
void Out(int *b);
int main()
{
    int *b, x[10];
    b = x;
    In(b);

    int k = 0, K = 9;
    for (int j = 0;j<10;j++)
    {
        if (x[k]>x[j])
        {
            k = j;
        }
    }
    for (int g = 0;g<10;g++)
    {
        if (x[K]<x[g])
        {
            K = g;
        }
    }

    if (k != 0)
        Swap(&x[0], &x[k]);
    if (K != 9)
        Swap(&x[9], &x[K]);
    Out(b);
    return 0;
}

void In(int *b)
{
    int i;
    for (int i = 0;i<10;i++)
    {
        scanf("%d", b + i);
    }
}

int Swap(int *x, int *y)
{
    int t;
    t = *x;
    *x = *y;
    *y = t;
    return 0;
}

void Out(int *b)
{
    for (int i = 0;i<10;i++)
    {
        printf("%d ", *(b + i));
    }
    printf("\n");
}
2020-12-25 22:45
do8do8do8
Rank: 10Rank: 10Rank: 10
来 自:沙滩
等 级:贵宾
威 望:17
帖 子:366
专家分:1845
注 册:2010-7-2
得分:10 
教你如何排除问题吧,先改成下面的,然后再运行
看看是什么结果
void Out(int *b)
{
    int y[10];/*改成int *y=null;*/
    b=y;    /*   改成y=b;*/
    for(int i=0;i<10;i++)
    {
        printf("%d ",y[i]);
    }
}

学C语言从底层开始,学编程从问题开始,一日学会C!!!
2020-12-25 23:09
qq14
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2020-11-23
得分:0 
回复 2楼 风过无痕1989
运行出来了!谢谢大佬!
2020-12-26 16:17
qq14
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2020-11-23
得分:0 
回复 3楼 do8do8do8
还是有奇怪的数字,改成scanf("%d",b+i)就可以!能运行了现在!谢谢你
2020-12-26 16:21



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




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

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