本篇文章中,我们将讲述在C语言中,输入一个数组,如何用for循环实现将输入的n个数字按照从大到小输出。
一.定义数组并初始化
首先,我们定义一个整形的数组并将其初始化。输入n,来决定数组中整数的个数。
然后用for循环来输入这个数组中的各个数字。
int n = 0;
scanf("%d", &n);
int* arr = (int*)malloc(sizeof(int) * 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。接下来的五个数字就是我们输入的数字。
最后一行就是经过从大到小排序之后的数字。
可以看出,输入负数时,程序运行结果仍然正确。文章来源:https://www.toymoban.com/news/detail-415578.html
五.完整代码
#include<stdio.h>
#include<stdlib.h>
int main()
{
int n = 0;
scanf("%d", &n);
int* arr = (int*)malloc(sizeof(int) * 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]);
}
free(arr);
arr = NULL;
return 0;
}
最后,希望以上内容能对你有所帮助。文章来源地址https://www.toymoban.com/news/detail-415578.html
到了这里,关于【C语言】中,输入一个数组,用for循环实现将输入的n个数字按照从大到小的顺序输出。【通俗简单易懂】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!