这是一个用于制作成绩的相对简单的程序。
我的程序在尝试完成最后一个循环时崩溃,特别是在最后一次中期输入时。这里有什么帮助吗?
#include <stdio.h>
#include <string.h>
#define ARRAYSIZE 2
int main(void)
{
char studentID[ARRAYSIZE][10];
int midterm[ARRAYSIZE];
int fina[ARRAYSIZE];
int i=0;
double overall[ARRAYSIZE];
for (i=0;i<ARRAYSIZE;i++)
{
printf("\nInput Student ID:");
scanf("%s",&studentID[i][10]);
printf("\nInput midterm score:");
scanf("%d",&midterm[i]);
printf("\nInput final score:");
scanf("%d",&fina[i]);
overall[i]=midterm[i]*0.3+fina[i]*0.7;
}
printf("\nStudent ID MidTerm Final Overall\n");
for (i=0;i<ARRAYSIZE;i++)
{
printf("%s%5d%5d%5f",studentID[i][10],midterm[i],fina[i],overall[i]);
}
return 0;
}
返回的过程是-1073741819(0xC0000005)。感谢。
答案 0 :(得分:3)
错误在最终的printf语句中,特别是&#39; studentID [i] [10]&#39;在这里,您正在访问非法索引的元素(在您的情况下,0到9是合法的)
答案 1 :(得分:0)
请试试这个 //声明
int ARRAYSIZE=2;
char studentID[ARRAYSIZE][10];
//然后,您需要将字符串输入数组
int i;
for (i=0; i<ARRAYSIZE; i++) {
scanf ("%s" , studentID[i]);
} //在oreder打印它们使用
for (i=0; i<ARRAYSIZE; i++) {
printf ("%s" , studentID[i]);
}