复杂类型作函数参数之逆序输出

时间: 1ms        内存:128M

描述:

将数组a中的n个整数按逆序输出。

#include”stdio.h”
void  inv(int  *, int);                     /* 反序原始数据 */
void  out(int  *, int);                    /* 输出原始数据 */
int main( )
{
    int  a[100];
    int  n,i;
    scanf(“%d”,&n);
    for( i = 0 ; i < n ; i++ )
    {
        scanf(“%d”,&a[i]);
    }
    printf(“Output primary data: “) ;        /* 输出原始数据 */
    out( a, n);
    inv(a, n);
    printf(“Output the inverse data: “);       /* 输出反序后的数据 */
    out(a, n);
}

//只提交你编写的函数代码

输入:

第一行输入数字n表示要输入多少个数字,第二行输入n个数字。

输出:

输出原先的数组顺序,再输出逆序后的数组顺序,每个数字占用4个字符。

示例输入:

3
1 2 3

示例输出:

Output primary data:    1   2   3
Output the inverse data:    3   2   1

提示:

参考答案(内存最优[1092]):


#include"stdio.h"
void  inv(int  *, int);                 	/* 函数原型声明 */
void  out(int  *, int);                 	/* 函数原型声明 */
int main( )
{
    int  a[100];
    int  n,i;
    scanf("%d",&n);
    for( i = 0 ; i < n ; i++ )
    {
        scanf("%d",&a[i]);
    }
    printf("Output primary data: ") ;    	/* 输出原始数据 */
    out( a, n);
    inv(a, n);
    printf("Output the inverse data: ");   	/* 输出反序后的数据 */
    out(a, n);
}
void out(int a[],int n)
{
    int i;
    for(i=0;i<n;i++)
        printf("%4d",a[i]);
        printf("\n");
}
void inv(int a[],int n)
{
    int i,t;
    int left=0,right=n-1;
    while(left<right)
    {
        t=a[left];
        a[left]=a[right];
        a[right]=t;
        left++;
        right--;
    }
}

参考答案(时间最优[0]):


#include"stdio.h"
void  inv(int  *, int);                 	/* 函数原型声明 */
void  out(int  *, int);                 	/* 函数原型声明 */
int main( )
{
    int  a[100];
    int  n,i;
    scanf("%d",&n);
    for( i = 0 ; i < n ; i++ )
    {
        scanf("%d",&a[i]);
    }
    printf("Output primary data:") ;    	/* 输出原始数据 */
    out( a, n);
    inv(a, n);
    printf("Output the inverse data: ");   	/* 输出反序后的数据 */
    out(a, n);
}
void out ( int s[], int n )
{
    int i;
    for ( i = 0; i < n; i++ )
        printf("%4d", s[i]);
    printf("\n");
}
void inv (int *a, int n)
{
    int i, j, t;
    i = 0;									/* i是第一个元素的下标 */
    j = n - 1;                     	 		/* j是最后一个元素的下标 */
    while(i < j)
    {
        t = a[i];                   		/* 下标为i和j的两个元素中的值对调 */
        a[i] = a[j];
        a[j] = t;
        i++;
        j--;                   				/* i向后移一个位置,j向前移一个位置 */
    }
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。