1. 算法设计:在数组中找到K元素的位置,并输出,再找出最大值和次大值
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int searchsite(int a[],int n,int k)
{
int i=0;
while(i<n&&a[i]!=k)
i++;
if(i<n)
return i+1;
else
return 0;
}
void searchmoremax(int a[],int n)
{
int i=0,x,y;
if(a[0]>a[1])
{
x=a[0];
y=a[1];
}
else
{
x=a[1];
y=a[0];
}
for(i=2;i<=n;i++)
{
if(x<a[i])
{
y=x;
x=a[i];
}
else if(y<a[i])
{
y=a[i];
}
}
printf("\n输出最大值为%d,次大值%d\n",x,y);
}
int main() // 主函数
{
int array[20];
int i=0,n,val,k;
srand ( (unsigned)time (NULL) );
printf("你想要数组中有多少个元素啊 : ");
scanf("%d",&n);
printf("成功,随机产生%d个数: ",n);
for(i=0;i<n;i++)
{
array[i]=rand()%100;
printf("%d ",array[i]);
}
printf("\n请你输入要查找的值: ");
scanf("%d",&k);
val=searchsite(array,n,k);
if(val==0)
{
printf("对不起,你输入的值不存在\n");
}
else
{
printf("你输入元素的%d是第%d的位置",k,val);
}
searchmoremax(array,n);
return 0;
}
2.将数组中的奇偶数分开
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
void separatearray(int a[],int n)
{
int i,j,t;
i=0;
j=n-1;
while(1)
{
if(a[i] % 2 == 0 && a[j] % 2 != 0)
{
t = a[i];
a[i] = a[j];
a[j] = t;
i++;
j--;
}
else if(a[i] % 2 == 0 && a[j] % 2 == 0)
{
j--;
}
else if(a[i] % 2 != 0 && a[j] % 2 != 0)
{
i++;
}
else
{
i++;
j--;
}
if(i >= j)
break;
}
}
int main() // 主函数
{
int array[20];
int i=0,n;
srand ( (unsigned)time (NULL) );
printf("你想要数组中有多少个元素啊 : ");
scanf("%d",&n);
printf("成功,随机产生%d个数: ",n);
for(i=0;i<n;i++)
{
array[i]=rand()%100; //产生100以内的数
printf("%d ",array[i]);
}
separatearray(array,n);
printf("\n输出奇偶分开的数组 :");
for(i=0;i<n;i++)
{
printf("%3d",array[i]);
}
printf("\n");
return 0;
}