c语言 - 未定义对'WinMain'的引用 [错误] ld 返回 1 个退出状态,将矩阵作为函数中的参数传递



我开始学习C语言编程,我有这个任务,我必须在另一个文件上编写一个带有部分代码的程序。但是我在最后一部分遇到了问题,因为我使用的是矩阵。

这是主体:

#include <stdio.h>
#include "otsenkatry.c"
int main()
{
int i, j;
int a[i];
int s, gru;
char A, B, C, D, E;
printf("Introduce the number os students ", &s);
fflush(stdout);
scanf("%d", &s);
printf("Introduce their gradesn");
fflush(stdout);
for (i = 0; i<s; i++)
{ 
printf("a[%d] = ", i); 
fflush(stdout);
scanf("%d", &a[i]);
printf("Grade: %d  %d n", a, otsenkatry(a));
fflush(stdout);//}
}
return 0;                       
}

这就是问题的部分:

int otsenkatry (int* a)
{
int i;
int gru;
if (a[i]<51)
{   
gru=2;
}
if (a[i]>50 && a[i]<69)
{
gru=3;
}
if (a[i]>69 && a[i]<=85)
{
gru=4;
}
if (a[i]>85 && a[i]<=100)
{
gru=5;
}
return gru;                         
}

我想,这与指针有关,但我不知道如何改变它。

矩阵具有未定义的大小:

int i, j;
int a[i];

要正确声明矩阵a[],您需要传递大小 -i变量的值。不幸的是,i变量在上面一行声明,没有用任何值进行初始化。

您的代码存在一些问题:

  • 数组a未正确声明
  • 打印数组a而不是整数
  • otsenkatry的参数是数组,但应该是一个整数
  • 包括一个 .c 文件
  • otsenkatry中使用未定义的i值作为数组索引
  • 第一个printf中的参数 &s 无效
  • otsenkatry功能可以简化
  • 变量jgruABCDE在 main 中定义,但从未使用

下面是一个更正的实现:

#include <stdio.h>

int otsenkatry (int v) {
if (v<51)
return 2;
if (v<69)
return 3;
if (v<=85)
return 4;
if (v<=100)
return 5;
return 0;
}

int main(){
int i, a[100], s;
printf("Introduce the number of students ");
fflush(stdout);
scanf("%d", &s);
if (s > 100)
s = 100;
printf("Introduce their gradesn");
fflush(stdout);
for (i = 0; i<s; i++) { 
printf("a[%d] = ", i); 
fflush(stdout);
scanf("%d", &a[i]);
printf("Grade %d: %d n", a[i], otsenkatry(a[i]));
fflush(stdout);
}
return 0;                       
}