1.循环输入n个元素,计算最大差值,最小和,最大和 (不允许使用排序)
最大差:最大值-最小值
最小和:最小值+第二小值
最大和:最大值+第二大值
2.循环输入n个元素,交换数组中最大值和最小值
3.循环输入n个元素,输入查找元素key,
如果key在数组中出现1次,则输出对应的位置
如果key在数组中出现0次,则提示不存在
如果key在数组中出现多次,则输出出现的次数
4.循环输入n个元素,输入flag,
如果flag==1,则实现冒泡排序升序并输出
如果flag==0,则实现简单选择排序降序并输出
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int n,flag;
printf("请输入数组的长度:");
scanf("%d",&n);
int a[n];
int i,j;
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
printf("请输入你想要的排序方法,冒泡排序为1,简单排序为0:");
scanf("%d",&flag);
if(flag==1)
{
for(i=1;i<n;i++)
{
for(j=0;j<n-i;j++)
{
if(a[j]>a[j+1])
{
int t=a[j];a[j]=a[j+1];a[j+1]=t;
}
}
}
printf("数组进行冒泡排序后为:\n");
for(i=0;i<n;i++)
{
printf("%d\n",a[i]);
}
putchar(10);
}
else if(flag==0)
{
for(i=0;i<n;i++)
{
int min=i;
for(j=i+1;j<n;j++)
{
if(a[min]<a[j])
min=j;
}
if(min!=i)
{
int m=a[min];
a[min]=a[i];
a[i]=m;
}
}
printf("数组进行简单排序后:\n");
for(i=0;i<n;i++)
{
printf("%d\n",a[i]);
}
putchar(10);
}
else
{
printf("如果输出不为0也不为1 就不进行排序\n");
}
return 0;
}
5.循环输入数组元素,实现数组元素逆置
eg:int arr[]={11,22,33,44}
逆置后的结果是
44 44 33 22 11
6.循环输入n个数组元素,输入key,请删除所有和key相等的元素
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int n,i;
printf("请输入你想要输入的数组长度:");
scanf("%d",&n);
int a[n];
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
int k,j;
printf("请输入你想要删除的元素:\nkey=");
scanf("%d",&k);
for(i=0;i<n;i++)
{
if(k==a[i])
{
for(j=i;j<n-1;j++)
{
a[j]=a[j+1];
}
a[n-1]=0;
n=n-1; i--;
}
}
printf("删除%d之后的数组为:",k);
for(i=0;i<n;i++)
{
printf("%d ",a[i]);
}
putchar(10);
return 0;
}
7.循环输入n个数组元素,输入变量k的值,将一个一维数组循环右移k位
eg: k=2
int arr[]={11,22,33,44,55}
移动的结果是:
44 55 11 22 33
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int n,m,k;
printf("请输入你的数组长度:");
scanf("%d",&n);
int a[n];
int b[n];
int i,j;
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
b[i]=a[i];
}
printf("请输入你想要移动的位数:\nk=");
scanf("%d",&k);
for(j=0;j<k;j++)
{
for(i=0;i<n;i++)
{
m=(i+1)%n;
a[m]=b[i];
}
for(i=0;i<n;i++) b[i]=a[i];
}
printf("移动了%d位之后的数组排列顺序为:",k);
for(i=0;i<n;i++)
{
printf("%d ",a[i]);
}
putchar(10);
return 0;
}
思维导图