复杂类型作函数参数之逆序输出
时间: 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向前移一个位置 */
}
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。