這出現在我們的實驗室總決賽考試中: 製作一個程序,將10個字符串輸入輸入到一個數組中。 然後按字母順序輸出字符串。C:按字母順序排列字符數組陣列
我在考試期間弄不清楚,現在我想知道它究竟做了些什麼。
到目前爲止,這是我所做的。它不適用於類似或等效的字符串,它們的索引會丟失?任何人都可以使用stdio.h和string.h庫共享他們的解決方案?
/*Write a program that takes 10 strings input into an array and outputs them in alphabetical order*/
#include<stdio.h>
#include<string.h>
char strings[10][150];
char ordered[10][150];
int i,j,k;
int ind;
main()
{
printf("INPUT 10 STRINGS\n");
for(i=0;i<10;i++)
{
gets(strings[i]);
}
for(i=0;i<10;i++)
{
ind=0;
for(j=0;j<10;j++)
{
if(strings[i][0]<strings[j][0])
{
ind++;
}
else if(strings[i][0]==strings[j][0])
{
k=0;
while((strings[i][k]==strings[j][k])&&strings[j][k+1]!='\0')
{
if(strlen(strings[i])<strlen(strings[j]))
{
if(strings[i][k+1]=='\0')
{
ind++;
}
else if(strings[i][k+1]<strings[j][k+1])
{
ind++;
}
}
else if(strlen(strings[i])>strlen(strings[j]))
{
if(strings[i][k+1]<strings[j][k+1])
{
ind++;
}
}
k++;
}
}
}
strcpy(ordered[ind],strings[i]);
}
printf("STRINGS: \n");
for(i=9;i>-1;i--)
{
puts(ordered[i]);
}
}
使用STRCMP和strcpy – AkaSh
爲避免複製,我建議聲明一個字符串指針數組。而不是複製字符串,移動指針會快得多。 – Dere0405