| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1070 人关注过本帖
标题:句子的输出 麻烦求解
只看楼主 加入收藏
Ever0123
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2020-11-12
结帖率:100%
收藏
已结贴  问题点数:30 回复次数:3 
句子的输出 麻烦求解
题目是
事先允许最多五个英文字符串输入后,再指定输出顺序的编号(即对应输入字符串的顺序),使对应输出的英文字符串按照指定的顺序输出在一行上。
输入:
第一行:输入一个正整数,表示将要输入的字符串的个数,最大为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上过不了,但是测试的时候是对的。求解,谢谢。
搜索更多相关主题的帖子: 输入 int 字符串 输出 for 
2020-11-19 00:45
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:30 
两个相邻三字符串间用空格隔开
这个“三”是什么意思?

fflush(stdin);
无聊时在网上晃荡,专门找C语言的错误用法,然后用在自己的代码中?

gets(s[i]);
gets在上个世纪就被废弃了

但是我输出来的不对,我也不知道哪里出错了,比如我输入
3
world

hello
1 2 0
他会输出
! hello world
按照题意,你这个输出是正确的呀。或者说,你认为正确的输出应该是什么?

在每一行内对应输入一个字符串
题目竟然没有讲明这个字符串是否包含空白字符
程序代码:
#include <stdio.h>

int main( void )
{
    unsigned n;
    scanf( "%u", &n );

    char s[5][11];
    for( unsigned i=0; i!=n; ++i )
        scanf( "%s", s[i] );

    for( unsigned i=0; i!=n; ++i )
    {
        unsigned index;
        scanf( "%u", &index );
        printf( "%s%c", s[index], " \n"[i+1==n] );
    }
}
2020-11-19 08:39
Ever0123
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2020-11-12
收藏
得分:0 
回复 2楼 rjsp
我是真的不太懂,我还不知道怎么入手这道题,wuwuwuwu,您觉得我该怎么开始学习,该则么练习好啊,
2020-11-19 20:52
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:0 
以下是引用Ever0123在2020-11-19 20:52:57的发言:

我还不知道怎么入手这道题

我在2楼给你代码了呀
2020-11-20 10:32
快速回复:句子的输出 麻烦求解
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018067 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved