输入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");
}
----------------解决方案--------------------------------------------------------
#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句应该没错吧``
数组名做参数时```就是数组的头地址啊```
----------------解决方案--------------------------------------------------------
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");
}
----------------解决方案--------------------------------------------------------