| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2642 人关注过本帖
标题:结构体程序错误,请大佬帮忙看卡慢慢
只看楼主 加入收藏
暴君Dentiny
Rank: 2
等 级:论坛游民
帖 子:132
专家分:43
注 册:2019-5-6
结帖率:89.47%
收藏
已结贴  问题点数:17 回复次数:5 
结构体程序错误,请大佬帮忙看卡慢慢
输出的时候出现了问题,输出结果在下面,在输出第二个学生信息的时候还没输入学生名字就直接到学生性别了

程序代码:
#include<stdio.h>
int main()
{ 
    struct Studens
    {
        char name[60];
        char gender[5];
        int studen_number;
        float grade;
    }studen1,studen2;
    puts("录入first学生信息:");
    puts("");
    printf("学生名字:"); fgets(studen1.name, 60, stdin);
    puts(" ");
    printf("学生性别:"); fgets(studen1.gender, 5, stdin);
    puts(" ");
    printf("学号:"); scanf_s("%d", &studen1.studen_number);
    puts(" ");
    printf("输入学生成绩:"); scanf_s("%f", &studen1.grade); puts("");
    puts("录入second学生信息:");
    puts("");
    printf("学生名字:"); fgets(studen2.name, 60, stdin);
    puts(" ");
    printf("学生性别:"); fgets(studen2.gender, 5, stdin);
    puts(" ");
    printf("学号:"); scanf_s("%d", &studen2.studen_number);
    puts(" ");
    printf("输入学生成绩:"); scanf_s("%f", &studen2.grade);
    printf("是否比较两个学生的成绩:");
    printf("是按1\t否按2\n");
    int a;
    scanf_s("%d", &a);
    switch (a)
    {
    case '1':
        if (studen1.grade > studen2.grade)
        {
            printf("名字:%s\n性别:%s\n学号:%d\n成绩:%.2f\n", studen1.name, studen1.gender, studen1.studen_number, studen1.grade);

        }
        if(studen1.grade < studen2.grade)
        {
            printf("名字:%s\n性别:%s\n学号:%d\n成绩:%.2f\n", studen2.name, studen2.gender, studen2.studen_number, studen2.grade);

        }break;
        
    
    default:printf("滚吧"); break;
}
    return 0;
}
图片附件: 游客没有浏览图片的权限,请 登录注册

输出结果
录入first学生信息:

学生名字:纽约

学生性别:男

学号:20

输入学生成绩:738728

录入second学生信息:

学生名字:
学生性别:


[此贴子已经被作者于2019-9-5 13:53编辑过]

搜索更多相关主题的帖子: printf 学生 puts 性别 名字 
2019-09-05 13:49
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9029
专家分:54050
注 册:2011-1-18
收藏
得分:9 
scanf_s("%f", &studen1.grade);
读入了成绩后,还可能余下一些空白字符(最起码'\n'是肯定有的)
然后你用 fgets(studen2.name, 60, stdin); 获得成绩后面的那些数据。
2019-09-05 14:14
暴君Dentiny
Rank: 2
等 级:论坛游民
帖 子:132
专家分:43
注 册:2019-5-6
收藏
得分:0 
回复 2楼 rjsp
那如果是您,您会怎么改

技术至上,学无止境
2019-09-05 16:53
Mr_doge
Rank: 5Rank: 5
等 级:贵宾
威 望:10
帖 子:159
专家分:385
注 册:2018-6-28
收藏
得分:9 
类似scanf()这样的不取换行符的库函数,可以在使用后加上一个小循环取走剩下的字符(包括换行符)并丢弃
while(getchar()!='\n')
    continue;
2019-09-06 16:17
zhouaichun
Rank: 2
等 级:论坛游民
帖 子:8
专家分:18
注 册:2015-4-6
收藏
得分:0 
#include<stdio.h>
int main()
{
    struct Studens
    {
        char name[60];
        char gender[5];
        int studen_number;
        float grade;
    }studen1,studen2;
    puts("录入first学生信息:");
    puts("");
    printf("学生名字:"); fgets(studen1.name, 60, stdin);
    puts(" ");
    printf("学生性别:"); fgets(studen1.gender, 5, stdin);
    puts(" ");
    printf("学号:"); scanf("%d", &studen1.studen_number);
    puts(" ");
    printf("输入学生成绩:"); scanf("%f", &studen1.grade);
    getchar();
    puts("录入second学生信息:");
    puts("");
    printf("学生名字:"); fgets(studen2.name, 60, stdin);
    puts(" ");
    printf("学生性别:"); fgets(studen2.gender, 5, stdin);
    puts(" ");
    printf("学号:"); scanf("%d", &studen2.studen_number);
    puts(" ");
    printf("输入学生成绩:"); scanf("%f", &studen2.grade);
    printf("是否比较两个学生的成绩:");
    printf("是按1\t否按2\n");
    int a;
    scanf("%d", &a);
    switch (a)
    {
    case 1:
        if (studen1.grade > studen2.grade)
        {
            printf("名字:%s\n性别:%s\n学号:%d\n成绩:%.2f\n", studen1.name,
            studen1.gender, studen1.studen_number, studen1.grade);

        }
        if(studen1.grade < studen2.grade)
        {
            printf("名字:%s\n性别:%s\n学号:%d\n成绩:%.2f\n", studen2.name,
            studen2.gender, studen2.studen_number, studen2.grade);

        }break;
        
   
    default:printf("滚吧"); break;
}
    return 0;
}
2019-09-10 16:05
zhouaichun
Rank: 2
等 级:论坛游民
帖 子:8
专家分:18
注 册:2015-4-6
收藏
得分:0 
回复 5楼 zhouaichun
试试这个程序
2019-09-10 16:06
快速回复:结构体程序错误,请大佬帮忙看卡慢慢
数据加载中...
 
   



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

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