2015-09-06 47 views
-3

如何检查从1到N(N < 100)中有多少个数字为3,但没有将其转换为字符串进行检查?检查从1到N的数字是否有数字3

+0

可能重复:http://stackoverflow.com/questions/4977456/how-to-check-if-a-int-var-contains-a-specific-number – amito

回答

3

您可以使用mod % mod运算符来逐个取数字的数字,并用3检查它们。

一样,

int x; 
while(num != 0)  // num here goes from 1 to 100 
{ 
    x = num % 10; 
    if(x == 3) 
    { 
     //eureka 
    } 
    num /= 10; 
} 

编辑

让检查算法35

第一迭代

//num = 35 

x = num % 10;   // x = 5 (35 % 10) 
if(x == 3)    // is x equal to 3 (NO) 
{ 
    //eureka 
} 
num /= 10;    // num = 3 (35/10) 

虽然环路检查

num != 0    // num = 5 

第二迭代

// NUM = 35

x = num % 10;   // x = 3 (5 % 10) 
if(x == 3)    // is x equal to 3 (YES) 
{ 
    //eureka 
} 
num /= 10;    // num = 0 (5/10) 

While循环检查

num != 0    // num = 0 
         // While loop exits 
+0

当你达到30? 30%10 = 0,31%10 = 1,32%10 = 2 – user3711671

+0

它不是'30%3'。它的'30%10'。 – Haris

+0

是的,我的错误,它不适用于10。 – user3711671

0

您可以使用modulas运营商的%例如,如果(N%3 == 1){成功操作}

2

我认为最简单的方法是余数和检查是否数为30和39之间

if((x%10)==3||(x<40&&x>=30)) 
{ 
//Thats it 
}