标题:自定义函数
只看楼主
qq1274371820
Rank: 1
等 级:新手上路
帖 子:149
专家分:0
注 册:2013-11-24
结帖率:75.86%
已结贴  问题点数:20 回复次数:4 
自定义函数
我写的这个输不出结果来,是怎么回事啊?
求各位大神帮忙

#include<stdio.h>
void input(int *arr)
{
    int i;
    printf("输入8个整数:");
    for(i=0;i<8;i++)
        scanf("%d",*(arr+i));
}
void process(int *a,int n)
{
    int i,j;
    int x=0;
    for(i=0;i<(n-1);i++)
        for(j=i+1;j<n;j++)
            if(*(a+i)>*(a+j))
            {
                x=*(a+i);
                *(a+i)=*(a+j);
                *(a+j)=x;
            }
}
void output(int *b)
{
    int i;
    int a[8]={0};
    *b=a;
    process(a,8);
    printf("从小到大输出为:");
    for(i=0;i<8;i++)
        printf("%d",*(b+i));
}
int main()
{
    int a[8]={0};
    int *p=a;
    input(p);
    process(p,8);
    output(p);
    return 0;
}
搜索更多相关主题的帖子: include process 
2013-12-01 22:27
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
得分:10 
额  注意小细节
#include<stdio.h>
void input(int *arr)
{
    int i;
    printf("输入8个整数:");
    for(i=0;i<8;i++)
        scanf("%d",*(arr+i));   //输入,引用地址   所以改为 arr+i 即可
}
void process(int *a,int n)
{
    int i,j;
    int x=0;
    for(i=0;i<(n-1);i++)
        for(j=i+1;j<n;j++)
            if(*(a+i)>*(a+j))
            {
                x=*(a+i);
                *(a+i)=*(a+j);
                *(a+j)=x;
            }
}
void output(int *b)
{
    int i;
    int a[8]={0};
    *b=a;                    
    process(a,8);
    printf("从小到大输出为:");   //不明白你为何加上这段,你程序的功能不就是从小到大排序嘛,这段是多余的啊,会使结果不正确,去掉吧
    for(i=0;i<8;i++)
        printf("%d",*(b+i));  //输出时注意每个数之间隔开,所以 %d 后面加个空格或者根据你输入数的位数改为 %4d 、%10d 等等...
}
int main()
{
    int a[8]={0};
    int *p=a;
    input(p);
    process(p,8);
    output(p);
    return 0;
}

[ 本帖最后由 韶志 于 2013-12-2 00:01 编辑 ]

三十年河东,三十年河西,莫欺少年穷!
2013-12-01 23:59
wht750109
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:49
专家分:151
注 册:2013-10-21
得分:10 
#include<stdio.h>
void input(int *arr)
{
    int i;
    printf("输入8个整数:");
    for(i=0;i<8;i++)
        scanf("%d",(arr+i)); /*把*(arr+i)的*去掉才行因为arr表示首地址,加*号表示把首地址的值再作为地址输入,不是你的初衷*/
}
void process(int *a,int n)
{
    int i,j;
    int x=0;
    for(i=0;i<(n-1);i++)
        for(j=i+1;j<n;j++)
            if(*(a+i)>*(a+j))
            {
                x=*(a+i);
                *(a+i)=*(a+j);
                *(a+j)=x;
            }
}
void output(int *b)
{
    int i;
    printf("\n");
    for(i=0;i<8;i++)                  /*这里重复,去掉重复函数直接打印答案正确*/
        printf("%d,",*(b+i));
    getch();
}
int main()
{
/*    int a[8]={2,5,8,7,1,3,4,6};
    int *p=a;*/   /*这两行为厕所用,不想输入麻烦*/
    int a[8]={0};
    int *p=a;
    input(p);
    process(p,8);
    output(p);
    return 0;
}
2013-12-02 00:17
wht750109
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:49
专家分:151
注 册:2013-10-21
得分:0 
/*这两行为厕所用,不想输入麻烦*/
对不起,是测试,不是厕所,手误,现更正。
2013-12-02 00:19
qq1274371820
Rank: 1
等 级:新手上路
帖 子:149
专家分:0
注 册:2013-11-24
得分:0 
回复 4楼 wht750109


                       ...

自定义人生。。。
2013-12-06 14:14



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




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

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