C语言编程。。。只用C语言,不要用C++ 急!!!

事先允许最多五个英文字符串输入后,再指定输出顺序的编号(即对应输入字符串的顺序),使对应输出的英文字符串按照指定的顺序输出在一行上。
输入:
第一行:输入一个正整数,表示将要输入的字符串的个数,最大为5。
第二行起:在每一行内对应输入一个字符串,限制在10个字符以内(含10个字符)。
输入完最后一个字符串的下一行:依次输入输出顺序编号,从0开始(即0表示输入的第一个字符串,1表示输入的第二个字符串,依次类推),两个相邻数字之间用空格隔开。
输出:
只有一行,按照输入指定的顺序输出字符串。两个相邻三字符串间用空格隔开,最后一个字符串后没有空格且应换行。
输入样例:
3
world
Hello
!
1 0 2
输出样例:
Hello world !

第1个回答  2012-04-16
DEV C 下的
#include <stdio.h>
#include <stdlib.h>

char s[5][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;
}
第2个回答  2012-04-16
4
are
OK
you
?
0 2 1 3
are you OK ?
Press any key to continue

#include <stdio.h>
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]);
}
printf("\n");
}追问

。。。这又是什么东西

追答

给你按要求写出来了呀

还是C的 不是C++的

你如果连这都不认识

那你还提问有什么意义?

追问

不是,我是说,运行有问题啊
我输入
4
name
your
your
what‘s
1 2 3 0
他输出的是 your your what’s name

追答

4
name
your
your
what's
1 2 3 0
your your what's name
Press any key to continue

就是这个啊

你想要什么结果?

追问

应该是 what's name your your 吧

追答

这个程序本来就是按下标输出字符串的

what's name your your

的顺序应该是 3 0 1 2 或者 3 0 2 1

本回答被提问者采纳
相似回答