50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 -1
15
./vpl_execution: line 5: 15093 Bus error (core dumped) ./main
顺便说一下,我搜索了一下这种情况,我认为我没有使用数组索引或者错误地使用了错误的指针。另外,我在这里看到了同样的问题,但我想知道为什么代码不能工作,然后自己解决这个问题。非常感谢大家的帮助。
#include <stdio.h>
int main()
{ int w,i,t,sum,index;
int list[16];
w = 1;
do
{
scanf("%d",&w);
list[index] = w;
index++;
}while(w >= 0);
t = 0;
for(i = 0;i < ((sizeof(list)/sizeof(list[0]))+1);i++)
{
sum =0;
if(sum <= 50)
{sum += list[i];}
else
{t++;}
}
printf("%d",t);
return 0;
}
我的do while循环出现分段错误
第一个分段错误发生在这一行:
列表[index]=w;
在此处访问列表[i]
可能会在i
的最终值处导致另一个segfault。您应该从((sizeof(列表)/sizeof(列表[0]))+1)
中删除+1
。
解决方案:
>
doindex=0;
在执行之前执行一次(初始化)list[index]=w;
我想知道为什么代码不能工作,然后自己解决问题。
for循环内部的逻辑是错误的。
sum =0;
if(sum <= 50)
这个条件始终为真,并且您的else块(它增加t
的值)永远不会执行。因此,输出始终是分配给t
的初始值。
问题内容: 我正在通过oracle认证的准Java SE7程序员实践考试(这本书),遇到一个问题,即使有解释,我也不明白答案。这是说明和代码: 它将打印3。循环主体执行两次,程序将打印3。 我不了解循环主体如何执行两次,也许我不了解什么意思。有人可以解释一下吗? 问题答案: 是 分配 其中B的逆分配给自身(真假之间有效地翻转) 在Java中,分配返回所分配的内容(因此可能) 因此将翻转b的值,然后
与while循环顶部测试循环条件的for和while循环不同, do...while循环do...while循环底部检查其条件。 do...while循环类似于while循环,除了do ... while循环保证至少执行一次。 语法 (Syntax) Perl中do...while循环的语法是 - do { statement(s); }while( condition ); 应该注意的是
与while循环顶部测试循环条件的for和while循环不同,Objective-C编程语言中的do...while循环检查循环底部的条件。 do...while循环类似于while循环,除了do ... while循环保证至少执行一次。 语法 (Syntax) Objective-C编程语言中do...while循环的语法是 - do { statement(s); } while( co
Pascal中的while-do循环语句允许重复计算,直到满足某些测试条件。 换句话说,只要给定条件为真,它就会重复执行目标语句。 语法 (Syntax) while-do循环的语法是 - while (condition) do S; 其中, condition是布尔值或关系表达式,其值为true或false, S是BEGIN ... END块中的简单语句或语句组。 例如, while num
do-while语句用于模拟其他编程语言中存在的简单while循环。 语法 (Syntax) do-while语句的语法如下 - do while (condition) statement #1 statement #2 ... end 通过首先计算条件表达式(布尔值)来执行while语句,如果结果为true,则执行while循环中的语句。 从while语句中的条件
与while循环顶部测试循环条件的while循环不同, do-while循环do-while循环底部检查其条件。 do-while循环类似于while循环,除了do-while循环保证至少执行一次。 语法 (Syntax) 以下是do-while循环的语法。 do { statement(s); } while( condition ); 请注意,条件表达式出现在循环的末尾,因此循环中的