关于#c语言#的问题,如何解决?

只能输出两组printf scanf

#include
struct Student
{
    char name[20];
    int num;
    float math;
    float english;
    float c;
 } student1;
 int main()
 {

    printf("请输入该学生的姓名:");
    scanf("%s",student1.name);
    printf("请输入该学生的学号:");
    scanf("%d",student1.num);
    printf("请输入该学生的高数成绩:");
    scanf("%f",student1.math);
    printf("请输入该学生的英语成绩:");
    scanf("%f",student1.english);
    printf("请输入该学生的c语言成绩:");
    scanf("%f",student1.c);
    printf("该学生的姓名为:%s",student1.num );
    printf("");
    return 0; 
 }

img

在用于读取学生编号和成绩的scanf函数调用中,使用了错误的格式说明符。%d格式说明符用于读取整数,这是一种浮点类型。类似地,%f格式说明符用于读取浮点数,但使用它来读取学生名,这是一个字符串。

#include<stdio.h>

struct Student
{
    char name[20];
    float num;
    float math;
    float english;
    float c;
 } student1;

int main()
{
 
    printf("请输入该学生的姓名:");
    scanf("%s",student1.name);
    printf("请输入该学生的学号:");
    scanf("%f",&student1.num);
    printf("请输入该学生的高数成绩:");
    scanf("%f",&student1.math);
    printf("请输入该学生的英语成绩:");
    scanf("%f",&student1.english);
    printf("请输入该学生的c语言成绩:");
    scanf("%f",&student1.c);
    printf("该学生的姓名为:%s", student1.name);
    printf("该学生的学号为:%.2f", student1.num);
    return 0; 
 }

望采纳。

printf("该学生的姓名为:%s",student1.num );
修改为
printf("该学生的学号为:%d\n", student1.num);