C程序输入一个由空格分隔的整数序列的数组

如何输入由空格分隔的整数序列的数组?

使用scanf函数进行输入

在C语言中,scanf函数可以用来输入各种类型的变量,包括字符串、字符、整数、浮点数等等。要输入一个由空格分隔的整数序列的数组,我们可以使用scanf函数加循环的方式来实现。

在使用scanf函数时,我们需要用到格式符来指定要输入的变量的类型。对于输入整数序列的数组,我们可以使用%d格式符。此外,由于输入的数组是由空格分隔的,我们还需要在格式字符串中加入空格,以便scanf函数能够正确地读入输入。

下面是一个示例程序,该程序可以输入一个由空格分隔的整数序列的数组:

#include <stdio.h>

int main() {

int num[10]; // 定义一个长度为10的整数数组

int i;

printf("请输入10个整数: ");

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

scanf("%d", &num[i]); // 读入输入

}

printf("输入的数组为: ");

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

printf("%d ", num[i]); // 输出数组

}

return 0;

}

在上面的示例程序中,我们首先定义了一个长度为10的整数数组num,然后使用for循环来输入数组的值。在循环中,我们使用scanf函数来读入输入,并将输入的值储存在数组对应位置的元素中。

接着,我们使用另一个for循环来输出输入的数组。输出时,我们只需要依次遍历数组的每个元素,并使用printf函数输出即可。

如何对输入的数组进行排序?

使用冒泡排序算法进行排序

对于输入的数组,如果需要对其进行排序,我们可以使用冒泡排序算法。冒泡排序算法是一种简单直观的排序算法,其基本思想是从数组的起始位置开始,依次比较相邻的元素,如果发现顺序不对就交换它们,这样一趟下来,就能够把最大(或最小)的元素放到数组的结尾处。这个过程重复n-1次即可完成整个排序过程。

下面是一个示例程序,该程序可以输入一个由空格分隔的整数序列的数组,并对其进行冒泡排序:

#include <stdio.h>

int main() {

int num[10]; // 定义一个长度为10的整数数组

int i, j, temp;

printf("请输入10个整数: ");

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

scanf("%d", &num[i]); // 读入输入

}

// 冒泡排序

for (i = 0; i < 9; i++) {

for (j = 0; j < 9 - i; j++) {

if (num[j] > num[j + 1]) {

temp = num[j];

num[j] = num[j + 1];

num[j + 1] = temp;

}

}

}

printf("排序后的数组为: ");

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

printf("%d ", num[i]); // 输出数组

}

return 0;

}

在上面的示例程序中,我们使用了两个for循环来实现冒泡排序。外层循环控制排序的趟数,内层循环负责交换相邻的元素。在每趟排序中,我们依次比较相邻的元素,并根据大小关系进行交换,直到把最大(或最小)的元素交换到数组的结尾处。

如何计算排序后数组的中位数?

使用数组下标法来计算中位数

对于已经排好序的数组,我们可以通过一些方法来计算其中位数。中位数是指一个数组中所有数值排序后居于中间的值,即将所有数值从小到大排列后,位于中间位置的数值。

由于我们已经排好序的数组,因此可以使用数组下标法来计算其中位数。中位数的下标可以通过以下公式来计算:

mid = (low + high) / 2

其中,low为数组的起始下标,high为数组的结束下标。根据这个公式,我们可以在排好序的数组中找到中位数的下标,然后再通过该下标来找到中位数的具体值。

下面是一个示例程序,该程序可以输入一个由空格分隔的整数序列的数组,并对其进行冒泡排序,然后计算排序后数组的中位数:

#include <stdio.h>

int main() {

int num[10]; // 定义一个长度为10的整数数组

int i, j, temp, mid;

double median;

printf("请输入10个整数: ");

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

scanf("%d", &num[i]); // 读入输入

}

// 冒泡排序

for (i = 0; i < 9; i++) {

for (j = 0; j < 9 - i; j++) {

if (num[j] > num[j + 1]) {

temp = num[j];

num[j] = num[j + 1];

num[j + 1] = temp;

}

}

}

mid = (0 + 9) / 2; // 计算中位数的下标

median = num[mid]; // 找到中位数的具体值

printf("排序后的数组为: ");

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

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

}

printf("\n中位数为: %.1f\n", median);

return 0;

}

在上面的示例程序中,我们首先使用冒泡排序算法对输入的数组进行排序。排序后,我们根据计算中位数的公式,找到了中位数的下标并储存在变量mid中。接着,我们用mid来找到中位数的具体值,并储存在变量median中。

在输出中位数时,我们使用了%.1f格式符,该格式符表示要输出一个有一位小数的浮点数。这样,我们可以保证输出的中位数是一个实数,而不是整数。

总结

本文介绍了如何输入一个由空格分隔的整数序列的数组,并使用冒泡排序算法对其进行排序。同时,我们还介绍了如何使用数组下标法来计算排序后数组的中位数。

以上内容涵盖了C语言中一些基本的输入输出、数组和排序算法等知识点,对于刚学习C语言的入门学习者来说,非常实用。

后端开发标签