【问题标题】:Listing numerical contents of an array in c在c中列出数组的数字内容
【发布时间】:2018-11-10 21:29:50
【问题描述】:

我正在编写一个简单的程序,它获取一个成绩列表并在 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]);

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

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

我确实搜索了主题,但无法找到答案,如果这是重复的,请见谅。

【问题讨论】:

  • 您需要编写一个函数,接收成绩作为参数并打印出来!
  • 使用 loop 让我想起了。坦率地说,我很好奇这些成绩是如何输入没有的(否则解决方案会很明显)。

标签: c arrays numeric


【解决方案1】:

使用控制循环(在本例中为 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 &lt;= N &lt;= 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 语言的许多其他属性的信息。保留该链接;值得收藏。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-05
      • 2012-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多