| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1725 人关注过本帖
标题:求助,C语言读取的问题
只看楼主 加入收藏
q452953979
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2016-1-4
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:11 
求助,C语言读取的问题

#include <stdio.h>
#include <stdlib.h>
#include<string.h>
#define N 100
struct student
{
    char name[N];
    int total;
} ;
main()
{
    int i,k,n;
    char temp[N]={0};
    struct student j[N];
    printf("Please input the number of the students:");
    scanf("%d",&n);
    getchar();
    printf("The name and the total scores are:\n");
    struct student stu[n];
   
    for(i=0;i<n;i++)
    {
        gets(stu[i].name);
        scanf("%d",&stu[i].total);
        getchar();
    }
    for(k=0;k<n-1;k++)
    {
        for(i=0;i<n-k-1;i++)
            if(stu[i].total<stu[i+1].total)
            {
                j[i]=stu[i];
                stu[i]=stu[i+1];
                stu[i+1]=j[i];
            }
    }
    for(i=0;i<n;i++)
    {
        if(stu[i].total==stu[i+1].total)
            {
                if(strcmp(stu[i].name,stu[i+1].name)>0)
                {
                    j[i]=stu[i];
                    stu[i]=stu[i+1];
                    stu[i+1]=j[i];
                }
            }
            
    }
    for(i=0;i<n;i++)
    {
        printf("Name:%s\ntotal:%d\n\n",stu[i].name,stu[i].total);
    }
    system("pause");
}
搜索更多相关主题的帖子: include number scores C语言 
2016-01-07 20:53
q452953979
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2016-1-4
收藏
得分:0 
这个题是要按输入的姓名和成绩排序,先按成绩排,然后按姓名排。但是输入的时候是按照姓名和成绩输入的,其中用空格隔开,我写的这个要回车。。怎么办?
2016-01-07 20:54
q452953979
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2016-1-4
收藏
得分:0 
求助,,没人吗。。
2016-01-07 22:14
ms268el8
Rank: 4
等 级:业余侠客
威 望:1
帖 子:84
专家分:299
注 册:2015-11-30
收藏
得分:4 
for(i=0;i<n;i++)
 {
        scanf("%d %99s",&stu[i].total, stu[i].name);  
  }
這樣行了吧,條件中的n改常數吧
#define n 10像這樣
而且
1.   struct student stu[n];
 數組大小不能為變數,要麽訂大一點的常數應付需求,要麽用malloc動態配置空間儲存變數大小的數組
2.   struct student j[N];
 j只是暫存變數,根本沒必要宣告成數組,浪費空間
3.  char temp[N]={0};
這數組宣告了沒用到吧

[此贴子已经被作者于2016-1-7 22:50编辑过]

2016-01-07 22:41
q452953979
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2016-1-4
收藏
得分:0 
回复 4楼 ms268el8
1.那如果名字中间有空格怎么办?
  我先读入了n,再定义的stu[n]。
2.那应该怎么写。。。我写char会报错。。
3.那个忘记删了。。。
2016-01-07 23:54
ms268el8
Rank: 4
等 级:业余侠客
威 望:1
帖 子:84
专家分:299
注 册:2015-11-30
收藏
得分:0 
回复 5楼 q452953979
1. 名字有空格就要用fgets輸入函數,scanf函數遇到空格會停止輸入,但fgets不會。
for(i=0;i<n;i++)
{
         scanf("%d ", &stu[i].total);     //%d後有空格
         fgets(stu[i].name, 100, stdin);
}  
n是變數,c語言不支援數組大小宣告為變數。所以如要一個大小為變數的數組,應該動態配置記憶體空間。
2. [N]不要就可以, struct student j;

[此贴子已经被作者于2016-1-8 01:11编辑过]

2016-01-08 00:49
q452953979
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2016-1-4
收藏
得分:0 
回复 6楼 ms268el8
这个题目要求输入的格式是,先姓名然后成绩,eg:bill gates 800,这样怎么读?
2016-01-08 08:57
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:4 
以下是引用q452953979在2016-1-8 08:57:17的发言:

这个题目要求输入的格式是,先姓名然后成绩,eg:bill gates 800,这样怎么读?


如果不是从文件中读取的话  scanf("%s%s%d",?,?,?)

DO IT YOURSELF !
2016-01-08 09:11
q452953979
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2016-1-4
收藏
得分:0 
回复 8楼 wp231957
这样oj肯定过不了……因为名字有几部分不确定。。。
2016-01-08 09:20
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
名字中间有空格 至少中国人没有吧

就算老外  举例: TOM WANG  你如何判断这是一个人的名字 还是2个人的名字

DO IT YOURSELF !
2016-01-08 09:23
快速回复:求助,C语言读取的问题
数据加载中...
 
   



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

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