#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
void faill (int arry[10][6], int f[], int a, int b)
{
f={};
for (int i=0;i<a;i++)
for(int j=0;j<b;j++)
if(arry[i][j]<60)
f[i]++;
}
int main()
{
srand(time(0));
int student=10, test=6;
int grade[student][test];
int fail[10]={};
for(int i=0;i<student;i++)
for(int j=0;j<test;j++)
grade[i][j]=rand()%101;
faill(grade[10][6],fail,student,test);
for (int x=0;x<student;x++)
{
cout<<"Student "<<x+1<<" : ";
for (int y=0;y<test;y++)
cout<<grade[x][y]<<" ";
cout<<"(failed "<<fail[x]<<" subjects)"<<endl;
}
return 0;
}
此代码有以下错误:
| 24 | error:来自&#39; int&#39;的无效转换到&#39; int(*)[6]&#39; [-fpermissive] |
| 6 |注意:初始化&#39; void faill(int()[6],int ,int,int)&#39; |
的参数1答案 0 :(得分:0)
for(int i=0;i<student;i++)
for(int j=0;j<test;j++)
grade[i][j]=rand()%101;
faill(grade,fail,student,test);
当你通过成绩[10] [6]时,你正在将一个int传递给你没有分配的记忆。这将是第11和第7个元素。
您需要将数组传递给该函数,如上所示。
答案 1 :(得分:0)
给出函数原型:
void faill (int arry[10][6], int f[], int a, int b);
然后至少你的调用代码不正确:
faill(grade[10][6],fail,student,test); // grade[10][6] wrong
因为grade[10][6]
是int
而不是数组 - 这是解析函数所需的内容faill
您需要将其更改为:
faill(grade,fail,student,test);