c-如何检查二维数组行中的元素,存储它们,并进行比较



我一直在尝试检查2D数组的一行中的元素,并将这些元素存储在一个变量中,以便使用该变量进行比较。我迷失在如何检查元素和将其存储在变量中之间。

我写了这么多:

#include<stdio.h>
#include<conio.h>
int main()
{
int array1[10][10];
int row, column, num, found = 0, passMark = 60, fail = 0;
printf("How many rows and columns needed: ");
scanf("%d %d", &row, &column);
printf("nHow many students marks you want to enter: ");
scanf("%d", &num);
printf("nEnter %d students marks: ", num);
for(int i=0; i<row; i++)
{
for(int j=0; j<column; j++)
{
scanf("%d", &array1[i][j]);
}
}
for(int i=0; i<num; i++)
{
// int passMark = array1[i][0];
for(int j=1; j<num; j++)
{
if(array1[i][j] >= passMark)
{
passMark = array1[i][j];
}
/*else
{
min = array1[i][j];
}*/
}
printf("nYes!");
// found = 0;
}
return 0;
}

代码出现了一些问题。

  1. 您要求用户输入row/column,但您已经声明了一个静态大小为10 * 10的数组。

    如果您希望大小由用户决定,则应该使用动态数组并使用malloc()free()

  2. 当您检查时,您从j = 1开始跳过一个标记,您应该从0开始。

  3. 你似乎又在问你想增加多少学生和每个学生多少分数,但你已经得到了这些信息。rows表示学生,columns表示每个学生的分数。

你应该寻找这样的东西,但这也是我的猜测,问题还很不清楚。

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int **array1;
int row, column, num, found = 0, passMark = 60, fail = 0;
printf("How many students and how many marks per student?n");

if (scanf("%d %d", &row, &column) != 2)
{
/* conversion failed */
exit(EXIT_FAILURE);
}
array1 = malloc(row * sizeof(int *));

if (array1 == NULL)
{
exit(EXIT_FAILURE);
}
for (int i = 0; i < row; i++)
{
array1[i] = malloc(column * sizeof(int));
if (array1[i] == NULL)
{
/* allocation failed - exit / display error */
exit(EXIT_FAILURE);
}
}
printf("nEnter %d students marks: ", row);
for (int i = 0; i < row; i++)
{
for (int j = 0; j < column; j++)
{
if (scanf("%d", &array1[i][j]) != 1)
{
exit(EXIT_FAILURE);
}
}
}
for (int i = 0; i < row; i++, fail = 0)
{
printf("Student's %d grades:n", i + 1);
for (int j = 0; j < column; j++)
{
if (array1[i][j] >= passMark)
{
printf("Passed class %d with grade : %dn", j + 1, array1[i][j]);
}
else
{
printf("Failed class %d with grade : %dn", j + 1, array1[i][j]);
fail++;
}
}
printf("Student %d failed %d classes", i + 1, fail);
}
return 0;
}

最新更新