求大佬解决一下,我的代码没有输出值
#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 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:26 编辑
…… superbe 发表于 2019-9-27 00:46
#include
int main()
可是我照着你的最大和最小改了还是不对。没有输出值 本帖最后由 superbe 于 2019-9-27 10:01 编辑
代码中有其它问题已修改过了,把完整代码复制过去编译运行。
页:
[1]