打印2D阵列名称和成绩

时间:2015-09-18 05:03:32

标签: c arrays multidimensional-array

我的项目需要我添加名称然后分级,每个人在每个分配之间交替。所以我输入学生人数,然后是作业数量,学生姓名,然后是成绩。

我的问题是我的打印功能是在一列中直接打印等级而不是按行打印。我想我错过了什么,我的打印功能叫做print_report。

#include <stdio.h>
#include <string.h>

int numStus;
int numGrades;

// Get students names
void get_students(char stuNames[numStus][10])
{
  int i;
  int j;

  for (i=0; i<numStus; i++)
  {
    printf("Enter the students name.");
    scanf("%s", &stuNames[i]);
  }
}

// enter each students grades
void get_grades(int grades[numGrades][numStus], char stuNames[numStus]    [10])
{
  int x;
  int z;

  for (x=0; x < numGrades; x++)
  {
    for (z = 0; z < numStus; z++)
    {
      printf("Enter score for %s assignment %d:  ", stuNames[z],x);
      scanf("%d", &grades[x][z]);
    }
  }
}

void calc_grades( );
void print_report(int grades[numGrades][numStus], char stuNames[numStus] [10])
{
  int i;
  int j;
  int k;

  for(i = 0; i < numStus; i++)
  {
    printf("%s   ",stuNames[i]);
  }
  printf("\n");
  for(j = 0; j < numGrades; j++)
  {
    for(k = 0; k < numStus; k++)
    {
      printf("%6i",grades[j][k] );
      printf("\n");
    }
  }
}

int main()
{
  printf("How many students?");
  scanf("%d", &numStus);
  printf("How many assignments?");
  scanf("%d", &numGrades);

  // Ask how many students

  // Ask how many assignments

  // Initializations...
  char stuNames[numStus][10];
  int grades[numGrades][numStus];
  char finalGrades[numStus];

  //Get Student Names
  get_students(stuNames);
  get_grades(grades, stuNames);
  print_report(grades, stuNames);

  int x;
  int z;

  // Get Grades

  // Calculate Final Grades

  // Print Report

  return 0;
}

1 个答案:

答案 0 :(得分:2)

您需要做的就是查看print_report函数。将嵌套for循环外的printf(“\ n”)语句移动到外部for循环。像这样:

for(j = 0; j < numGrades; j++)
{
    for(k = 0; k < numStus; k++)
    {
    printf("%6i",grades[j][k] );
    }
    printf("\n");
}

我不确定这是否是您遇到的问题,但我的直觉告诉我它是。