我正在尝试使用 while 函数来计算我的一个指针是否大于 0。
我需要计算返回值大于 0 的金额。
下面是我使用 while 部分的代码:
struct mode {
int m_mode_max[10];
...
}
struct gained_var {
struct mode var1[10];
...
}
struct fs_session {
struct gained_var gained[5];
...
}
void frist_gained(struct fs_session *fs, int value) {
struct itv_expanse itv[5];
memset(itv, 0, sizeof(itv));
for (int i = 0; i < 5; i++) {
int count = 0;
for (int p = 0; p < 10; p++) {
while (fs>gained[value].var1[i].m_mode_max[p] > 0) {
count++;
printf("count %d\n", count);
}
}
}
itv[value].var1[i].m_mode = fs>gained[value].var1[i].m_mode_max[rand()%count];
printf("m_mode %d rnd_value %d\n", itv[value].var1[i].m_mode, rnd()%count);
}
我可以使用 if 函数来检查计数,但我想使用 While
使用 while 函数执行此操作的最佳方法是什么?
最佳答案
您已经在循环 i
和 p
来迭代该结构。您需要一个 if
来决定增加计数器。
问题是每次计数增加时您都会打印计数。也许您应该只在循环完成时打印它?
for (int i = 0; i < 5; i++) {
int count = 0;
for (int p = 0; p < 10; p++) {
// Typo fix: fs>gained to fs->gained
if (fs->gained[value].var1[i].m_mode_max[p] > 0) {
count++;
}
}
printf("i: %d, count: %d\n", i, count);
}
如果只想对 m_mode_max 进行一次计数,则可以添加 break
以在计数后退出 p
循环。
for (int i = 0; i < 5; i++) {
int count = 0;
for (int p = 0; p < 10; p++) {
// Typo fix: fs>gained to fs->gained
if (fs->gained[value].var1[i].m_mode_max[p] > 0) {
count++;
break;
}
}
printf("i: %d, count: %d\n", i, count);
}
关于c - while 函数未正确返回计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59480333/