对C语言作业中的一道较难题的思考记录

简介: 刚开始非常害怕,为什么4个变量就可以完成要求,后来去凑答案可以运行,最后又去寻求大佬们的帮助,终于想明白了这个问题。

1.jpg刚开始非常害怕,为什么4个变量就可以完成要求,后来去凑答案可以运行,最后又去寻求大佬们的帮助,终于想明白了这个问题。

#include <stdio.h>

int main() {

int a[10] = { 0 }, max_p = 0, min_p = 0;

printf("请输入10个数字");

for (int i = 0; i < 10; i++) { // 输入元素

scanf("%d", &a[i]);

}

int max = a[0];

int min = a[0];

for (int i = 0; i < 10; i++) { // 找出最大值及其位置

if (a[i] >= max) {

max = a[i];

max_p = i;

}

}

if (max_p != 0) {

int tmp = a[0];

a[0] = max;

a[max_p] = tmp;

}

for (int i = 0; i < 10; i++) { // 找出最小值及其位置

if (a[i] <= min) {

min = a[i];

min_p = i;

}

}

if (min_p != 0) {

int tmp = a[9];

a[9] = min;

a[min_p] = tmp;

}

for (int i = 0; i < 10; i++) {

printf("%d", a[i]);

printf("\t");//有更简洁的表达,但是其实空格也可以

}

printf("\n");

return 0;

}

更优解:

#include <stdio.h>

int main()

{

   int d1, d2, x1, x2, temp1, temp2;

   int a[10] = {0};

   for (int i = 0; i < 10; i++)

   {

       scanf("%d", &a[i]);

   }

   d1 = a[0];

   x1 = a[0];

   d2 = 0;

   x2 = 0;

   for (int i = 0; i < 10; i++)

   {

       if (a[i] > d1)

       {

           d1 = a[i];

           d2 = i;

       }

       if (a[i] < x1)

       {

           x1 = a[i];

           x2 = i;

       }

   }

   temp1 = a[0];

   temp2 = a[9];

   a[0] = d1;

   a[d2] = temp1;

   a[9] = x1;

   a[x2] = temp2;

   for (int i = 0; i < 10; i++)

   {

       printf("%d ", a[i]);

   }

   printf("\n");

   return 0;

}

大佬的解法:

#include <stdio.h>

int main()

{

   int d1, d2, x1, x2, temp1, temp2;

   int a[10] = {0};

   for (int i = 0; i < 10; i++)

   {

       scanf("%d", &a[i]);

   }

   d1 = a[0];

   x1 = a[0];

   d2 = 0;

   x2 = 0;

   for (int i = 0; i < 10; i++)

   {

       if (a[i] > d1)

       {

           d1 = a[i];

           d2 = i;

       }

       if (a[i] < x1)

       {

           x1 = a[i];

           x2 = i;

       }

   }

   temp1 = a[0];

   temp2 = a[9];

   a[0] = d1;

   a[d2] = temp1;

   a[9] = x1;

   a[x2] = temp2;

   for (int i = 0; i < 10; i++)

   {

       printf("%d ", a[i]);

   }

   printf("\n");

   return 0;

}

目录
相关文章
|
6月前
|
C语言
[日常]C语言作业详解12_17(题型对应知识点)
[日常]C语言作业详解12_17(题型对应知识点)
55 0
|
6月前
|
算法 程序员 编译器
C语言初阶③(函数)知识点+编程作业(递归模拟strlen,pow)
C语言初阶③(函数)知识点+编程作业(递归模拟strlen,pow)
49 0
|
6月前
|
存储 Linux C语言
C语言初阶⑥(操作符详解)编程作业(算数转换)(下)
C语言初阶⑥(操作符详解)编程作业(算数转换)
36 1
|
6月前
|
存储 C语言
C语言初阶④(数组)知识点+编程作业(三子棋,冒泡排序)(下)
C语言初阶④(数组)知识点+编程作业(三子棋,冒泡排序)
38 1
|
6月前
|
存储 C语言 索引
C语言初阶⑥(操作符详解)编程作业(算数转换)(上)
C语言初阶⑥(操作符详解)编程作业(算数转换)
45 0
|
6月前
|
存储 C语言
C语言初阶④(数组)知识点+编程作业(三子棋,冒泡排序)(上)
C语言初阶④(数组)知识点+编程作业(三子棋,冒泡排序)
38 0
|
6月前
|
存储 C语言
C语言进阶---------作业复习
C语言进阶---------作业复习
|
算法 Serverless C语言
C语言假期作业 DAY 08
C语言假期作业 DAY 08
|
6月前
|
机器学习/深度学习 C语言
C语言实训作业(任务三)
C语言实训作业(任务三)
66 1
|
6月前
|
C语言
C语言实训作业(任务二)
C语言实训作业(任务二)
156 0