c - 为什么我的程序输出内存地址?

标签 c function memory-address

该程序的目标是使用函数创建一个包含输入的学生 ID 及其考试成绩的表格。然后,测试成绩将转换为字母成绩。我的问题是程序输出内存而不是输入的数字。我知道我在某个地方犯了错误,但我似乎无法弄清楚。任何帮助是极大的赞赏。

#include <stdio.h>

#define NUM 12

void obtain_id_scores (int [], int []);
void get_letter_grade (char [], int []);
void display_results (int [], int [], char []);

int main (void)
{
    int student_id [50];
    int test_score [50];
    char letter_grade [50];

    obtain_id_scores (student_id, test_score);
    get_letter_grade (letter_grade, test_score);
    display_results (student_id, test_score, letter_grade);

    return 0;
} /* End Main. */


void obtain_id_scores (int student_id [], int test_score [])
{
    int x;

    for (x = 1; x <= NUM; ++x)
    {
        printf (" Enter student ID and test grade: ");
        scanf ("%s %s", &student_id [x], &test_score [x]);
        fflush (stdin);
    }   
}


void get_letter_grade (char letter_grade [], int test_score [])
{
    int x;

    for (x = 1; x <= NUM; ++x)
    {
        if (test_score [x] > 100)
        letter_grade [x] = 'N';
        else if (test_score [x] >= 90)
        letter_grade [x] = 'A';
        else if (test_score [x] >= 80)
        letter_grade [x] = 'B';
        else if (test_score [x] >= 70)
        letter_grade [x] = 'C';
        else if (test_score [x] >= 60)
        letter_grade [x] = 'D';
        else
        letter_grade [x] = 'F';
    }
}

void display_results (int student_id [], int test_score [], char letter_grade [])
{
    int x;

    /* Display Results */

    printf ("           Student Grade Report\n");
    printf ("          ---------------------\n\n");
    printf ("   ID        TEST SCORE   LETTER GRADE\n");

    /* Display all IDs, test scores, and letter grades. */

    for (x = 1; x < NUM; ++x)
    {
        printf ("%6i       %6i     %8c\n", student_id[x], test_score[x], letter_grade[x]);      
        }
}

最佳答案

scanf("%s %s"..将输入的文本存储为字符串,并且您将它们存储到ints中。

使用

scanf ("%d %d" ...

接受数字形式的输入。

关于c - 为什么我的程序输出内存地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22751479/

相关文章:

matlab - 高斯消元法不起作用

c++ - 关于 C++ 中模板上重载运算符的一些编译器错误

c - 指针的原因是指向第二种情况下字符串文字的最后一个字符

c - 各种平台上的指针地址跨度

c - 了解获取内存位置的两段代码

使用 atoi/sprintf 将整数转换为字符串

c - 物理载波监听返回的数据存储在哪里?

python - 如何编写一个像 list(zip(...)) 一样工作的函数?

c - 使用 GCC 语句表达式的匿名函数

c - posix 的线程优先级