|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组
错误代码如下
#include<stdio.h>
#define x 5
/*
函数功能:找到数组中的目标元素
函数入口:整形数组与整形变量
函数返回值:无
*/
void FindandExchange(int a[], int n)
{
int max = a[0];
int min = a[0];
int i, t = 0;
//找到最数组中最大的元素,并与第一个元素交换
for (i = 0; i < n; i++)
{
if (max < a[i])
{
t = max;//保留原来max的数值
max = a[i];//将大的数值赋给max
a[i] = t;
}
}
//找到最数组中最小的元素,并与最后一个元素交换
for (i = 0; i < n; i++)
{
if (min > a[i])
{
t = min;
min = a[i];
a[i] = t;
}
}
}
/*
函数功能:输入数组和该数组中元素的个数
函数入口:整形数组,整形变量
函数返回值:无
*/
void input(int a [],int n)
{
int i;
for ( i = 0; i < n; i++)
{
scanf_s("%d", &a[i]);
}
}//
void output(int a[], int n)
{
int i;
for (i = 0; i < n; i++)
{
printf("%d\n", a[i]);
}
}
int main(void)
{
int score[x];
printf("请输入\n");
input(score, x);
FindandExchange(score,x);
printf("经过处理后的结果如下\n");
output(score, x);
return 0;
}
发生问题的区域:FindandExchange()函数错误
数组中的最大元素与最小元素都被赋值成原数组中的第一个元素
想知道我写的代码如何更改
- #include<stdio.h>
- #define n 10
- void main() // main() 函数才是程序的入口,其他的函数都不是
- {
- int i, j = 0, k = 0, max, min, temp, a[n];
-
- for (i = 0;i < n;i++)
- scanf("%d", &a[i]);
- max = a[0];
- //找到最数组中最大的元素,并与第一个元素交换
- for (i = 1; i < n; i++)
- {
- if (max < a[i])
- {
- max = a[i];
- j = i;
- }
- }
- temp = a[0]; // 将最大值与第1个元素交换位置
- a[0] = a[j];
- a[j] = temp;
- min = a[n - 1]; // 在最大值的位置确定后,设最后一个元素为最小值
- //找到最数组中最小的元素,并与最后一个元素交换
- for (i = 0; i < n - 1; i++)
- {
- if (min > a[i])
- {
- min = a[i];
- k = i;
- }
- }
- temp = a[n - 1]; // 将最大值与第1个元素交换位置
- a[n - 1] = a[k];
- a[k] = temp;
- for (i = 0;i < n;i++) // 输出数组
- printf("%d ", a[i]);
- printf("\n");
- }
复制代码
|
-
打印结果如下
|