首页 > 解决方案 > 不包括两次相同数字的数字总和

问题描述

(代码的目的是写在标题中)我的代码只有在我输入相同的数字一次并且最后像 - 123455 时才能工作,但如果我写 12345566 是有效的,或者 11234 它不会让有人知道为什么?我已经尝试了几天,但我失败了。

while(num)
{
    dig = num % 10   // dig is the digit in the number                          
    num /= 10        // num is the number the user enter
    while(num2)      // num2 = num
    {
        num2 /= 10
        dig2 = num2 % 10   // dig2 is is the one digit next to dig  
        num2 /= 10
    
        if(dig2 == dig)    // here I check if I got the same digit twice to 
                           // not include him

        {
            dig2 = 0
            dig = 0
        }
    }
    sum = sum + dig + hold
}
printf("%d", sum)

标签: c

解决方案


好吧,您的代码几乎是正确的,但有些地方出了问题,

当您声明 num2 等于 num1 时,它已退出循环,因此一旦完成一个完整的循环执行,num2 仍保持小于零或为零(如果它是无符号整数),因此根据条件第二个循环在第一次运行后不会执行。

所以介意添加,

num2 = num1 

在你的第一个循环内。

另外,您两次更新 num2 ,我认为您在第一次更改后不需要这样做。

我试过的完整代码

#include<stdio.h>

int main(void)
{
    int num;
    int num2;
    int sum = 0;
    int dig, dig2;
    scanf_s("%d", &num);
  
    while (num>0)
    {
        dig = num % 10;  //dig is the digit in the number                           
        num /= 10;  
        num2 = num;// num is the number the user enter
            while (num2>0)    // num2 = num
            {
                dig2 = num2 % 10; // dig2 is is the one digit next to dig  

                    if(dig2 == dig)   // here i check if i got the same digit twice to                                       //not include him
                    {
                            dig = 0;
                    }
                    num2 /= 10;
            }
            sum = sum + dig ;
    }
    printf("%d", sum);
    return 0;
}


推荐阅读