题目:任输入十个国家的名字,按由小到大排序。 --*/ #include <stdio.h>#include <string.h> void main(){ char a[10][20],b[20];//用来保存国家的名字b表示中间变量 int i,j; /循环变量 /**********Program**********/ /********** End **********/ for (i=9;i<10;i++) printf("%s\n",a[i]);
时间: 2023-07-05 13:33:27 浏览: 90
您需要在程序中添加一个排序的部分,可以使用冒泡排序来实现,修改后的程序如下:
```
#include <stdio.h>
#include <string.h>
void main(){
char a[10][20], b[20];//用来保存国家的名字b表示中间变量
int i,j;//循环变量
//输入国家名字
for(i=0;i<10;i++){
printf("请输入第%d个国家的名字:", i+1);
scanf("%s", a[i]);
}
//排序
for(i=0;i<9;i++){
for(j=0;j<9-i;j++){
if(strcmp(a[j],a[j+1])>0){
strcpy(b,a[j]);
strcpy(a[j],a[j+1]);
strcpy(a[j+1],b);
}
}
}
//输出排序后的国家名字
printf("排序后的国家名字为:\n");
for(i=0;i<10;i++)
printf("%s\n",a[i]);
}
```
注意,为了能够输入国家名字,我在程序中添加了一个输入部分。运行程序后,您可以输入十个国家的名字,程序会自动按照字典序从小到大进行排序,并输出排序后的结果。
相关问题
【程序设计】 题目:任输入十个国家的名字,按由小到大排序。 --*/ #include <stdio.h>#include <string.h> void main(){ char a[10][20],b[20];//用来保存国家的名字b表示中间变量 int i,j; /循环变量 /**********Program**********/ /********** End **********/ for (i=9;i<10;i++) printf("%s\n",a[i]);
您好!根据您的要求,我给您修改了一下程序。代码如下:
```
#include <stdio.h>
#include <string.h>
int main() {
char a[10][20], b[20];
int i, j;
// 输入国家名字
for (i = 0; i < 10; i++) {
printf("请输入第%d个国家的名字:", i + 1);
scanf("%s", a[i]);
}
// 排序
for (i = 0; i < 9; i++) {
for (j = i + 1; j < 10; j++) {
if (strcmp(a[i], a[j]) > 0) {
strcpy(b, a[i]);
strcpy(a[i], a[j]);
strcpy(a[j], b);
}
}
}
// 输出排序结果
printf("排序结果为:\n");
for (i = 0; i < 10; i++) {
printf("%s\n", a[i]);
}
return 0;
}
```
这个程序可以根据您输入的十个国家名字,按照字典序从小到大排序,并输出排序结果。希望能够帮到您!
【程序设计】 ---------------------------------------------------------------------- 题目:输入10个实数存入数组(float n[10];)中,按从小到大顺序排序后输出。 输出格式如样张所示。 要求:输入数据使用"%f"格式。 ---------------------------------------------------------------------*/ #include <stdio.h> void main() { float n[10],t; int i,j; printf("Input 10 numbers:\n"); /**********Program**********/ /********** End **********/ printf("The sorted numbers:\n"); for(i=0;i<10;i++) printf("%5.2f ",n[i]); printf("\n"); }
【程序设计】
```c
#include <stdio.h>
void main() {
float n[10], t;
int i, j;
printf("Input 10 numbers:\n");
for (i = 0; i < 10; i++)
scanf("%f", &n[i]);
for (i = 0; i < 9; i++) {
for (j = i + 1; j < 10; j++) {
if (n[i] > n[j]) {
t = n[i];
n[i] = n[j];
n[j] = t;
}
}
}
printf("The sorted numbers:\n");
for (i = 0; i < 10; i++)
printf("%5.2f ", n[i]);
printf("\n");
}
```
本题的核心是排序算法,这里采用的是冒泡排序。具体思路是从第一个元素开始,依次与后面的元素进行比较,如果前面的元素大于后面的元素,就交换它们的位置。这样一轮下来,最大的元素就会被排到了最后面,接下来再从第一个元素开始进行同样的操作,直至所有元素都排好序。
代码中的双重循环即为冒泡排序的实现。值得注意的是,在内层循环中,j 的起始值为 i+1,这是因为前面的 i 个元素已经排好序了,不需要再次比较。此外,为了实现从小到大的排序,当 n[i] 大于 n[j] 时,需要交换它们的位置。
最后,输出排好序的数组即可。注意,输出格式中每个数占据 5 个字符的位置,并且保留 2 位小数。