1.输入,数组,将其排序。例如:a[]={2,5,1,11,6},输出a[]={1,2,5,6,11}
#include <stdio.h>
int main()
{
int n,a[10];
printf("请输入数组元素的个数:");
scanf("%d",&n);
printf("请输入数组各个元素:");
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
for(int i=0;i<n;i++)
{
int temp=0;
for(int j=n-1;j>i;j--)
{
if(a[j]<a[j-1])
{
temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;
}
}
}
printf("输出的数组:");
for(int i=0;i<n;i++)
printf("%d ",a[i]);
return 0;
}
运行结果如下:
2.将两个数组合并,并排序
例如a1[]={1,3,5,7,11},a2[]={2,4,6,8},合并后a[]={1,2,3,4,5,6,7,8,11}
#include <stdio.h>
int main()
{
int n,m,a[20],b[30];
printf("请输入数组a元素个数:");
scanf("%d",&n);
printf("请输入数组a各个元素:");
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
printf("请输入数组b元素个数:");
scanf("%d",&m);
printf("请输入数组b各个元素:");
for(int i=0;i<m;i++)
scanf("%d",&b[i]);
int total =n+m;
int c[total];
for(int i=0;i<total;i++)
{
if(i<n)
c[i]=a[i];
else c[i]=b[i-n];
}
for(int i=0;i<total;i++)
for(int j=total-1;j>i;j--)
if(c[j]<c[j-1])
{
int temp=c[j];
c[j]=c[j-1];
c[j-1]=temp;
}
printf("合并后数组为:");
for(int i=0;i<total;i++)
{
printf("%d ",c[i]);
}
return 0;
}
运行结果如下:
大家也可以试试与之前发布的数组去重相结合。
3.给定一个值target,求数组两个位置的数,加起来的值等于它。
例如:target=22,数组a[]={10,8,27,12,2}
输出:相加为target元素的地址为site1=0,site2=3。
#include <stdio.h>
int main()
{
int n,a[10];
printf("请输入数组元素个数:");
scanf("%d",&n);
printf("请输入数组各个元素:");
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
int target;
printf("请输入目标数大小:");
scanf("%d",&target);
for(int i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
if(a[i]+a[j]==target)
printf("相加为目标元素的地址为:site1 = %d site2 = %d",i,j);
}
}
return 0;
}
运行结果如下: