首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的Why循环( z==0 )在我只将它设置为z==0一次之后会多次运行?

为什么我的Why循环( z==0 )在我只将它设置为z==0一次之后会多次运行?
EN

Stack Overflow用户
提问于 2020-05-21 16:09:30
回答 1查看 182关注 0票数 0
代码语言:javascript
复制
#include <stdio.h>
int main(void) {

    int x,y,z=0,number,digit;
    char c;
    int sum = 0;
    int temp = 0;

    while (z==0){

        printf("enter 2-9 for hex\n");
        scanf("%c",&c);
        x = (int)c-48;
        if((int)c>49 && (int)c<59){
            printf("enter number");
            scanf("%d",&number);
            break;
        }
        else if ((int)c<50 || (int)c>58){
            printf("wrong number\n");
            z==0;
        }
        else
            printf("error");
            z==0;

    }
while (number != 0) {
        digit = number % 10;
        number = number / 10;
        if (digit >= x) {
            printf("wrong input!!!");
            return 0;
        }
        else {
            int temp1 = temp;
            if (temp1 == 0) {
                digit = digit * 1;
            }
            else {
                while (temp1 != 0) {
                    digit = digit * x;
                    temp1--;
                }
            }
        }
        sum = sum + digit;
        temp = temp + 1;
    }
    printf("\nThe number in Decimal is:%d", sum);

}

这是我的代码,关于把十六进制转换成decimals.The的问题是,当我输入2-9时一切都是好的,但是当我输入1,第一次循环2次,如果我输入10-99循环3次,如果我输入100-999,循环4次,等等.

为什么在设置Z==0;之后,它仍然多次运行?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-21 16:26:16

情况是,你的z的条件一直是正确的。您的开始条件i == 0,这将启动while循环。在z不大于0时,while循环停止。所以在while循环的某个地方,你必须在不为零的时候改变z。然后你的时间循环就停止了。如果-否则,请使用关闭和打开"{}“。这有助于并提高可读性。

例如:

代码语言:javascript
复制
#include <stdio.h>
int main(void) {

    int x,y,z=0,number,digit;
    char c;
    int sum = 0;
    int temp = 0;

    while (z==0){

        printf("enter 2-9 for hex\n");
        scanf("%c",&c);
        x = (int)c-48;
        if((int)c>49 && (int)c<59){
            printf("enter number");
            scanf("%d",&number);
            break;
        }
        else if ((int)c<50 || (int)c>58){
            printf("wrong number\n");
            z==0;
        }
        else {
            printf("error");
            z==0;
}
z = 1;
    }
while (number != 0) {
        digit = number % 10;
        number = number / 10;
        if (digit >= x) {
            printf("wrong input!!!");
            return 0;
        }
        else {
            int temp1 = temp;
            if (temp1 == 0) {
                digit = digit * 1;
            }
            else {
                while (temp1 != 0) {
                    digit = digit * x;
                    temp1--;
                }
            }
        }
        sum = sum + digit;
        temp = temp + 1;
    }
    printf("\nThe number in Decimal is:%d", sum);
}

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61938835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档