#include <stdio.h> int main(void) { int n,i,j; int index,temp; int a[10]; scanf("%d",&n); for(i=0;i<n;i++){ scanf("%d",&a[i]); for(j=0;j<n-1;j++) { index=j; for(i=j+1;i<n;i++) if(a[i]>a[index]){ index=i; } } temp=a[index]; a[index]=a[j]; a[j]=temp; } for(i=0;i<n;i++){ printf("%d ",a[i]); } printf("\n"); return 0; }换一种c语言的方法
时间: 2023-06-21 10:21:53 浏览: 104
选择排序是一种比较基础的排序算法,C 语言中可以使用不同的语法结构实现。以下是使用 while 循环实现选择排序的 C 语言程序:
```
#include <stdio.h>
int main(void) {
int n, i, j, index, temp;
int a[10];
scanf("%d", &n);
for(i=0; i<n; i++) {
scanf("%d", &a[i]);
}
i = 0;
while(i<n) {
index = i;
j = i+1;
while(j<n) {
if(a[j] > a[index]) {
index = j;
}
j++;
}
temp = a[i];
a[i] = a[index];
a[index] = temp;
i++;
}
for(i=0; i<n; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
```
这个程序的基本思路与之前的程序相同,只是使用了 while 循环来实现。
相关问题
#define N 10 /*定义符号常量 N 为 10*/ #include <stdio.h> void main() { int a[N],i,j,temp; printf("please input %d numbers\n",N); }继续编写
可以继续编写输入数组元素的代码和排序代码,实现对输入数组元素进行排序的功能。
```c
#define N 10 /*定义符号常量 N 为 10*/
#include <stdio.h>
int main() {
int a[N], i, j, temp;
printf("please input %d numbers\n", N);
for (i = 0; i < N; i++) {
scanf("%d", &a[i]);
}
for (i = 0; i < N - 1; i++) {
for (j = 0; j < N - 1 - i; j++) {
if (a[j] > a[j+1]) {
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
printf("the sorted array is:\n");
for (i = 0; i < N; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
```
以上代码实现了输入10个数,排序后输出的功能。用户输入10个数后,程序使用冒泡排序将这些数从小到大排序,最后输出排序后的数组元素。
定义函数实现字符串排序 函数接口定义: void fun(char* str[],int n) str是存储n个字符串首地址的指针数组,n是字符串个数 裁判测试程序样例: #include <stdio.h> #include <string.h> #include <stdlib.h> void fun(char* str[],int n); main() { int i,n; char *strn[10],t[20]; scanf("%d",&n); for(i=0;i<n;i++) {
以下是实现字符串排序的函数:
void fun(char* str[], int n) {
int i, j;
char *temp;
// 使用冒泡排序对字符串进行排序
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (strcmp(str[j], str[j + 1]) > 0) {
temp = str[j];
str[j] = str[j + 1];
str[j + 1] = temp;
}
}
}
}
在裁判测试程序样例中,我们可以将以下代码添加到主函数中进行测试:
for (i = 0; i < n; i++) {
strn[i] = (char*)malloc(sizeof(char) * 20); // 为每个字符串分配内存空间
scanf("%s", strn[i]);
}
fun(strn, n); // 调用排序函数
for (i = 0; i < n; i++) {
printf("%s\n", strn[i]); // 输出排序后的字符串
free(strn[i]); // 释放内存空间
}
注意:在使用完动态分配的内存空间后,需要使用free函数将其释放,避免内存泄漏。
阅读全文