新手,找错,关于指针和调用函数,谢谢。
新手求助,找错,关于指针和调用函数,多谢。。
输出10个整数,将最小的与第一个交换,最大的与第十个交换。
要求写三个函数:输出10个数。
进行处理。
输出10个数。
编译时没错误,但运行是程序停止,请看看,感激不尽
代码如下:
------解决方案--------------------
给你改了改。
输出10个整数,将最小的与第一个交换,最大的与第十个交换。
要求写三个函数:输出10个数。
进行处理。
输出10个数。
编译时没错误,但运行是程序停止,请看看,感激不尽
代码如下:
#include <stdio.h>
void main()
{
void input(int array[10]);
void sort(int array[10]);
void print(int array[10]);
int a[10],*p;
input(a);
p=a;
sort(p);
print(p);
}
void input(int array[10])
{
int i;
printf("please enter array[10]:");
for(i=0;i<10;i++)
scanf("%d",array[i]);
}
void sort(int array[10])
{
int i,j,min,max,k,m,temp,*b;
b=array;m=0;k=0;
for(i=1;i<10;i++)
{
min=*b;
if(min>*(b+i))
min=*(b+i);
m=i; 最小数的下标赋给m
}
for(j=1;j<10;j++)
{
max=*b;
if(max<*(b+j))
max=*(b+j);
k=j; 最大数的下标赋给j
}
if(m==9 && k==0) 第一个数最大,第十个数最小
{temp=*b;*b=*(b+9);*(b+9)=temp;}
else if(m==9 && k!=0) 第一个数最大,第十个数不是最小
{temp=*b;*b=*(b+m);*(b+m)=temp;
temp=*(b+9);*(b+9)=*(b+m);*(b+m)=temp;}
else 第一个数不是最大,第十个数不是最小
{temp=*b;*b=*(b+m);*(b+m)=temp;
temp=*(b+9);*(b+9)=*(b+k);*(b+k)=temp;}
}
void print(int array[10])
{
int *q,i;
q=array;
for(i=0;i<10;i++)
printf("%d ",q++);
printf("\n");
}
------解决方案--------------------
给你改了改。
#include "stdio.h"
#define MAXNUM 10
void input(int *arr);
void sort(int *arr);
void print(int *arr);
int main()
{
int a[10];
input(a);
sort(a);
print(a);
return 0;
}
void input(int *arr)
{
int i;
printf("please enter %d numbers", MAXNUM);
for(i = 0; i < MAXNUM; i++)
scanf("%d ",arr + i);
printf("\nfinish\n the input nummbers are:\n");
for(i = 0; i < MAXNUM; i++)
int i;
printf("please enter %d numbers\n", MAXNUM);
for(i = 0; i < MAXNUM; i++)
scanf(" %d",arr + i);
printf("\nfinish\n the input nummbers are:\n");
for(i = 0; i < MAXNUM; i++)
printf("%d ", *(arr + i));
return;
}
void sort(int *arr)
{