gpt4 book ai didi

c - for 和 if 条件给出意想不到的结果

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:46:21 24 4
gpt4 key购买 nike

我在 C 中遇到这样的问题:我在下面的代码中遇到问题。问题是我在 if conditions break 之后做了一些加法部分。而且加法是重复的 while 循环直到 count>0 问题是如果我把大括号放在 for循环然后它重复大括号内的部分,直到它的条件不为假。但我必须做这样的加法:我们有一个数组 data[i].freq={0,1,2,3,4,5} 和 data[i].next 表示要添加的下一个成员。假设我首先添加 0 和 1 我得到了“1 “作为结果,我将结果放在数组的最后一个索引中,像这样 ({0 1 2 3 4 5 1}) 现在不能添加 0 和 1,因为它们已经添加了(我不必重复添加相同的元素),所以下一次添加将在最后一个索引元素和最后一个元素之前的最小元素之间(但不是那些已经添加的元素)。所以这里的加法将在最后一个索引中的“1”+它右边的最小元素之间,即“2” 注意这里我们没有考虑 0 和 1,因为它们已经被添加了,就像这个 2下次不会添加,因为这次正在添加,它们的添加将是 {0 1 2 3 4 5 1 3} 我们必须重复相同的操作,直到剩下 & 元素最后。

    data[data_size].freq=data[i].freq+data[p].freq; // here i add the first 2 elements "0" and "1" in the example i given below.
int count=5;
do
{
for(i=0;data[i].next!=-1;i=data[i].next)//the problem is here if i put bracesit dont't do the ask which i expect it to do.
if(data[data[i].next].freq>data[data_size].freq && data[data[i].next].flag==0)
break;
data[data_size+1].freq= data[data_size].freq+ data[data[i].next].freq;
data[data_size].next=data[i].next;
data[i].next=data_size;
data_size++;
if(data[data[i].next].freq<data[data_size].freq && data[data[i].next].flag==0)
break;
data[data_size+1].freq= data[data_size].freq + data[i].freq
data[data_size].next=data[i].next;
data[i].next=data_size;
data_size++;
count--;
} while(count>0)

谁能帮我设计我想要实现的代码。

最佳答案

如果你写

for(i=0 ..any condition)
if(condition1)
break;
if(condition2)
break;

你不仅有一个不可读的困惑,而且你在 for 循环中也只有第一个 if 子句。

如果您希望 for 循环扩展到两者,您必须将它们放入 {}:

for(...) {
if(condition1) break;
if(condition2) break;
}

我个人的偏好是在下一行中始终使用大括号。 S 不要写

    if(condition1)
break;

因为有人可能会想插入一个 andditional 语句并惊讶于它没有按预期工作,但两者都可以

    if(condition1) break;

一行或

    if(condition1) {
break;
}

添加功能不需要的大括号,但为了可读性。

关于c - for 和 if 条件给出意想不到的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21462586/

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