首页 > 解决方案 > 浮点数组的每个元素的总和似乎不起作用

问题描述

所以,感谢您在我的代码以前的问题中提供的帮助。但在这里我遇到了另一个问题。我希望这是最后一个。我不知道为什么 C 对我来说一直很痛苦。我真的更喜欢 Python。无论如何,这里的问题是浮点数组似乎没有存储输入值,因为当我尝试将所有值相加到“promedio”变量中时,结果不会为零。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int main(void){
    printf("Este programa captura el nombre de un alumno \n");
    printf  ("y cuatro de sus materias y sus respectivas notas\n");
    printf      ("Nota: El programa solo toma en cuenta los dos primeros\n");
    printf          ("decimales de la notas expresada.\n\n");
    
    char alumno[40];
    char mat[4][20];
    float calif[4];
    float promedio;
    char beca[50];
    int i;
    
    printf("Ingresa el nombre del alumno: ");
    fgets(alumno, 40, stdin);
    
    while (strcmp(alumno,"\n") == 0){
        printf("\nError. El alumno debe de llevar un nombre.");
        printf  ("\nTrata nuevamente\n\n");
        printf("Ingresa el nombre del alumno: ");
        fgets(alumno, 40, stdin);
    }
    
    for(i = 0; i < 4; ++i){
        
        printf("Ingresa el nombre de la materia %d: ", i+1);
        fgets(mat[i], 20, stdin);
        
        while (strcmp(mat[i], "\n") == 0){
            printf("\nError. Las materias deben ser declaradas.");
            printf  ("\nTrata nuevamente.\n\n");
            printf("Ingresa el nombre de la materia %d: ", i+1);
            fgets(mat[i], 20, stdin);
        };
        
        printf("Ingrese la nota correspondiente a esta materia (0-10): ");
        scanf("%f", &calif[i]);
        getchar();
        
        float promedio = promedio + round(calif[i]*100);
        
        while (calif[i]<0 || calif[i]>10){
            printf("\nError. Debe ingresar una nota entre 0 y 10.");
            printf  ("\nTrata nuevamente.\n\n");
            printf("Ingrese la nota correspondiente a esta materia (0-10): ");
            scanf("%f", &calif[i]);
            getchar();
        };
    };
    
    promedio = promedio / 4 / 100;
    
    if(promedio<8){
        char beca[] = "No cumple el promedio para tener derecho a beca";
        if(promedio>= 8 && promedio < 9){
            char beca[] = "30%";
            if(promedio>=9 && promedio<=10){
                char beca[] = "50%";
            }
            else{
                printf("Error en el cálculo de la beca");
            };
        };
    };
    
    printf("%.2f", &promedio);
    printf("%s", &beca);
    return 0;
};

标签: arrayscsum

解决方案


推荐阅读