山科大OJ-Problem 2041: 编写函数:数组的操作 之一(Append Code)

Problem F: 编写函数:数组的操作 之一(Append Code)

Time Limit: 1 Sec   Memory Limit: 128 MB
Submit: 1928   Solved: 855
[ Submit][ Status][ Web Board]

Description

给出两个不超过N个元素的数组,将它们元素相加之和放入第三个数组中。

-----------------------------------------------------------------------------

结合“Append Code”中的代码,编写以下函数:

原型:int add_array(int arr[], int a[], int m, int b[], int n);

功能:把a[]的元素和b[]的元素按下标对应相加,放入arr[]里,其中m、n是数组a[]、b[]的长度,a[]或b[]中较长的数组多出来的元素视作加0,返回值是较长的数组的元素个数。

对于这个函数来说,默认m和n都不超过arr[]、a[]、b[]的实际存储空间。

Input

有M(M<50)组测试样例。每组样例包含两个数组,每个数组以一个非负整数N(N<=1000)开始,后接N个整数。

Output

每组测试样例的两个数组对应元素相加,元素多的那个数组视作加0,得到一个新的数组,并输出在一行,元素之间用一个空格分开,行尾不要有多余的空格。

Sample Input

3
5 1 2 3 4 5
4 -1 -2 -3 -4
4 1 2 3 4
5 -1 -2 -3 -4 -5
5 1 2 3 4 5
5 -1 -2 -3 -4 -5

Sample Output

0 0 0 0 5
0 0 0 0 -5
0 0 0 0 0

HINT

这道题对我这种小菜鸡来说有够骚气的。。。在实验的时候完全没转弯直接a[]+b[]了。。。最后伤心的没做出来。。

Append Code

[ Submit][ Status][ Web Board]
#include<stdio.h>
#include<string.h>
int add_array(int arr[], int a[], int m, int b[], int n)
{
    int len;
    if(m>n)
        len=m;
    else
        len=n;
    for(int i=0;i<len;i++)
    {
        arr[i]=0;
    }
    for(int i=0;i<m;i++)
    {
        arr[i]+=a[i];
    }
    for(int i=0;i<n;i++)
    {
        arr[i]+=b[i];
    }
    return len;
}
int get_array(int a[])
{
    int n, i;
    scanf("%d", &n);
    for(i = 0; i < n; i++)
        scanf("%d", &a[i]);
    return n;
}

int put_array(int a[], int n)
{
    int i;
    if(n > 0)
        printf("%d", a[0]);
    for(i = 1; i < n; i++)
        printf(" %d", a[i]);
    printf("\n");
    return 0;
}

int main()
{
    int cases;
    int m, n, k,arr[1000], ar[1000], a[1000];
    scanf("%d", &cases);
    while(cases--)
    {
        m = get_array(a);
        n = get_array(ar);
        k = add_array(arr, ar, n, a, m);
        put_array(arr, k);
    }
    return 0;
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值