机智如我么么哒 发表于 2019-9-26 22:24:58

求大佬解决一下,我的代码没有输出值

#include<stdio.h>

int main()
{
        int fac1(int *p1);
        int fac2(int *p2);
        int fac3(int *p3);
        int fac4(int *p4,int x,int y);
        int str;
        int t,m;
       
        fac1(str);
        t=fac2(str);
       
        m=fac3(str);
       fac4(str,t,m);

}
int fac1(int *p)//函数1输入十个数
{
        scanf("%d",*p);
}
int fac2(int *p)//函数二判断最大值
{
        int b,c,t,i,j;
        for(i=0,j=0;i<9;i+2,j++)
        {
                if(*(p+i)>*(p+i+1))b=*(p+i);//这里从十个数中抽5个数,如果str,输出str,在比较str和str
                else b=*(p+i+1);
        }
        for(i=0,j=0;i<4;i+2,j++)
        {
                if(b>b)c=b;
                else c=b;
        }
        if(c>c&&c>c)t=c;//判断三个值那个最大
        if(c>c&&c>c)t=c;
        if(c>c&&c>c)t=c;
        return (t);
}
int fac3(int *p)//判断最小值,与最大值类似
{
        int b,c,i,j,m;
        for(i=0,j=0;i<9;i+2,j++)
        {
                if(*(p+i)<*(p+i+1))b=*(p+i);
                else b=*(p+i+1);
        }
        for(i=0,j=0;i<4;i+2,j++)
        {
                if(b<b)c=b;
                else c=b;
        }
        if(c<c&&c<c)m=c;
        if(c<c&&c<c)m=c;
        if(c<c&&c<c)m=c;
        return (m);       
}
int fac4(int *p,int x,int y)//判断最大值与最小值的位置,并将最大值与最后一个交换,最小与第一个交换
{
        int i,j,k,g;
        for(i=0;i<10;i++)
        {
                if(*(p+i)-x==0)j=i;
        }
        for(i=0;i<10;i++)
        {
                if(*(p+i)-y==0)k=i;
        }
        g=*(p+j);
        *(p+j)=*(p+9);
        *(p+9)=g;
        g=*(p+k);
        *(p+k)=*(p+0);
        *(p+0)=g;
        for(i=0;i<10;i++)
        {
                printf("%d ",*(p+i)); //输出新的排列
        }
}




原题目为用函数输入10个整数,用函数将最大值与最后一个数交换位置,最小与第一个交换位置,在用函数输出结果

superbe 发表于 2019-9-27 00:46:54

本帖最后由 superbe 于 2019-9-27 03:02 编辑

#include<stdio.h>

int main()
{
        void fac1(int *p1);
        int fac2(int *p2);
        int fac3(int *p3);
        void fac4(int *p4,int x,int y);
        int str;
        int t,m;

        fac1(str);
        t=fac2(str);

        m=fac3(str);
        fac4(str,t,m);
      return 0;
}

void fac1(int *p)//函数1输入十个数
{
        int i;
        printf("输入10个整数:\n");
        for(i=0;i<10;i++){
                scanf("%d",p+i);
        }
}

int fac2(int *p)//函数二判断最大值
{
        int b,c,t,i,j;
        for(i=0,j=0;i<9;i+=2,j++)
        {
                if(*(p+i)>*(p+i+1)) b=*(p+i);//这里从十个数中抽5个数,如果str,输出str,在比较str和str
                else b=*(p+i+1);
        }
        for(i=0,j=0;i<4;i+=2,j++)
        {
                if(b[ i ]>b) c=b[ i ];
                else c=b;
        }
        c=b;
        if(c>c && c>c) t=c;//判断三个值那个最大
        if(c>c && c>c) t=c;
        if(c>c && c>c) t=c;
        return (t);
}

int fac3(int *p)//判断最小值,与最大值类似
{
        int b,c,i,j,m;
        for(i=0,j=0;i<9;i+=2,j++)
        {
                if(*(p+i)<*(p+i+1)) b=*(p+i);
                else b=*(p+i+1);
        }
        for(i=0,j=0;i<4;i+=2,j++)
        {
                if(b[ i ]<b) c=b[ i ];
                else c=b;
        }
        c=b;
        if(c<c && c<c) m=c;
        if(c<c && c<c) m=c;
        if(c<c && c<c) m=c;
        return (m);      
}

void fac4(int *p,int x,int y)//判断最大值与最小值的位置,并将最大值与最后一个交换,最小与第一个交换
{
        int i,j,k,g;
        for(i=0;i<10;i++)
        {
                if(*(p+i)-x==0){
                        j=i; break;
                }
               
        }
        for(i=0;i<10;i++)
        {
                if(*(p+i)-y==0){
                        k=i; break;
                }
        }
        g=*(p+j);
        *(p+j)=*(p+9);
        *(p+9)=g;
        g=*(p+k);
        *(p+k)=*(p+0);
        *(p+0)=g;
        for(i=0;i<10;i++)
        {
                printf("%d ",*(p+i)); //输出新的排列
        }
}

最大值、最小值函数太繁琐了,可以改成这样:
int fac2(int *p)//函数二判断最大值
{
        int i,max;
      max=*p;       
        for(i=1;i<10;i++){
                if(*(p+i)>max) max=*(p+i);
        }
        return max;
}

seglex 发表于 2019-9-27 01:09:51

本帖最后由 seglex 于 2019-9-27 01:26 编辑

……

机智如我么么哒 发表于 2019-9-27 08:33:31

superbe 发表于 2019-9-27 00:46
#include

int main()


可是我照着你的最大和最小改了还是不对。没有输出值

superbe 发表于 2019-9-27 09:14:55

本帖最后由 superbe 于 2019-9-27 10:01 编辑

代码中有其它问题已修改过了,把完整代码复制过去编译运行。

页: [1]
查看完整版本: 求大佬解决一下,我的代码没有输出值