| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 678 人关注过本帖
标题:请帮我看一下问题出在哪了
只看楼主 加入收藏
积木10086
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2013-11-22
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:11 
请帮我看一下问题出在哪了
#include <stdio.h>

int main()
{
    struct student
    {
        char name[81];
        int score;
    }stu[30];
    int i,j=0,num,b=0,max[30]={0};
    printf("请输入人数:\n");
    scanf("%d",&num);
    for(i=0;i<num;i++)
    {
        scanf("%s,%d",stu[i].name,&stu[i].score);
    }
    b = stu[0].score;
    for(i=0;i<num;i++)
    {
        if(stu[i].score==b)
        {
            max[j]=i;
            j++;
        }
        if(stu[i].score>b)
        {
            b = stu[i].score;
            j=0;
            max[j]=i;
            j++;
        }
    }
    for(i=0;i<j;i++)
    {
        int k = max[i];
        printf("%s, %d\n",stu[k].name,stu[k].score);
    }
    return 0;
}

搜索更多相关主题的帖子: include 
2013-12-10 19:12
积木10086
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2013-11-22
收藏
得分:0 
编译时候没有错误,但是运行时候结果是不对的。这是怎么回事呢?
2013-12-10 19:19
积木10086
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2013-11-22
收藏
得分:0 
这是用结构体做的,不用结构体是下边这样的#include <stdio.h>

int main()
{
    int i,j=0,num,b,d,l=0;
    printf("请输入人数:\n");
    scanf("%d",&num);
    char name[100][100]={0};
    int score[100]={0},max[100]={0},min[100]={0};
    for(i=0;i<num;i++)
    {
        printf("请输入第%d同学的姓名\n",i+1);
        scanf("%s",name[i]);
        printf("请输入第%d同学的成绩\n",i+1);
        scanf("%d",&score[i]);
    }
    b = score[0];
    for(i=0;i<num;i++)
    {
        if(score[i]==b)
        {
            max[j]=i;
            j++;
        }
        if(score[i]>b)
        {
            b = score[i];
            j=0;
            max[j]=i;
            j++;
        }
    }
    d = score[0];
    for(i=0;i<num;i++)
    {
        if(score[i]==d)
        {
            min[l]=i;
            l++;
        }
        if(score[i]<d)
        {
            d = score[i];
            l=0;
            min[l]=i;
            l++;
        }
    }
    for(i=0;i<j;i++)
    {
        int k=0;
        k= max[i];
        printf("%s,%d\n",name[k],score[k]);
    }
   
    for(i=0;i<l;i++)
    {
        int n = min[i];
        printf("%s,%d\n",name[n],score[n]);
    }
    return 0;
}
2013-12-10 19:22
stevenwu
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2013-12-7
收藏
得分:0 
学习学习
2013-12-10 19:37
li_local
Rank: 2
等 级:论坛游民
帖 子:35
专家分:59
注 册:2013-11-21
收藏
得分:0 
排序输出?循环少了一层
2013-12-10 20:14
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:20 
scanf("%s,%d",stu[i].name,&stu[i].score);
问题应该出现在这句吧,你输入是字符串与数字是用逗号隔开的

这样      scanf("%s%d",stu[i].name,&stu[i].score);
不加逗号,但输入时字符串和数字之间必须用空格隔开,否则编译器会把数字当做字符看待

照你程序的意思应该是输出成绩最高的人吧(含多个)

[ 本帖最后由 韶志 于 2013-12-10 20:20 编辑 ]

三十年河东,三十年河西,莫欺少年穷!
2013-12-10 20:18
积木10086
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2013-11-22
收藏
得分:0 
以下是引用韶志在2013-12-10 20:18:07的发言:

scanf("%s,%d",stu.name,&stu.score);
问题应该出现在这句吧,你输入是字符串与数字是用逗号隔开的
 
这样      scanf("%s%d",stu.name,&stu.score);
不加逗号,但输入时字符串和数字之间必须用空格隔开,否则编译器会把数字当做字符看待
 
照你程序的意思应该是输出成绩最高的人吧(含多个)

就是输出成绩最高者,含多个
2013-12-10 21:15
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:0 
回复 7楼 积木10086
那就是了   
就是那句输入有问题,照着改

三十年河东,三十年河西,莫欺少年穷!
2013-12-10 21:28
积木10086
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2013-11-22
收藏
得分:0 
以下是引用li_local在2013-12-10 20:14:57的发言:

排序输出?循环少了一层
不少,这个定义的是结构体变量
2013-12-10 21:28
积木10086
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2013-11-22
收藏
得分:0 
回复 8楼 韶志
恩恩,现在好了,谢谢啊
2013-12-11 22:21
快速回复:请帮我看一下问题出在哪了
数据加载中...
 
   



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

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