当先锋百科网

首页 1 2 3 4 5 6 7

1.输入一个大小为10的整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。
例子:
输入一个数组:1 5 6 2 3 4 9 1
子数组的最大值:18
解答:

#include<stdio.h>
int main()
{
    int a[10];
    int y,i,m,n,z,sum=0;
    printf("输入一个数组:");
	for(y=0;y<10;y++)
	{
		scanf("%d",&a[y]);
	}
    for(i=0;i<10;i++)
    {
        m=0;
        z=0;
        while(a[i+m]<a[i+m+1])
        {
            m++;
        }
		for(n=0;i+n<=i+m;n++)
		{
			z=z+a[i+n];
		}
        if(z>sum)
        {
            sum=z;
        }
    }
    printf("子数组最大值:%d",sum);
    return 0;
}

运行结果:
在这里插入图片描述
解题思路:
用for循环和while循环确定升序的数组的下标,再利用for循环使升序的数组数累加寄存到z,用if语句多次比较确定最大的累加数sum,输出sum。

遇到的问题:
如果用for(i=0;a[i];i++)再用while(a[i+m]<a[i+m+1])会使循环数大于10,所以a[i]换成i<10更好。

知识点:
数组的运用,条件和循环语句的运用。

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],c[10];
	int i,m,n=0;
	printf("输入数组a:");
	for(i=0;i<10;i++)
	{
		scanf("%d",&a[i]);
	}
	printf("输入数组b:");
	for(i=0;i<10;i++)
	{
		scanf("%d",&b[i]);
	}
	printf("输出交集:");
	for(i=0;i<10;i++)
	{
		for(m=0;m<10;m++)
		{
			if(a[i]==b[m])
			{
				c[n]=a[i];
				n++;
			}
		}
	}
	for(i=0;i<n;i++)
	{
		printf("%5d",c[i]);
	}
	return 0;
}

运行结果:

在这里插入图片描述
解题思路:
先利用for循环输出数组a和b,再利用两个for循环将数组a和b中的数都比较一遍,相同的寄存在数组c中,寄存一个使数组c的下标n加1,最后用for循环将数组c中的寄存的交集数输出。

遇到的问题:
无。

知识点:
数组的运用,条件和循环语句的运用。

3.自己学一个排序算法,输入一个大小为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,x,m,n;
	printf("输入:\n");
	for(i=0;i<10;i++)
	{
		scanf("%d",&a[i]);
	}
	for(m=0;m<9;m++)
	{
		for(i=0;i<9-m;i++)
		{
			if(a[i]>a[i+1])
			{
				n=a[i];
				a[i]=a[i+1];
				a[i+1]=n;
			}
		}
	}
	printf("升序:\n");
	for(i=0;i<10;i++)
	{
		printf("%d ",a[i]);
	}
	printf("\n");
	printf("降序:\n");
	for(i=9;i>=0;i--)
	{
		printf("%d ",a[i]);
	}
	return 0;
}

运行结果:
在这里插入图片描述
解题思路:
用for循环输入数组a,在用双重for循环进行9躺比较,每趟比较进行9-m次比较,再相邻两个数比较,利用n从小到大排序,最后利用for循环进行升序和降序的输出。

遇到的问题:
比较粗心,容易把大小比较符号输入错误。

知识点:
数组的运用,循环语句的综合运用。