鱼C论坛

 找回密码
 立即注册
查看: 2785|回复: 3

如何获得用户输入的数组

[复制链接]
发表于 2022-4-12 21:35:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 孜然爱爱 于 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,1]
        //取第一个数组第1个元素与第二个数组第0个元素组成一个元素
        // [1,1]

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


  1. import java.util.*;
  2. public class Test2 {
  3.     public static void main(String[] args){
  4.         Scanner sc = new Scanner(System.in);
  5.         String[] str1 = sc.nextLine().split("\\s+");
  6.         String[] str2 = sc.nextLine().split("\\s+");
  7.         int n = sc.nextInt();
  8.         ArrayList<Integer> arr = new ArrayList();
  9.         for(int i=1; i<str1.length; i++){
  10.             for(int j=1; j<str2.length; j++){
  11.                 arr.add(Integer.parseInt(str1[i])+Integer.parseInt(str2[j]));
  12.             }
  13.         }
  14.         System.out.println(arr);
  15.         Collections.sort(arr);
  16.         int sum = 0;
  17.         for(int i =0; i<n;i++){
  18.             sum+=arr.get(i);
  19.         }
  20.         System.out.println(sum);

  21.     }
  22. }
复制代码


小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-4-13 15:17:20 From FishC Mobile | 显示全部楼层
#include <stdio.h>

int main()
{
    int a=0,b=0;
    scanf("%d",&a);
    int array1[a];
   
    array1[0]=a;
    for(int i=1;i<array1[0];i++)
    {
        scanf("%d",&array1[i]);
    }
   
    scanf("%d",&b);
    int array2[b];
    array2[0]=b;
    for(int i=1;i<array2[0];i++)
    {
         scanf("%d",&array2[i]);
    }
   
    int arr3[a+b];
   
    int n = 0;
    scanf("%d",&n);
   
    int k=0;
    for(int i=1;i<array1[0];i++)
    {
        for(int j=1;j<array2[0];j++)
        {
            arr3[k]=array1[i];
            k++;
            arr3[k]=array2[j];
            k++;
        }
    }
   
    printf("[");
    for(int l=0;l<a+b;l++)
    {
        printf("%d",arr3[l]);
        if(l+1<a+b)
        {
            printf(",");
        }
    }
    printf("]\n");
   
    int sum = 0;
    for(int i=0;i<n;i++)
    {
        sum+=arr3[i];
    }
    printf("%d\n",sum);
   
    return 0;
}
这个肯定和你的题目的结果不同,这是我仿着java那个代码改的,有些问题。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-13 19:43:40 | 显示全部楼层
本帖最后由 jhq999 于 2022-4-13 22:36 编辑

那个大神整个算法出来

没调试,大概率有bug
  1. scanf("%d %d",&n,&m);
  2. int array[2][n]={0};
  3. int sum[n*n+1]={0};
  4. for(i=0;i<2*n;i++)
  5. {
  6.         scanf("%d",((int*)array)+i);
  7. }
  8. for(i=0;i<n;i++)
  9. {
  10.         for(j=0;j<n;j++)sum[i*n+j]=array[0][i]+array[1][j];
  11. }
  12. for(i=0;i<m;i++)
  13. {
  14.         for(j=n*n-1;j>i;j--)
  15.         {
  16.                 if(sum[j]<sum[j-1])
  17.                 {
  18.                         tmp=sum[j-1];sum[j-1]=sum[j];sum[j]=tmp;
  19.                 }
  20.         }
  21.         sum[n*n]+=sum[i];
  22. }
  23. printf("%d",sum[n*n]);
复制代码





小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-14 22:39:30 | 显示全部楼层
这个题目说的是啥?
char array1[10],array2[10];
for(int i=0;i<10;i++)
   scanf("%d",&array1[i]);//输入到array1
for(int i=0;i<10;i++)
   scanf("%d",&array2[i]); //输入到array2
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-24 15:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表