列出c

时间:2018-11-10 21:29:50

标签: c arrays numeric

我正在编写一个简单的程序,该程序获取成绩列表并在c中输出及格成绩,并列出列表中的所有成绩(10个成绩)。

计算及格分数的数量并打印它们的功能很好。

我遇到问题的地方是使用printf打印数组的内容。

这是我输入数组的方式:

int grades[10] = {70, 80, 95, 65, 35, 85, 54, 78, 45, 68};

当前我正在使用此功能(有效):

printf ("These are the grades: %d, %d, %d, %d, %d, %d, %d, %d, %d, %d \n", grades[0], grades[1], grades[2], grades[3], grades[4], grades[5], grades[6], grades[7], grades[8], grades[9]);

它列出了数组的内容,但是我确信必须有一种更优雅的方式来打印列表,而无需专门指向数组的每个元素。

还有我不知道的更优雅的解决方案吗?

我确实搜索了主题,但是找不到答案,如果这是重复的话,很抱歉。

2 个答案:

答案 0 :(得分:0)

您需要编写一个函数来接收成绩作为参数并打印出来!

void print_array(int* grades, int size) {
   for(int i = 0; i  < size; i++) {
     printf("%d", grades[i]);
   }
}

答案 1 :(得分:0)

使用控制循环(在本例中为for)来打印您要定位的任意数量的项目。给定要打印的N个项目的数组,下面的示例对此进行了演示(并产生您所需的确切输出):

int grades[N]; // initialized here or filled later

printf("These are the grades: %d", grades[0]);
for (int i = 1; i  < N; i++) 
    printf(", %d", grades[i]);
fputc('\n', stdout);

请注意,此方法允许您在纸上欠打印。您不必打印所有内容。例如,假设您有一个数组,它可以容纳M个项目,但仅容纳N(其中0 <= N <= M个)。然后只需更改现有算法,以解决可能更少的项目(包括所有项目):

if (N > 0)
{
    printf("These are the grades: %d", grades[0]);
    for (int i = 1; i  < N; i++) 
        printf(", %d", grades[i]);
    fputc('\n', stdout);
}

您可以找到有关for循环here以及C语言的许多其他属性的更多信息。保持联系;值得收藏。