gpt4 book ai didi

c - for循环在一次迭代后离开

转载 作者:太空宇宙 更新时间:2023-11-04 05:15:03 25 4
gpt4 key购买 nike

我遇到了这个问题,但我不明白为什么。我之前使用完全相同的循环来测试它(没有内部代码)并且它有效。我不是编程新手(尽管是 c 新手),但现在我绝对感觉自己像个编程新手。我用硬编码数字替换了长度,没有改变任何东西。 jobStatus() 也只使用一个工作正常的 for 循环。感谢您的帮助!

PS:不要介意 if/else-if 部分。这只是一个绝望的举动,因为我找不到问题,我知道我不需要最后一个 else if 等。

提前致谢

#include <stdio.h>
#include <stdlib.h>

short jobs[] = {6,13,7,3,4,9,10,11};
short table[13][10];
short Q,i,j,k,diff;
short sum;

void jobStatus(short a){
printf("Jobstatus:");
for(i=0;i<a;i++){
printf(" %i",jobs[i]);
} printf("\n");
}

int main(){
// berechne Anzahl der Jobs
short length = sizeof(jobs)/2;
printf("Jobs: %i\n", length);

/* für alle Quanten Q
for(Q=0;Q<13;Q++){
// schreibe das jeweilige Quantum in die erste Spalte jeder Zeile
table[Q][0]=(Q+1);
gehe jeden Job durch*/

for(i=0;i<length;i++){
printf("Current Job: %i\n", i);
/* falls der aktuelle job i bereits erledigt ist überspringe ihn
if(jobs[i]==0){
i++;
}*/
diff=jobs[i]-(Q+1);
if(diff>0){
jobs[i]=diff;
jobStatus(length);
table[Q][i+1]=diff;
} else if(diff==0){
jobs[i]=0;
} else if(diff<0){
diff=diff*(-1);
jobs[i]=0;
table[Q][i+1]+=diff;
}
}

printf("# Q P1 P2 P3 P4 P5 P6 P7 P8 Avg.Time\n");
printf("#------------------------------------\n");
for(Q=0;Q<13;Q++){
for(i=0;i<8;i++){
printf(" %i", table[Q][i]);
}
printf("\n");
}
return 0;

这是输出:

Jobs: 8//表示长度应该设置为8

工作状态:5 13 7 3 4 9 10 11

Q P1 P2 P3 P4 P5 P6 P7 P8 平均时间

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

最佳答案

您只有一个全局变量 i 用于两个 for 循环(在 jobstatus 和您的 main 中)。因此,一旦您在主循环中调用 jobstatus(length);,变量的内容将被更改,然后循环终止(因为 i 然后被设置为 长度).

关于c - for循环在一次迭代后离开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5841336/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com