编写一个程序,从键盘读入10个字符串,将这10个字符串进行由大到小的排序,并输出排序后的各字符串

2024-12-04 13:59:23
推荐回答(2个)
回答1:

#include
#include
#include
#define N 10
int main()
{
int i;
char str[N][100];
void paixu(char a[][100] ,int n);
printf("请在这里输入十个字符串:\n");
for(i=0;i scanf("%s",str[i]);
paixu(str,N);
printf("排序之后的十个字符数组为:\n");
for(i=0;i printf("%s,",str[i]);
system("pause");
return 0;
}

void paixu(char a[][100],int n)
{
char change[100];
for(int j=0;j {
for(int i=0;i if(strcmp(a[i],a[i+1])>0)
{
strcpy(change,a[i]);
strcpy(a[i],a[i+1]);
strcpy(a[i+1],change);
}

}

}

这个程序已经能运行成功,希望能帮到你

回答2:

我太清楚你那个“字符串大小” 具体是什么意思,是指字符串大小,还是字符串的ASCII码呢?所以我使用strcmp()对读字符串的ASCII码大小进行排序了。

#include
#include
#include
#define N 3
int main(void)
{
char a[N][20];
char temp[20];
int i = 0;
int j = 0;
for (i = 0; i < N; i++) {
printf("Pleas input No.%d string:\n", i+1);
scanf("%s", a[i]);
}
for (i = 0; i < N - 1; i++) {
for (j = 0; j < N - 1 - i; j++) {
if (strcmp(a[j], a[j+1]) < 0) {
strcpy(temp, a[j]);
strcpy(a[j], a[j+1]);
strcpy(a[j+1], temp);
}
}
}
printf("\nResult:\n");
for (i = 0; i < N; i++) {
printf("%s\n", a[i]);
}
return 0;
}