帮忙解决个C语言 问题

来源:百度知道 编辑:UC知道 时间:2024/04/30 12:35:20
问题:
定义一个长度为8的数组,循环输入8门成绩保存在数组里,然后
将及格的分数输出;

(输入成绩过程中保证成绩必须在0--100之间,如果输入错误该成绩无效要求重新输入。)

我写的是:
#include"stdio.h"
main()
{
int a[8], i;
for(i=1;i<=8;i++)
{
scanf("%d",&a[i]);
if(a[i]<0||a[i]>100)
{
printf("输入不合法,请从新输入");
i--;
}

}

if(a[i]>=60)
printf("%d\n",a[i]);
}
运行起来输入后就显示程序遇到问题 然后就关闭了, 希望高手帮我看看哪写错了,并纠正

main()
{
int a[8], i;
for(i=0;i<8;i++) //原先这里越界了
{
scanf("%d",&a[i]); //a[8] 不是a的元素
if(a[i]<0||a[i]>100)
{
printf("输入不合法,请从新输入");
i--;
}

}

printf("以下是及格的:\n");
for(i=0;i<=7;i++) //这里需要循环输出
{
if(a[i]>=60)
printf("%d\n",a[i]);
}

}

#include"stdio.h"
main()
{
int a[8], i;
for(i=0;i<8;i++)
{
scanf("%d",&a[i]);
if(a[i]<0||a[i]>100)
{
printf("输入不合法,请从新输入");
i--;
}

}
for(i=0;i<8;i++)
{if(a[i]>=60)
printf("%d\n",a[i]);
}
}

首先循环的地方有问题,数组是从A〔0〕开始,所以循环要从i=0开始,还有,最后的输出及格分也应该是个循环,加个FOR语句就对了

for(i=1;i<=8;i++) // 数组下标从0开始索引。。汗

改成for(i = 0; i < 8; i++)

而且显示部分也缺个循环

#include"stdio.