请给出一段C语言代码 实现在数组中存入一串数字,数组长度不超过20,编写一个函数,实现用选择法对数组中10个整数按由小到大排序。
时间: 2024-03-14 09:48:03 浏览: 17
好的,下面是一个实现用选择排序对一个长度不超过20的整型数组按由小到大排序的C语言函数:
```c
void selection_sort(int arr[], int n) {
int i, j, min_idx;
for (i = 0; i < n-1; i++) {
min_idx = i;
for (j = i+1; j < n; j++) {
if (arr[j] < arr[min_idx]) {
min_idx = j;
}
}
int temp = arr[i];
arr[i] = arr[min_idx];
arr[min_idx] = temp;
}
}
```
这个函数使用了选择排序算法,它会对传入的整型数组 `arr` 进行排序,数组的长度为 `n`。具体来说,它会遍历整个数组,每次找到当前位置之后的最小值,然后将这个最小值与当前位置交换。这样,每次遍历的时候,数组的前缀都会被排好序,最终整个数组就会有序。
相关问题
用c语言编写一个函数在数组中存入一串数字,数组长度不超过20,编写一个函数,实现用选择法对数组中10个整数按由小到大排序。
以下是实现该功能的代码:
```c
#include <stdio.h>
void insertNums(int arr[], int len) {
printf("请输入一串数字:");
for(int i = 0; i < len; i++) {
scanf("%d", &arr[i]);
}
}
void selectionSort(int arr[], int len) {
for(int i = 0; i < len - 1; i++) {
int minIndex = i;
for(int j = i + 1; j < len; j++) {
if(arr[j] < arr[minIndex]) {
minIndex = j;
}
}
if(minIndex != i) {
int temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
}
int main() {
int arr[20];
insertNums(arr, 10);
selectionSort(arr, 10);
printf("排序结果为:");
for(int i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
解释:
1. `insertNums`函数用于从键盘输入一串数字,并存入数组中。
2. `selectionSort`函数用于对数组进行选择排序,即每次选出最小值,放到正确的位置。
3. 在`main`函数中,先调用`insertNums`函数输入数字,再调用`selectionSort`函数对数组进行排序。
4. 最后输出排序结果。
以上是实现该功能的完整代码。注意,该代码默认输入10个数字,如需输入其他个数,请修改数组长度和函数参数。
用C语言编写一个从一个字符型数组中截取一段拷贝给另一个字符串的函数
可以使用C语言中的strncpy函数来实现从一个字符型数组中截取一段拷贝给另一个字符串的功能。具体的代码实现如下:
```c
void copyString(char *dest, char *src, int start, int len) {
strncpy(dest, src + start, len);
dest[len] = '\0';
}
```
其中,dest表示目标字符串,src表示源字符串,start表示截取的起始位置,len表示截取的长度。使用strncpy函数可以将src中从start位置开始的len个字符拷贝到dest中,并在dest的末尾添加一个'\0'字符,以表示字符串的结束。