| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1688 人关注过本帖
标题:关于字符串的一道题
只看楼主 加入收藏
流浪猪头
Rank: 2
等 级:论坛游民
帖 子:40
专家分:65
注 册:2018-7-23
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
关于字符串的一道题
问题:读入n名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。
输入格式:每个测试输入包含1个测试用例,格式为\
  第1行:正整数n
  第2行:第1个学生的姓名 学号 成绩
  第3行:第2个学生的姓名 学号 成绩
  ... ... ...
  第n+1行:第n个学生的姓名 学号 成绩
其中姓名和学号均为不超过10个字符的字符串,成绩为0到100之间的一个整数,这里保证在一组测试用例中没有两个学生的成绩是相同的。
输出格式:对每个测试用例输出2行,第1行是成绩最高学生的姓名和学号,第2行是成绩最低学生的姓名和学号,字符串间有1空格。
输入样例:
3
Joe Math990112 89
Mike CS991301 100
Mary EE990830 95
输出样例:
Mike CS991301
Joe Math990112
程序代码:
#include <cstdio>
#include <cstring>
#define N 10
int main()
{
    int n,score,min,max;
    char na[N],nu[N],namax[N],numax[N],namin[N],numin[N];
    scanf("%d",&n);
    gets(na);
    gets(nu);
    scanf("%d",&score);
    strcpy(namin,na);strcpy(namax,na);
    strcpy(numin,nu);strcpy(numax,nu);
    min=score;max=score;
    for(int i=1;i<n;i++)
    {
        gets(na);
        gets(nu);
        scanf("%d",&score);
        if(score<min) {strcpy(namin,na);strcpy(numin,nu);} 
        if(score>max) {strcpy(namax,na);strcpy(numax,nu);}
    }
    puts(namax);printf(" ");puts(numax);printf("\n");
    puts(namin);printf(" ");puts(numin);printf("\n");
}

我这个有问题,我感觉是空格的原因。但是如何使切断两个字符串呢?求大佬瞅瞅
搜索更多相关主题的帖子: 学生 姓名 学号 成绩 strcpy 
2018-07-31 16:50
no1xijin
Rank: 9Rank: 9Rank: 9
来 自:江西
等 级:贵宾
威 望:20
帖 子:211
专家分:1207
注 册:2015-7-8
收藏
得分:15 
为什么要用gets()?

126邮箱联系方式:no1xijin@126. com
2018-07-31 17:47
流浪猪头
Rank: 2
等 级:论坛游民
帖 子:40
专家分:65
注 册:2018-7-23
收藏
得分:0 
回复 2楼 no1xijin
哦哦,知道了,多谢
2018-07-31 18:47
流浪猪头
Rank: 2
等 级:论坛游民
帖 子:40
专家分:65
注 册:2018-7-23
收藏
得分:0 
回复 2楼 no1xijin
程序代码:
#include <cstdio>
#include <cstring>
#define N 10
int main()
{
    int n,score,min,max;
    char na[N],nu[N],namax[N],numax[N],namin[N],numin[N];
    scanf("%d",&n);
    scanf("%s",na);
    scanf("%s",nu);
    scanf("%d",&score);
    strcpy(namin,na);strcpy(namax,na);
    strcpy(numin,nu);strcpy(numax,nu);
    min=score;max=score;
    for(int i=1;i<n;i++)
    {
        scanf("%s",na);
        scanf("%s",nu);
        scanf("%d",&score);
        if(score>max) {strcpy(namax,na);strcpy(numax,nu);}
        if(score<min) {strcpy(namin,na);strcpy(numin,nu);}
    }
    printf("%s %s\n",namax,numax);
    printf("%s %s\n",namin,numin);
}

改成这样了,但是结果不对,送佛送到西,再看看哪里错了,嘿嘿
2018-07-31 19:08
no1xijin
Rank: 9Rank: 9Rank: 9
来 自:江西
等 级:贵宾
威 望:20
帖 子:211
专家分:1207
注 册:2015-7-8
收藏
得分:0 
字符串中有空格可以采用一个字符一个字符循环输入,直到遇到换行,则输入完毕。伪代码如下:
na[i]=getch();
while (na[i]!='\n')
{
    i++
    na[i]=getch();
}

126邮箱联系方式:no1xijin@126. com
2018-07-31 19:49
流浪猪头
Rank: 2
等 级:论坛游民
帖 子:40
专家分:65
注 册:2018-7-23
收藏
得分:0 
回复 4楼 流浪猪头
图片附件: 游客没有浏览图片的权限,请 登录注册
看看,为什么结果不对
2018-07-31 20:18
流浪猪头
Rank: 2
等 级:论坛游民
帖 子:40
专家分:65
注 册:2018-7-23
收藏
得分:0 
回复 4楼 流浪猪头
图片附件: 游客没有浏览图片的权限,请 登录注册
看看,为什么结果不对
2018-07-31 20:18
no1xijin
Rank: 9Rank: 9Rank: 9
来 自:江西
等 级:贵宾
威 望:20
帖 子:211
专家分:1207
注 册:2015-7-8
收藏
得分:0 
第一个字符串结束条件用: while (!((na[i]>'0') && (na[i]<'9')) )

第二个字符串结束条件用:while (na[i]!=' ')

126邮箱联系方式:no1xijin@126. com
2018-07-31 20:41
kfyniriu
Rank: 6Rank: 6
等 级:侠之大者
威 望:9
帖 子:105
专家分:426
注 册:2018-7-6
收藏
得分:5 
sacnf("%s%s%d",na,nu,&score);
printf("%s%s%d",na,nu,score);
2018-07-31 23:41
快速回复:关于字符串的一道题
数据加载中...
 
   



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

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