2020-11-20

                                                        大创工联部第二次考核


        1. 输入一个大小为 10 的整型数组,数组中的一个或连续多个整数组成一个子数

组。求所有子数组的和的最大值。
例子:
输入一个数组:1 5 6 2 3 4 9 1
子数组的最大值:18

解题思路: 先用一个参数,将a【0】赋值给参数,通过循环将相邻两个数进行对比若前一个比后一个数小,则逐个加起来,当后面的数比前一个数大时将前面的数赋值给max,再进行循环,将下一个子数组与前一个max对比,从而得出最终的max。

代码如下:

#include<stdio.h>
int main()
{
  int a[10],c,max;
  c=a[0];
  max=a[0];
for(int i=0;i<10;i++)
   scanf("%d",&a[i]);
for(int i=0;i<10;i++){
   if(a[i]<a[i+1])
     c+=a[i+1];
   else
     {if(max<c)
      max=c;
      c=a[i+1];}
}
printf("%d",max);
  return 0;
}

运行结果: 在这里插入图片描述

       2. 输入大小为 10 的两个数组(没有重复),实现一个求两个数组交集的函数

例子:
数组 1:1 16 5 7 9 0 10 8 14 3
数组 2:2 4 5 6 7 8 10 12 14 16
交集 :16 5 7 10 8 14

解题思路:先定义两个数组,然后利用循环比较两个数组中的元素是否相同,如果相同就输出来。

代码如下:

#include<stdio.h>
int main()
{
 int a[10],b[10];
 printf("请输入数组一:");
  for(int i=0;i<10;i++)
    scanf("%d",&a[i]);
printf("请输入数组二:");
  for(int j=0;j<10;j++)
    scanf("%d",&b[j]);
  for(int i=0;i<10;i++)
   {for(int j=0;j<10;j++)
       if(a[i]!=b[j])
        continue;
       else
       printf("%6d",a[i]);}
  return 0;
}

运行结果:在这里插入图片描述

  1. 自己学一个排序算法,输入一个大小为 10 的数组,对数组进行升序和降序排
    列并输出。
    例子:
    大小为 10 的数组:6 7 1 5 4 3 9 1 10 15
    升序排列:1 1 3 4 5 6 7 9 10 15
    降序排列:15 10 9 7 6 5 4 3 1 1

解题思路:利用冒泡排序原理进行排序。

代码如下:

#include<stdio.h>
int main()
{
    int a[10];
    int i,k,t;
    printf("输入一个大小为10的数组:");
    for(k=0;k<10;k++)
    scanf("%d",&a[k]);
    for(i=0;i<9;i++)
    for(k=0;k<9-i;k++)
     if(a[k]<a[k+1])
       {t=a[k+1];
        a[k+1]=a[k];
        a[k]=t;}
        printf("降序排列:");
    for(k=0;k<10;k++)
        printf("%d ",a[k]);
        printf("\n");
        printf("升序排列:");
    for(k=9;k>=0;k--)
        printf("%d ",a[k]);
    return 0;
}

运行结果:在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值