鱼C论坛

 找回密码
 立即注册
查看: 2470|回复: 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 ,满足要求最小
————————————————

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[i])+Integer.parseInt(str2[j]));
            }
        }
        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);
 
    }
}

想知道小甲鱼最近在做啥?请访问 -> 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那个代码改的,有些问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

那个大神整个算法出来

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




想知道小甲鱼最近在做啥?请访问 -> 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-7 08:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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