| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
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");
 
 - }
 
  复制代码 
 
 
 |   
- 
打印结果如下 
 
 
 
 
 
 
 
 |