牛肉我刚开始 发表于 2022-5-6 11:12:20

c语言,好朋友们帮帮忙!

题目:编程输入5位学生信息后再输出这5位学生信息,学生信息包括学
号,姓名,成绩,求学生成绩的最高分、最低分和平均分。(要求
学生定义为结构体类型)
代码:
#include <stdio.h>
#define N 2                                 //为了简便定义两个学生
struct student
{
    char xuehao;
    char name;
    char sex;
    int age;
    float score;
};
void main()
{
    struct student stu;
    int i;
    float ave,max,sum=0,min;
        printf("请输入学生的学号、名字、性别、年龄、成绩\n");
    for(i=0;i<=N-1;i++)
    scanf("%s%s%c%d%f",&stu.xuehao,&stu.name,&stu.sex,&stu.age,&stu.score);
      for(i=0;i<=N-1;i++)
      printf("%s%s%c%d%f",stu.xuehao,stu.name,stu.sex,stu.age,stu.score);
                max=min=stu.score;
      for(i=0;i<=N-1;i++)
      sum+=stu.score;
      ave=sum/2;
      printf("平均分:%f\n",ave);
      for(i=0;i<=N-1;i++)
      if(stu.score>max)\
                        max=stu.score;
      printf("最高:%f\n",max);
          for(i=0;i<=N-1;i++)
          if(stu.score<min)
          min=stu.score;
          printf("最低分:%f\n",min);
}

傻眼貓咪 发表于 2022-5-6 11:43:41

#include <stdio.h>
#define N 5

typedef struct
{
        char id, name, gender;
        int age;
        float score;
}Student;

int main() { // 这不是单片机,这里用 int main() 不是 void
        Student stu;
        float max = -1, min = 101, sum = 0;
        printf("请输入学生的学号、名字、性别、年龄、成绩\n");
        for(int i = 0; i < N; ++i) {
                scanf("%s%s %c%d%f",
                stu.id, // 注意这里没有 '&' 符
                stu.name, // 注意这里没有 '&' 符
                &stu.gender,
                &stu.age,
                &stu.score);
                max = max > stu.score ? max : stu.score;
                min = min < stu.score ? min : stu.score;
                sum += stu.score;
        }
        printf("平均分: %.2f\n", sum / N);
        printf("最高分: %.2f\n", max);
        printf("最低分: %.2f\n", min);
        return 0;
}

牛肉我刚开始 发表于 2022-5-6 14:58:12

傻眼貓咪 发表于 2022-5-6 11:43


谢谢了,我明白哪里错了

#include <stdio.h>
#define N 2                                 //为了简便定义两个学生
struct student
{
    char xuehao;
    char name;
    char sex;
    int age;
    float score;
};
void main()
{
    struct student stu;
    int i;
    float ave,max,sum=0,min;
      printf("请输入学生的学号、名字、性别、年龄、成绩\n");
    for(i=0;i<=N-1;i++)
    scanf("%s%s%c%d%f",&stu.xuehao,&stu.name,&stu.sex,&stu.age,&stu.score);//在这里改为 scanf("%s %s %c %d %f",&stu.xuehao,&stu.name,&stu.sex,&stu.age,&stu.score);,让%s%s%c%d%f中间有个空格就可以了
      for(i=0;i<=N-1;i++)
      printf("%s%s%c%d%f",stu.xuehao,stu.name,stu.sex,stu.age,stu.score);
                max=min=stu.score;
      for(i=0;i<=N-1;i++)
      sum+=stu.score;
      ave=sum/2;
      printf("平均分:%f\n",ave);
      for(i=0;i<=N-1;i++)
      if(stu.score>max)\
                        max=stu.score;
      printf("最高:%f\n",max);
          for(i=0;i<=N-1;i++)
          if(stu.score<min)
          min=stu.score;
          printf("最低分:%f\n",min);
}

傻眼貓咪 发表于 2022-5-6 15:07:31

牛肉我刚开始 发表于 2022-5-6 14:58
谢谢了,我明白哪里错了

#include


好的

扶风之木 发表于 2022-5-23 22:42:01

傻眼貓咪 发表于 2022-5-6 11:43


请问在单片机里为什么要强调是void,而不是int。求解答谢谢

傻眼貓咪 发表于 2022-5-24 08:18:56

扶风之木 发表于 2022-5-23 22:42
请问在单片机里为什么要强调是void,而不是int。求解答谢谢

这可能跟单片机的硬件有关吧,它的设计就是主函数无返回值,用 void main() 作为主函数,像其它厂牌的开发板也有各自不同的主函数,如 Arduino 则是用 void setup() 作为初始函数,void loop() 作为主函数。虽然都可用C语言编写代码,但还是有些许不同。

扶风之木 发表于 2022-5-24 09:17:58

傻眼貓咪 发表于 2022-5-24 08:18
这可能跟单片机的硬件有关吧,它的设计就是主函数无返回值,用 void main() 作为主函数,像其它厂牌的 ...

谢谢。额 这又产生了一个问题:主函数有没有返回值对整个程序应该没有影响吧

傻眼貓咪 发表于 2022-5-24 10:22:09

扶风之木 发表于 2022-5-24 09:17
谢谢。额 这又产生了一个问题:主函数有没有返回值对整个程序应该没有影响吧

如果不是单片机或其它硬件程序,标准 C 语法从来没有 void main() 这种主函数的,int main() 才是 C 主函数。

扶风之木 发表于 2022-5-25 09:13:34

傻眼貓咪 发表于 2022-5-24 10:22
如果不是单片机或其它硬件程序,标准 C 语法从来没有 void main() 这种主函数的,int main() 才是 C 主函 ...

嗯嗯明白了谢谢
页: [1]
查看完整版本: c语言,好朋友们帮帮忙!