鱼C论坛

 找回密码
 立即注册
查看: 3022|回复: 1

录入学生成绩

[复制链接]
发表于 2022-10-10 12:07:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>
int main()
{
        int num,grade,math,chin,eng;
        char name,gen,year,school1,school2,zhuanye;
        printf("===============录入学生成绩===============\n");
        printf("学号:\n");
        scanf("%d",&num);
        printf("姓名:\n");
        scanf("%s",&name);
        printf("性别:\n");
        scanf("%s",&gen);
        printf("出生日期(2000-10-8):\n");
        scanf("%s",&year);
        printf("学院:\n");
        scanf("%s",&school1);
        printf("系名:\n");
        scanf("%s",&school2);
        printf("专业:\n");
        scanf("%s",&zhuanye);
        printf("年级:\n");
        scanf("%d",&grade);
        printf("数学成绩:\n");
        scanf("%d",&math);
        printf("语文成绩:\n");
        scanf("%d",&chin);
        printf("英语成绩:\n");
        scanf("%d",&eng);
        printf("===============显示学生成绩===============\n");
        printf("学号   姓名    性别    出生日期    院系    专业      年级    数学  语文  英语\n");
        printf("%d,%s,%s,%s,%s,%s,%d,%d,%d,%d\n",num,name,gen,year,school1,school2,zhuanye,grade,math,chin,eng);
        return 0;
        }
我想问一下,为什么最后一行的成绩打印不出来呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-10-10 12:12:36 | 显示全部楼层
本帖最后由 jackz007 于 2022-10-10 13:04 编辑
  1. #include<stdio.h>

  2. int main()
  3. {
  4.         int num,grade,math,chin,eng;
  5.         char name[256],gen[256],year[256],school1[256],school2[256],zhuanye[256]; // 【修改】
  6.         printf("===============录入学生成绩===============\n");
  7.         printf("学号: ");
  8.         scanf("%d",&num);
  9.         printf("姓名: ");
  10.         scanf("%s" , name);                   // 【修改】
  11.         printf("性别: ");
  12.         scanf("%s", gen) ;                    // 【修改】
  13.         printf("出生日期(2000-10-8): ");
  14.         scanf("%s", year);                    // 【修改】
  15.         printf("学院: ");
  16.         scanf("%s", school1);                 // 【修改】
  17.         printf("系名: ");
  18.         scanf("%s", school2);                 // 【修改】
  19.         printf("专业: ");
  20.         scanf("%s", zhuanye);                 // 【修改】
  21.         printf("年级: ");
  22.         scanf("%d",&grade);
  23.         printf("数学成绩: ");
  24.         scanf("%d",&math);
  25.         printf("语文成绩: ");
  26.         scanf("%d",&chin);
  27.         printf("英语成绩: ");
  28.         scanf("%d",&eng);
  29.         printf("===============显示学生成绩===============\n");
  30.         printf("    学号:%d\n" , num)     ;  // 【以下重写】
  31.         printf("    姓名:%s\n" , name)    ;
  32.         printf("    性别:%s\n" , gen)     ;
  33.         printf("出生日期:%s\n" , year)    ;
  34.         printf("    学院:%s\n" , school1) ;
  35.         printf("    系名:%s\n" , school2) ;
  36.         printf("    专业:%s\n" , zhuanye) ;
  37.         printf("    年级:%d\n" , grade)   ;
  38.         printf("    数学:%d\n" , math)    ;
  39.         printf("    语文:%d\n" , chin)    ;
  40.         printf("    英语:%d\n" , eng)     ;
  41.         return 0;
  42. }
复制代码

        编译、运行实况:
  1. D:\[00.Exerciese.2022]\C>g++ -o x x.c

  2. D:\[00.Exerciese.2022]\C>x
  3. ===============录入学生成绩===============
  4. 学号: 100
  5. 姓名: xyz
  6. 性别: male
  7. 出生日期(2000-10-8): 1991-06-10
  8. 学院: SWPE
  9. 系名: Explorer
  10. 专业: Geology
  11. 年级: 3
  12. 数学成绩: 98
  13. 语文成绩: 97
  14. 英语成绩: 95
  15. ===============显示学生成绩===============
  16.     学号:100
  17.     姓名:xyz
  18.     性别:male
  19. 出生日期:1991-06-10
  20.     学院:SWPE
  21.     系名:Explorer
  22.     专业:Geology
  23.     年级:3
  24.     数学:98
  25.     语文:97
  26.     英语:95

  27. D:\[00.Exerciese.2022]\C>
复制代码

        三个问题:
1、char 只能容纳 1 个字符,容纳字符串需要足够大的储存空间,所以,需要使用字符数组。
2、scanf("%s" , p)  字符数组的名称本身就已经是内存地址,所以,直接写字符数组的名称(P)就好,不用再取其地址(& p)。
3、最后显示那行,printf() 中的10 个格式描述符对应了 11 个显示参数,造成个别参数与格式描述符之间发生了错位,由于 11 个参数的类型并不相同,结果,本来是字符串的变量 zhuanye 被使用格式描述符 "%d" 进行了显示,结果,看到的是莫名其妙的数字,其实,这个数字是变量 zhuanye 的内存地址(32 位程序的情形,如果是 64 位,看到的只是 64 位地址中的 32 位)。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-23 12:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表