首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >调试程序

调试程序
EN

Stack Overflow用户
提问于 2012-08-09 03:07:21
回答 2查看 146关注 0票数 0

我的程序快完成了。问题是,我在调试指针时遇到了一些小问题。我想要一些关于我如何修复它的帮助。注意,遗憾的是,我确实需要所有的函数原型。(如果我可以在main中做所有事情,那么任务会容易得多……)

代码语言:javascript
运行
复制
#include <stdio.h>
#include <stdlib.h>

#define STUDENTS 5

int getData(int *student, char *pass, int *hw1, int *hw2, int *hw3, int *hw4,
             int *hw5, int *hw6, int *hw7, int *mid1, int *mid2, int *final,
             int *extra);
float calcAvg(float *total);
float printTable(int student, float total);

int main(void)

{
    int student[STUDENTS];
    char pass[STUDENTS];
    int hw1[STUDENTS], hw2[STUDENTS], hw3[STUDENTS], hw4[STUDENTS], hw5[STUDENTS], hw6[STUDENTS], hw7[STUDENTS];
    int mid1[STUDENTS], mid2[STUDENTS];
    int final[STUDENTS];
    int extra[STUDENTS];
    float total[STUDENTS];

    getData(student, pass, hw1, hw2, hw3, hw4, hw5, hw6, hw7,
            mid1, mid2, final, extra);
    calcAvg(total);
    printTable(student, total);

system("pause");
return 0;
}

int getData(int *student, char *pass, int *hw1, int *hw2, int *hw3, int *hw4,
             int *hw5, int *hw6, int *hw7, int *mid1, int *mid2, int *final,
             int *extra)
{
    FILE *fpIn;
    int i;

    fpIn = fopen("data.txt", "r");
    if (!fpIn)
    {
        printf("File does not exist.");
        system("pause");
        exit (101);
    }

    for (i=0; i<STUDENTS; i++)
    {
        fscanf(fpIn, "%d", &student[i]);
        fscanf(fpIn, "%c", &pass[i]);
        fscanf(fpIn, "%d %d %d %d %d %d %d", hw1[i], hw2[i], hw3[i], hw4[i], hw5[i], hw6[i], hw7[i]);
        fscanf(fpIn, "%d %d", mid1[i], mid2[i]);
        fscanf(fpIn, "%d %d", final[i], extra[i]);
    }

    return;
}

float calcAvg(float *total)
{
    int hwtotal[STUDENTS], midtotal[STUDENTS];
    int i;

    for (i=0; i<STUDENTS; i++)
    {
        hwtotal[i] = hw1[i]+ hw2[i]+hw3[i]+hw4[i]+hw5[i]+hw6[i]+hw7[i];
        midtotal[i] = mid1[i]+mid2[i];
        total[i] = (hwavg[i]+midavg[i]+final[i]+extra[i])/3;
    }

    return total;
}

float printTable(int student, float total)
{
    int i;

    printf("==== ======= =======\n");
    printf(" ID   Score   Grade\n");
    printf("==== ======= =======\n");

    for(i=0; i<STUDENTS; i++)
    {
        printf("%d .1f  ", student[i], total[i]);

        if (total>90)
        printf("A\n");
        else if(total>80);
        printf("B\n");
        else if (total>70);
        printf("C\n");
        else if (total>60);
        printf("D\n");
        else
        printf("F\n");
    }

    return;
}
EN

回答 2

Stack Overflow用户

发布于 2012-08-09 03:25:47

我建议您创建一个结构来封装学生的所有信息,而不是为您存储的每个数据使用不同的数组。

代码语言:javascript
运行
复制
struct{ 
   int studentId;
   char pass;
   int hw[7]
   int mid[2];
   int final;
   int extra;
   float total;
} student;

 student mystudents[STDENTS];

无论您的问题是什么,使用更紧凑的数据结构将更容易检测到,如果必须进行任何更改,也会更容易。

票数 2
EN

Stack Overflow用户

发布于 2012-08-09 03:38:06

嗯,你没有描述你的问题,但看起来这部分可能会导致问题。

代码语言:javascript
运行
复制
int getData(...) {
    ...
    fscanf(fpIn, "%d %d %d %d %d %d %d", hw1[i], hw2[i], hw3[i], hw4[i], hw5[i], hw6[i], hw7[i]);
    fscanf(fpIn, "%d %d", mid1[i], mid2[i]);
    fscanf(fpIn, "%d %d", final[i], extra[i]);
    ...
}

您正在将int%s传递给需要int *%s的fscanf

代码语言:javascript
运行
复制
fscanf(fpIn, "%d", &student[i]);
fscanf(fpIn, "%c", &pass[i]);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11871435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档