孜然爱爱 发表于 2022-4-12 21:35:46

如何获得用户输入的数组

本帖最后由 孜然爱爱 于 2022-4-12 21:52 编辑

题目答案给的代码是Java的,我想用C语言来写出来,但是苦于不知道怎么用c实现数组的输入,即 如何将用户输入的两个任意的等长数组存到两个数组中,请各位兄弟帮忙看一下题目,帮忙解答一下:


        给定两个整数数组:array1 array2,数组元素按升序排列
      假设从arr1 arr2中分别取出一个元素,可构成一对元素
      现在需要取出k对元素,并对取出的所有元素求和, 计算和的最小值
      注意:两对元素对应arr1 arr2的下标是相同的视为同一对元素

      输入描述:
      输入两行数组arr1 arr2
      每行首个数字为数组大小size   0<size<=100
      arr1,2中的每个元素   0< <1000
      接下来一行正整数k   0<k<=arr1.size * arr2.size

      输出描述:
      满足要求的最小值

      例子:
      //输入
      //   3 1 1 2
      //   3 1 2 3
      //   2

      //输出
      //   4

      //说明:用例中需要取两个元素,
      // 取第一个数组第0个元素与第二个数组第0个元素组成一个元素
      //
      //取第一个数组第1个元素与第二个数组第0个元素组成一个元素
      //

      //求和为1+1+1+1=4 ,满足要求最小
————————————————


import java.util.*;
public class Test2 {
    public static void main(String[] args){
      Scanner sc = new Scanner(System.in);
      String[] str1 = sc.nextLine().split("\\s+");
      String[] str2 = sc.nextLine().split("\\s+");
      int n = sc.nextInt();
      ArrayList<Integer> arr = new ArrayList();
      for(int i=1; i<str1.length; i++){
            for(int j=1; j<str2.length; j++){
                arr.add(Integer.parseInt(str1)+Integer.parseInt(str2));
            }
      }
      System.out.println(arr);
      Collections.sort(arr);
      int sum = 0;
      for(int i =0; i<n;i++){
            sum+=arr.get(i);
      }
      System.out.println(sum);

    }
}

zzxhh628 发表于 2022-4-13 15:17:20

#include <stdio.h>

int main()
{
    int a=0,b=0;
    scanf("%d",&a);
    int array1;
   
    array1=a;
    for(int i=1;i<array1;i++)
    {
      scanf("%d",&array1);
    }
   
    scanf("%d",&b);
    int array2;
    array2=b;
    for(int i=1;i<array2;i++)
    {
         scanf("%d",&array2);
    }
   
    int arr3;
   
    int n = 0;
    scanf("%d",&n);
   
    int k=0;
    for(int i=1;i<array1;i++)
    {
      for(int j=1;j<array2;j++)
      {
            arr3=array1;
            k++;
            arr3=array2;
            k++;
      }
    }
   
    printf("[");
    for(int l=0;l<a+b;l++)
    {
      printf("%d",arr3);
      if(l+1<a+b)
      {
            printf(",");
      }
    }
    printf("]\n");
   
    int sum = 0;
    for(int i=0;i<n;i++)
    {
      sum+=arr3;
    }
    printf("%d\n",sum);
   
    return 0;
}
这个肯定和你的题目的结果不同,这是我仿着java那个代码改的,有些问题。

jhq999 发表于 2022-4-13 19:43:40

本帖最后由 jhq999 于 2022-4-13 22:36 编辑

那个大神整个算法出来

没调试,大概率有bug
scanf("%d %d",&n,&m);
int array={0};
int sum={0};
for(i=0;i<2*n;i++)
{
        scanf("%d",((int*)array)+i);
}
for(i=0;i<n;i++)
{
        for(j=0;j<n;j++)sum=array+array;
}
for(i=0;i<m;i++)
{
        for(j=n*n-1;j>i;j--)
        {
                if(sum<sum)
                {
                        tmp=sum;sum=sum;sum=tmp;
                }
        }
        sum+=sum;
}
printf("%d",sum);




yzzc 发表于 2022-4-14 22:39:30

这个题目说的是啥?
char array1,array2;
for(int i=0;i<10;i++)
   scanf("%d",&array1);//输入到array1
for(int i=0;i<10;i++)
   scanf("%d",&array2); //输入到array2
页: [1]
查看完整版本: 如何获得用户输入的数组