C语言错题记录1

这篇博客记录了C语言编程中遇到的问题,包括处理10个学生数据时,出现的分数显示为0及多余输入未计入的情况。错误原因在于double型输入输出格式不正确以及printf函数使用不当。
摘要由CSDN通过智能技术生成

C语言错题记录1

问题描述

10个学生,每个学生的数据包括学号,姓名,3门课的成绩。对其进行处理

代码

#import <Foundation/Foundation.h>
#include<stdio.h>
#include<string.h>
#define n 10   //十个学生
struct student //定义结构体变量
{
    char name[20];
    int num;
    double score[3];
    double average;
}student1[n];

int main()
{
    int i,j;
    FILE *fp;
    fp=fopen("./aa.txt","w");
    for(i=0;i<n;i++)
    {
    printf("请输入%d学生的信息\n",i+1);
    scanf("%d%s%lf%lf %lf",&student1[i].num,student1[i].name,&student1[i].score[0],&student1[i].score[1],&student1[i].score[2]);//地址常量  可不加&
    }
    //打印出各学生的信息
    for(i=0;i<n;i++)
    {
        printf("输出各学生信息:");
        printf("%d%s%f%f%f",student1[i].num,student1[i].name,student1[i].score[0],student1[i].score[1],student1[i].score[2]);
    }

    //找出成绩最高的那个学生并输出其信息
    double max=student1[0].average;
    
    int row=0;
    
    for(i=0;i<n;i++)
    {
        if(max<student1[i].average)
        {
            max=student1[i].average;
            
        }
        row=i;
    }
    //各科平均成绩
    double average_ever[3];//定义一个存放3门课的平均成绩的数组
    int sum=0;
    for(j=0;j<3;j++)
    {
        for(i=0;i<n;i++)
        {
            sum=sum+student1[i].score[j];
        }
        average_ever[j]=sum/n;
        sum=0;
    }
    for(int d=0;d<3;d++)//输出各门课的平均成绩
    {
        printf("第%d门课的平均成绩依次为\n",d+1);
        printf("%.1f\n",average_ever[d]);
        fprintf(fp,"第%d门课的平均成绩依次为\n",d+1);
        fprintf(fp,"%.1f\n",average_ever[d]);
    }
    printf("最高分的学生的数据\n");  //
    printf("%d %s %f %f %f\n",student1[row].num,student1[row].name,student1[row].score[0],student1[row].score[1],student1[row].score[2]);
    fprintf(fp,"最高分的学生的数据\n");  //
    fprintf(fp,"%d%s %f%f%f\n",student1[row].num,student1[row].name,student1[row].score[0],student1[row].score[1],student1[row].score[2]);
    fclose(fp);
    return 0;
}

过程中的问题

  • 问题1: 现实的分数信息为0
  • 问题2: 多输入了一个成绩 但是 没记入

错误原因

  1. double型 输入为 lf 输出f
  2. printf 手贱打了& 作死系列!!
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值