C不要循环功能

时间:2018-05-17 06:23:57

标签: c

我为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
>         }]
>       });

2 个答案:

答案 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...] 所以你明确地涵盖了所有可能性。