为什么输出错误,循环为什么出不来

#include<stdio.h>

void main()

{

struct person

{

int id;

char name[10];

int intime;

int outtime;

int islate;

int isbefore; };

struct person p[5]={{1,"liming",900,1705,0,0}, {2,"liding",905,1705,0,0},{3,"wanghao",900,1645,0,0}, {4,"liuxiao",900,1705,0,0},{5,"jianjie",805,1705,0,0}}; enum weekday{Sun,Mon,Tus,Wed,Thu,Fri,Sat}; enum weekday day;

int i,j=0,latecount=0,beforecount=0; for(j=0;j<5;j++)

{

if(p[j].intime>900)

{ p[j].islate=1; latecount++; }

}

printf ("从键盘中输入数字0~6中任意一个:");

scanf ("%d",&i);

if(i==Sun||i==Sat)

printf ("今天是周末,没有考勤信息\n");

else

{

switch(i)

{ case Mon:printf("今天是星期%d\n",Mon);break; case Tus:printf("今天是星期%d\n",Tus);break;

case Wed:printf("今天是星期%d\n",Wed);break; case Thu:printf("今天是星期%d\n",Thu);break;

case Fri:printf("今天是星期%d\n",Fri); }

printf("迟到人员列表如下:\n");

for(j=0;j<5;j++)

{

if(p[j].islate==1) printf("%d,%s,%d,%d",p[j].id,p[j].name[10],p[j].intime,p[j].outtime);

}

printf("早退人员列表如下:\n"); }}

 

如果代码有问题,你可以加点日志输出,来判断是哪块代码有问题。

有几个小问题要改一下。输出正常的,我看你只写了迟到的逻辑,早退的还没写。

printf("%d,%s,%d,%d",p[j].id,p[j].name[10],p[j].intime,p[j].outtime);

改为

printf("%d,%s,%d,%d",p[j].id,p[j].name,p[j].intime,p[j].outtime);

如有帮助,望采纳。有问题继续沟通交流。

变量j有问题,外循环使用了j,内循环又使用了j,导致j的值被内循环修改,建议内循环换一个变量名即可。

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632