本关任务:有一个字符串数组包含9个字符串,每个字符串都是一个单词,且每个串的长度均不超过7,要求对单词进行排序后再输出。具体要求如下:
- 使用二维字符数组存放这9个字符串。
2.为二维字符数组输入数据。
3.输出处理前和处理后的字符串数组并进行比较。
输入:
9个字符串,长度小于7。
输出:
打印输出处理前的9个字符串。
打印输出处理后的9个字符串。
注意:这里的排序是排序字符串 总的来说就是按字母的ASCII码从小到大排序 同字母短的在前面(我是这么理解的)
#include <stdio.h>
#include <string.h>
int main()
{
//she its can ibm1 bbc NBA nhk2 BOY jxf
//c python java c++ android caffe keras pytorch php
int N,i,k;
char j,s[100][100],a[100][100];
printf("排序前的字符串:\n");
for(i=0;i<10;i++)
{
scanf("%s",s[i]);//输入
printf("%s",s[i]);
if(i<9)
printf("\n");
fflush(stdout);
}
for(i=0;i<9;i++)
{
k=i;
for(j=i+1;j<10;j++)
{
if(strcmp(s[k],s[j])>0)
k=j;
}
if(k!=i)
{
char temp[100];
strcpy(temp, s[k]);
strcpy(s[k], s[i]);
strcpy(s[i], temp);
}
}
printf("排序后的字符串:");
for(i=0;i<10;i++)
{
printf("%s\n",s[i]);
}
return 0;
}
需要注意的是
for(i=0;i<10;i++)
{
scanf("%s",s[i]);//输入
printf("%s",s[i]);
if(i<9)
printf("\n");
fflush(stdout);
}
这一段
i其实是i<9的,如果i<10 dev c++会不读下一个printf
但是如果使用作业平台和别的编译器的话i<10也是可以输出结果的
但是更准确的算法是i<9(助教老师指出的 我自己肯定得试好久OTZ)
这是在我还没加if的时候想的
加了之后有点迷惑 等我有空再想(加if是因为要严格按照平台的输出格式)