【C语言】中,输入一个数组,用for循环实现将输入的n个数字按照从大到小的顺序输出。【通俗简单易懂】

您所在的位置:网站首页 不用循环给数组赋值 【C语言】中,输入一个数组,用for循环实现将输入的n个数字按照从大到小的顺序输出。【通俗简单易懂】

【C语言】中,输入一个数组,用for循环实现将输入的n个数字按照从大到小的顺序输出。【通俗简单易懂】

#【C语言】中,输入一个数组,用for循环实现将输入的n个数字按照从大到小的顺序输出。【通俗简单易懂】| 来源: 网络整理| 查看: 265

本篇文章中,我们将讲述在C语言中,输入一个数组,如何用for循环实现将输入的n个数字按照从大到小输出。

一.定义数组并初始化

首先,我们定义一个整形的数组并将其初始化。输入n,来决定数组中整数的个数。

然后用for循环来输入这个数组中的各个数字。

#define _CRT_SECURE_NO_WARNINGS 1 #include /* 输入一个数组 按照从大到小的顺序将其输出 */ int main() { int arr[] = { 0 }; int n = 0; scanf("%d", &n); //输入n个整数 int i = 0; for (i = 0; i < n; i++) { scanf("%d", &arr[i]); } 二.排序

接下来,就是对这个数组中的数字进行比较排序了。

我们先来看代码。

//将这n个数按从大到小排序 for (i = 0; i < n; i++) { int temp = 0; //创建temp变量用于存储临时值 temp = arr[i]; /*把arr[i]也就是arr[0]的值赋给temp,避免数组中有负数而产生不必要的错误*/ int j = 0; //j表示每次循环开始时arr的下标 /* 下面的for循环中,将i赋值给j, 就避免了前面已经排序好的数字再参与到后面的循环(排序)中去。*/ for (j = i; j < n; j++) { if (temp < arr[j]) { //如果数组里还有比temp更大的值,那么将它的值和temp互换 temp = arr[j]; arr[j] = arr[i]; arr[i] = temp; } } }

第一次循环时,原数组中arr[0]的值赋给了temp,因此,我们可以没有后顾之忧地在第二个for循环里,将我们找到的数组里的最大值赋给arr[0],再将temp的值赋给原数组中最大的数的位置。

第一次循环结束后,进入第二次循环时,arr[0]这个地址中存放的就是原先数组的最大值,它就不会再参与接下来的循环了。第二次循环结束后,arr[1]的位置存放第二大的数字,以此类推,就实现了我们将数组中的数从大到小排序的目的。

三.输出

最后,我们利用一个简单的for循环,就能将排序之后的数组输出了

//输出 for (i = 0; i < n; i++) { printf("%d ", arr[i]); } return 0; }

四.运行结果

我们来看程序运行的结果。5是我们输入的n。接下来的五个数字就是我们输入的数字。

最后一行就是经过从大到小排序之后的数字。

可以看出,输入负数时,程序运行结果仍然正确。

五.完整代码 int main() { int arr[] = { 0 }; int n = 0; scanf("%d", &n); //输入n个整数 int i = 0; for (i = 0; i < n; i++) { scanf("%d", &arr[i]); } //将这n个数按从大到小排序 for (i = 0; i < n; i++) { int temp = 0; temp = arr[i]; int j = 0; for (j = i; j < n; j++) { if (temp < arr[j]) { temp = arr[j]; arr[j] = arr[i]; arr[i] = temp; } } } for (i = 0; i < n; i++) { printf("%d ", arr[i]); } return 0; }

最后,希望以上内容能对你有所帮助。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3