当前位置: 代码迷 >> C语言 >> [求助]一个指针的习题
  详细解决方案

[求助]一个指针的习题

热度:319   发布时间:2007-06-12 12:43:05.0
[求助]一个指针的习题

输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后的一个数对换,编写三个函数,(1)输出10个数(2)进行处理(3)输出10个数
请问那里出错了
#include<stdio.h>
void main()
{
void input(int *);
void change(int *);
void output(int *);
int number[10];
input(number);
change(number);
output(number);

}
void input(int number)
{
int i;
printf("input 10 numbers:" );
for(i=0;i<10;i++)
scanf("%d",&number[i]);
}
void change(int number)
{
int *p,*max,*min,temp;
max=min=number;
for(p=number+1;p<number+10;p++)
if(*p>*max)
max=p;
else
if(*p<*min)
min=p;
temp=*number[0];number[0]=*min;*min=temp;
temp=*number[9];number[9]=*max;*max=temp;

}
void output(int number)
{
int *p;
printf("now number is:");
for(p=number;p<munber+10;p++)
printf("%d",*p);
printf("\n");
}

搜索更多相关的解决方案: void  习题  int  指针  number  

----------------解决方案--------------------------------------------------------
#include<stdio.h>
void main()
{
void input(int *);
void change(int *);
void output(int *);
int number[10];
input(number);
change(number);
output(number);

}
void input(int number[])
{
int i;
printf("input 10 numbers:" );
for(i=0;i<10;i++)
scanf("%d",&number[i]);
}
void change(int number[])
{
int *p,*max,*min,temp;
max=min=number;
for(p=number+1;p<number+10;p++)
if(*p>*max)
max=p;
else
if(*p<*min)
min=p;
temp=number[0];number[0]=*min;*min=temp;
temp=number[9];number[9]=*max;*max=temp;

}
void output(int number[])
{
int *p;
printf("now number is:");
for(p=number;p<number+10;p++)
printf("%d",*p);
printf("\n");
}
对指针的使用理解好,不加[],(或者用*),则函数运算后没有效果,空间释放了,没有对主调函数发生作用。


----------------解决方案--------------------------------------------------------
看着眼晕!!2楼正解!
----------------解决方案--------------------------------------------------------
多谢二楼的仁兄.这让我知道[]与*的用法
----------------解决方案--------------------------------------------------------
学习勒!~

----------------解决方案--------------------------------------------------------
数组名是一个地址常量来的

你想用实参传址就把形参改为指针

----------------解决方案--------------------------------------------------------

void input(int number)




void change(int number)


这2句应该没错吧``

数组名做参数时```就是数组的头地址啊```



----------------解决方案--------------------------------------------------------
以下是引用死了都要C在2007-6-14 16:00:28的发言:

void input(int number)




void change(int number)


这2句应该没错吧``

数组名做参数时```就是数组的头地址啊```


这两个函数的参数岂不变成了整形变量?


----------------解决方案--------------------------------------------------------

我同意上面的观点


----------------解决方案--------------------------------------------------------
#include<stdio.h>
void main()
{
void input(int *);
void change(int *);
void output(int *);
int number[10];
input(number);
change(number);
output(number);

}
void input(int number[])
{
int i;
printf("input 10 numbers:" );
for(i=0;i<10;i++)
scanf("%d",&number[i]);
}
void change(int number[])
{
int *p,*max,*min,temp;
max=min=number;
for(p=number+1;p<number+10;p++)
if(*p>*max)
max=p;
else
if(*p<*min)
min=p;
temp=number[0];number[0]=*min;*min=temp;
temp=number[9];number[9]=*max;*max=temp;

}
void output(int number[])
{
int *p;
printf("now number is:");
for(p=number;p<number+10;p++)
printf("%d",*p);
printf("\n");
}


----------------解决方案--------------------------------------------------------
  相关解决方案