C语言(数组问题),求大佬指教!

#include<stdio.h>#definenumber5intmain(void){inti;intsnum=0;inttensu[number];intsuccs... #include <stdio.h>
#define number 5
int main(void)
{
int i;
int snum=0;
int tensu[number];
int succs[number];

puts("请输入学生的分数:");
for(i=0;i<number;i++){
printf("%2d号:",i+1);
scanf("%d",&tensu[i]);
if(tensu[i]>=60){
succs[snum++]=i;
}
}
putchar('\n');

puts("及格学生一览表:");
puts("-----------------");
for(i=0;i<snum;i++){
printf("%3d号(%4d分)\n",succs[i]+1,tensu[succs[i]]);
}

putchar('\n');

return 0;
}

------------------------------------------------------------------------------------------------------------------------------------
问题1:succs[snum++]=i;这个代码的作用是什么?为什么snum++呢?而且还要把i的值赋给它?
问题2:第二个for语句的具体功能是什么?
求大佬指教!
-------------------------------------------------------------------------------------------------------------------------------------
展开
 我来答
咖啡巷
2019-03-13 · TA获得超过1585个赞
知道小有建树答主
回答量:3978
采纳率:70%
帮助的人:117万
展开全部
第一个++是数组中自动移到下一个值
for循环是在满足一定的条件时,重复执行同一个步骤
追问
那请问为什么这里snum要++呢?而且还要把i的值赋给它?大佬能详细说一下吗?
追答

for(i=0;i<number;i++){
printf("%2d号:",i+1);
scanf("%d",&tensu[i]);
if(tensu[i]>=60){
succs[snum++]=i;
}
}

这部分意思是循环输入5个数,每次输入一个,就判断这个数是否大于等于60,也就是是否及格了,tensu[i]这个数组放的是这5个数,succs[]这个数组就是用来放这五个数中及格的数在tensu这个数组中的位置,比如说,第一个数是68,及格了,那succs[0]=0;(此时的i=0,snum=0;)说明succs数组的第一个数记录的值就是0,而0,这个数在数组tensu中的意义是这个数组的第一个值的下标,这个执行完snumm就自加了1,变成了1,在输入第二个数,假如输入了50,此时i=2,没及格,就不用记录进去了,i+1=3了,在输入一个数,比如80,又及格了,又要记录succs数组中的第2个数值,那succs[1]=2,这里的2就是数组tensu中的第三个数,它的下标是2,以此类推

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式