我为changecalc()
分配值后,我的程序不会进展,它不会冻结或崩溃,它只是不会进展到int getinput(void)
{
int input;
printf("enter a value:\n");
scanf("%d", &input);
return(input);
}
void changecalc(int co)
{
int var1=0;
int ver2=0;
int var3=0;
int var4=0;
while(co > 0);{
if (co >= 50){
var1++;
co = co -50;
}
else if (co >= 20){
var2++;
co = co - 20;
}
else if (co >= 10){
var3++;
co = co - 10;
}
else if (co >= 5){
var4++;
co = co - 5;
}
else if (co <= 0){
printf("var1:%d, var2:%d, var3:%d, var4:%d", var1, var2, var3, var4);
}
}
return;
}
int main()
{
int changeowed;
void changecalc(int changeowed);
changeowed = getinput();
changecalc(changeowed);
return 0;
}
。
我是否正确编写了函数main?
> Vue.use(VueSocketCluster, {
> connections: [{
> name: 'SeoScan', // Each connection object must have a name and the name must be unique in the array
> hostname: 'localhost',
> secure: false,
> port: 5128,
> rejectUnauthorized: false,
> autoConnect: false
> }]
> });
答案 0 :(得分:10)
更改
while(co > 0);{
^
ups - while(co > 0); is an endless loop
到
while(co > 0){
除此之外,你还有另一个循环问题。考虑你的代码(没有;):
while(co > 0){
if (co >= 50){
var1++; //increases var1 by one
co = co -50;
}
else if (co >= 20){
var2++; //increases var2 by one
co = co - 20;
}
else if (co >= 10){
var3++; //var3 by one
co = co - 10;
}
else if (co >= 5){
var4++; //var4 by one
co = co - 5;
}
else if (co <= 0){
printf("var1:%d, var2:%d, var3:%d, var4:%d", var1, var2, var3, var4);
}
}
return;
如果co
等于1,会发生什么?
您将另一个无限循环,因为co
不会被进一步更改。
也许你应该改变整个事情:
while(1){
if (co >= 50){
var1++; //increases var1 by one
co = co -50;
}
else if (co >= 20){
var2++; //increases var2 by one
co = co - 20;
}
else if (co >= 10){
var3++; //increases var3 by one
co = co - 10;
}
else if (co >= 5){
var4++; //increases var4 by one
co = co - 5;
}
else {
printf("var1:%d, var2:%d, var3:%d, var4:%d", var1, var2, var3, var4);
break; // end the loop
}
}
其他一些观察结果:
在main
中,你有void changecalc(int changeowed);
行,不要这样做。只需删除该行即可。它没有做任何事情,可以安全删除。
在getinput
scanf("%d", &input);
你做scanf
不要这样做。始终检查if (scanf("%d", &input) != 1)
{
// Put error handling here
}
返回的值(这是成功填充的变量数)。像:
while(co > 0);
答案 1 :(得分:3)
这个特别令人烦恼,因为它似乎会逐行崩溃。
while
是空 ;
循环,将永远运行!
删除co
。
另请注意,如果if
为1,2,3或4,您将无限期地循环以获取其他原因;通过一个长的else
else
块来完成一个通常是一个好主意
kubectl exec POD -c CONTAINER -- COMMAND [args...]
所以你明确地涵盖了所有可能性。