句子的输出 麻烦求解
题目是事先允许最多五个英文字符串输入后,再指定输出顺序的编号(即对应输入字符串的顺序),使对应输出的英文字符串按照指定的顺序输出在一行上。
输入:
第一行:输入一个正整数,表示将要输入的字符串的个数,最大为5。
第二行起:在每一行内对应输入一个字符串,限制在10个字符以内(含10个字符)。
输入完最后一个字符串的下一行:依次输入输出顺序编号,从0开始(即0表示输入的第一个字符串,1表示输入的第二个字符串,依次类推),两个相邻数字之间用空格隔开。
输出:
只有一行,按照输入指定的顺序输出字符串。两个相邻三字符串间用空格隔开,最后一个字符串后没有空格且应换行。
输入样例:
3
world
Hello
!
1 0 2
输出样例:
Hello world !
我写的代码是
#include<stdio.h>
#include<string.h>
int main()
{
int i,j,num;
char s[5][11]={0};
scanf("%d",&num);
for (i=0;i<num;i++)
{
fflush(stdin);
gets(s[i]);
}
for (i=0;i<num;i++)
{
scanf("%d",&j);
printf("%s ",s[j]);
}
return 0;
}
但是我输出来的不对,我也不知道哪里出错了,比如我输入
3
world
!
hello
1 2 0
他会输出
! hello world
麻烦有空帮我看看,谢谢你,麻烦了,嘿嘿,或者有什么想法也可以分享一下。
然后,我朋友写的
#include <stdio.h>
#include <stdlib.h>
char s[6][11];
int a[5][2];
int n;
void input()
{
scanf("%d",&n);
getchar();
int i;
for(i=0;i<n;i++)
gets(s[i]);
for(i=0;i<n;i++)
{
a[i][0]=i;
scanf("%d",&a[i][1]);
}
}
void sort()
{
int i,j;
for(i=0;i<n;i++)
for(j=i;j<n;j++)
{
if(a[i][1]>a[j][1])
{
int t0=a[i][0],t1=a[i][1];
a[i][0]=a[j][0];
a[i][1]=a[j][1];
a[j][0]=t0;
a[j][1]=t1;
}
}
}
void output()
{
int i;
for(i=0;i<n-1;i++)
printf("%s ",s[a[i][0]]);
printf("%s\n",s[a[n-1][0]]);
}
int main(int argc, char *argv[])
{
input();
sort();
output();
system("PAUSE");
return 0;
}
在oj上过不了,但是测试的时候是对的。求解,谢谢。