大创工联部第二次考核
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;
}
运行结果:
- 自己学一个排序算法,输入一个大小为 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;
}
运行结果: