C语言实现将一个数组中的值逆序存放并输出

#include<stdio.h>
void fun(int arr[],int n);
#define N 40
int main()
{
int arr[40],n,i;
printf("The total numbers are:");
scanf("%d",&n);
printf("Please input the numbers:");
for(i=0;i<n;i++)
{
scanf("%d",&arr[i]);
getchar();
}
void fun(int arr[],int n);
//printf("%d",arr[0]);
printf("The sorted numbers are:");
for(i=0;i<n;i++)
{
printf("%d ",arr[i]);
}
return 0;
}
void fun(int arr[],int n)
{
int x,temp,m=n-1;
if(n%2==0)
{
for(x=0;x<=(m-1)/2;x++)
{
temp=arr[m-x];
arr[m-x]=arr[x];
arr[x]=temp;
}
}
else
{
for(x=0;x<=(m-2)/2;x++)
{
temp=arr[m-x];
arr[m-x]=arr[n];
arr[x]=temp;
}
}
}
可以帮我看一哪里错了吗?程序是可以运行的 但是并没有实现逆序
谢谢大神爸爸!

第1个回答  2016-05-13
你的基础上简单改了一下
#include<stdio.h>
void fun(int arr[],int n);
#define N 40
int main()
{
int arr[40],n,i;
printf("The total numbers are:");
scanf("%d",&n);
printf("Please input the numbers:");
for(i=0;i<n;i++)
{
scanf("%d",&arr[i]);
//getchar();
}

fun(arr,n);
//printf("%d",arr[0]);
printf("The sorted numbers are:");
for(i=0;i<n;i++)
{
printf("%d ",arr[i]);
}
return 0;
}
void fun(int arr[],int n)
{
int x,temp;
for(x=0;x<=(n-1)/2;x++)
{
temp=arr[n-1-x];
arr[n-1-x]=arr[x];
arr[x]=temp;
}
}
第2个回答  推荐于2017-12-15

那是因为你没有调用fun函数,输出之前调用一次就好了,你的主函数里面只声明了,没调用

#include<stdio.h>
void fun(int arr[],int n);
#define N 40
int main()
{
int arr[40],n,i;
printf("The total numbers are:");
scanf("%d",&n);
    printf("Please input the numbers:");
for(i=0;i<n;i++)
{
scanf("%d",&arr[i]);
getchar();
}
void fun(int arr[],int n);
//printf("%d",arr[0]);
fun(arr, n);////////////////////
printf("The sorted numbers are:");
for(i=0;i<n;i++)
{
printf("%d ",arr[i]);
}
return 0;
}
void fun(int arr[],int n)
{
int x,temp,m=n-1;
if(n%2==0)
{
for(x=0;x<=(m-1)/2;x++)
{
temp=arr[m-x];
arr[m-x]=arr[x];
arr[x]=temp;
}
}
else
{
for(x=0;x<=(m-2)/2;x++)
{
temp=arr[m-x];
arr[m-x]=arr[n];
arr[x]=temp;
}
}
}

追问

请问在你加的那一行语句上面我写的“void fun(int arr[],int n);"这样不算是函数的调用吗?
因为我学的比较差也不是很懂。。。。

追答

那个是函数的声明,不是调用,函数的声明和定义的头部是一样的,只不过没有函数体的内容。调用的时候,传入约定的参数就可以了。

追问

好的谢谢!!

本回答被提问者采纳
相似回答