求大佬解决c语言问题啊
解题思路:
输入N个数给数组,再将数组传递给自定义函数进行处理。
在自定义函数中找出在数组中的最大值和最小值的下标,并分别保存在max和min变量中。
根据最大值和最小值所保存的数组元素下标,分别与数组的尾元素和首元素进行对换。
回到主函数,声明两个变量max和min分别保存数组的最大值和最小值。
输出对换后的数组、最大值和最小值。
注意事项:
你提出的问题并没有说明数据的类型,这里使用了常用的int类型,你可以进行修改。
数组的长度默认为10,如果要修改,可以把#define N 10中的10修改成你要的数字即可。
测试代码:
#include <stdio.h>
#define N 10 // 数组的长度
void my_func(int a[])
{
int max = 0, min = 0; // 最大值和最小值的初始下标位置
for (int i = 1; i < N; i++)
{
if (a[i] > a[max]) max = i; // 保存最大值的下标
if (a[i] < a[min]) min = i; // 保存最小值的下标
}
int t = a[N - 1]; a[N - 1] = a[max]; a[max] = t; // 最大值与尾元素对换
t = a[0]; a[0] = a[min]; a[min] = t; // 最小值与首元素对换
}
int main()
{
int a[N];
for (int i = 0; i < N; i++) scanf("%d", &a[i]); // 输入N个数
my_func(a);
int max = a[N - 1], min = a[0]; // 保存最大值和最小值
for (int i = 0; i < N; i++) printf("%d ", a[i]); // 输出对换后的数组
printf("\n%d %d", max, min); // 输出最大值和最小值
return 0;
}
2020-03-12
void func(char su[],char length,char *max,char *min)
{
char i;
char temp;
char maxnum,minnum;
*max=su[0];
*min=su[0];
for(i = 0;i < length;i++)
{
if(*max<su[i])
{
*max=su[i];
maxnum=i;
}
if(*min>su[i])
{
*min=su[i];
minnum=i;
}
}
temp=su[length-1];
su[length-1]=*max;
su[maxnum]=temp;
temp=su[0];
su[0]=*min;
su[minnum]=temp;
}
void main()
{
char a[6]={5,6,8,3,2,7};
char max,min;
char i;
func(a,sizeof(a),&max,&min);
printf("max=%d,min=%d\n",max,min);
for(i=0;i<6;i++)
{
printf("%d ",a[i]);
}
}