do语句逆向显示整数和位数计算

输入一个非负整数,并进行逆向显示。例如:输入12345 显示54321
当输入负整数时,显示再次输入提示信息。

    int a,b,c;
    do {
        do {
            printf("请输入一个非负整数: ");
            scanf("%d", &a);
            
            if (a < 0) {
                printf("请输入一个非负整数。\n");
            }
        } while (a < 0);
        
        printf("逆向显示结果是: ");
        do {
            printf("%d", a % 10);
            a = a / 10;
            c = c + 1;//计算位数
        } while (a > 0);
        printf("\n");
        printf("该整数的位数是%d。\n", c);
        printf("要重复一次吗?【yes···0 / no···9】: ");//想要重复就输入数字0,不想重复就输入其他的数(除0以外)
        scanf("%d",&b);
    } while (b == 0);

输出结果:

请输入一个非负整数: 0123
逆向显示结果是: 321
该整数的位数是3。
要重复一次吗?【yes···0 / no···9】: 0
请输入一个非负整数: 

这个例子中使用了3个do语句。第一个do语句用来循环执行的,判断a的值是否等于0,如果b的值等于0就继续执行这个do语句,如果当b=0不成立时这个do语句就会结束。
第二个do语句只有在a的值为负的时候才会执行。
第三个do语句用来实现输入的整数逆向显示。
第三个do语句的循环次数和输入整数的位数是相同的,我们只要统计一下循环的次数就可以了


do语句逆向显示整数和位数计算_第1张图片
余.png

想要逆向显示12345,就要先求出a % 10的余数,结果为5.
再通过赋值语句“a = a / 10;”也就是把1234赋给变量a。

然后再判断a的值是否大于0,如果a的值大于0就继续执行这个do语句,如果当a>0不成立时这个do语句就会结束

你可能感兴趣的:(do语句逆向显示整数和位数计算)