
C语言课本上的一个超简单的题目,可是就是查不出错……应经查了一天了……哪位大哥帮帮忙吧……
已经编译过了……#include<stdio.h>intmain(){inta[10];voidenter(int*p,intn);voidprocess(int*p,i...
已经编译过了……
#include<stdio.h>
int main()
{
int a[10];
void enter(int *p,int n);
void process(int *p,int n);
void print(int *p,int n);
enter(a,10);printf("aksdjfksdjf");
process(a,10);
print(a,10);
}
void enter(int *p,int n)
{
int i;
printf("enter the 10 numbers:\n");
for(i=0;i<n;i++)
scanf("%d",p+i);
}
void process(int *p,int n)
{
int i,x,y,*max,*min ,t;
max=p;
min=p;
for(i=1;i<n;i++)
{
if(*(p+i)>*max)
{
x=i;
max=p+i;
}
if(*(p+i)<*min)
{
y=i;
min=p+i;
}
}
t=*p;*p=*(p+y);*(p+y)=t;
t=*(p+n-1);*(p+n-1)=*(p+x);*(p+x)=t;
}
void print(int *p,int n)
{
int i;
for(i=0;i<n;i++)
printf("%5d",*(p+i));
} 展开
#include<stdio.h>
int main()
{
int a[10];
void enter(int *p,int n);
void process(int *p,int n);
void print(int *p,int n);
enter(a,10);printf("aksdjfksdjf");
process(a,10);
print(a,10);
}
void enter(int *p,int n)
{
int i;
printf("enter the 10 numbers:\n");
for(i=0;i<n;i++)
scanf("%d",p+i);
}
void process(int *p,int n)
{
int i,x,y,*max,*min ,t;
max=p;
min=p;
for(i=1;i<n;i++)
{
if(*(p+i)>*max)
{
x=i;
max=p+i;
}
if(*(p+i)<*min)
{
y=i;
min=p+i;
}
}
t=*p;*p=*(p+y);*(p+y)=t;
t=*(p+n-1);*(p+n-1)=*(p+x);*(p+x)=t;
}
void print(int *p,int n)
{
int i;
for(i=0;i<n;i++)
printf("%5d",*(p+i));
} 展开
5个回答
展开全部
我也做过一个类似的这样的程序,可以给你看一下,不知道能不能给你带来什么帮助。
我觉得你的程序里面的指针用的不是很恰当,特别是process函数中的max与min定义为指针不大妥当,还有就是在process函数的后面那里用到t太过于累赘。。
#include<stdio.h>
void input(int a[],int n)
{
int i;
for(i=0;i<n;i++)
scanf("%d",&a[i]);
}
void process(int a[],int n)
{
int max=a[n-1],min=a[0];
int i,mi=0,ma=n-1;
for(i=1;i<n;i++)
{
if(min>a[i])
{
min=a[i];
mi=i;
}
if(max<a[n-i-1])
{
max=a[n-i-1];
ma=n-i-1;
}
}
a[mi]=a[0];
a[0]=min;
a[ma]=a[n-1];
a[n-1]=max;
}
void output(int a[],int n)
{
for(int i=0;i<n;i++)
printf("%d,",a[i]);
printf("\n");
}
void main()
{
int a[10],n=10;
input(a,n);
process(a,n);
output(a,n);
}
我觉得你的程序里面的指针用的不是很恰当,特别是process函数中的max与min定义为指针不大妥当,还有就是在process函数的后面那里用到t太过于累赘。。
#include<stdio.h>
void input(int a[],int n)
{
int i;
for(i=0;i<n;i++)
scanf("%d",&a[i]);
}
void process(int a[],int n)
{
int max=a[n-1],min=a[0];
int i,mi=0,ma=n-1;
for(i=1;i<n;i++)
{
if(min>a[i])
{
min=a[i];
mi=i;
}
if(max<a[n-i-1])
{
max=a[n-i-1];
ma=n-i-1;
}
}
a[mi]=a[0];
a[0]=min;
a[ma]=a[n-1];
a[n-1]=max;
}
void output(int a[],int n)
{
for(int i=0;i<n;i++)
printf("%d,",a[i]);
printf("\n");
}
void main()
{
int a[10],n=10;
input(a,n);
process(a,n);
output(a,n);
}
展开全部
编译肯定没有问题,可能是在函数声明时出问题的,把自定义函数的声明语句放在main主函数的前面试试呢。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
void process(int *p,int n)
函数中的y是重点 系统会提示你没有初始化
如果不初始化的下面交换的语句就会发生错误
在编译上你的程序的确没有错误
建议你 将这个函数中x和y都赋初值0
函数中的y是重点 系统会提示你没有初始化
如果不初始化的下面交换的语句就会发生错误
在编译上你的程序的确没有错误
建议你 将这个函数中x和y都赋初值0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2010-06-16
展开全部
没错 只是不懂你想用来干啥
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
编译没错,但你的逻辑有问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询