问题:从1到40数字中,含有2、0、1、9这四个数字的数的和是多少?
我的代码:
#include <stdio.h>
int main()
{
int sum = 0, n, t;
for(int i = 1; i <= 40; i++)
{
t = i;
n = 0;
while(t != 0)
{
t %= 10;
if(t == 2 || t == 0 || t == 1 || t == 9)
{
n++;
}
t /= 10;
}
if(n != 0)
{
sum += i;
}
}
return 0;
}
不知道是哪里出了问题,一直得不到正确答案,还请大佬帮忙看看!
问题出在12和17行,你在12行执行完之后,你的t已经是个位数了,无论怎么样,执行完17行你的t都是0,并没有达到你想要的t是十位数的效果。
int main()
{
int sum = 0, n, m,t;
for(int i = 1; i <= 40; i++)
{
t = i;
n = 0;
while(t != 0)
{
m =t% 10;
if(m == 2 || m == 0 || m == 1 || m == 9)
{
sum+=i;
break;
}
t =t/ 10;
}
}
printf("%d",sum);
return 0;
}
int sum = 0, n, t;
for(int i = 1; i <= 40; i++)
{
t = i;
//n = 0;
while(t != 0)
{
t %= 10;
if(t == 2 || t == 0 || t == 1 || t == 9)
{
//n++;
sum+=i;
break;
}
t /= 10;
}
//if(n != 0)
//{
// sum += i;
//}
}
return sum;
你的代码很冗余,下面那个判断完全没必要,楼上代码就是正解
可以执行 有结果的啊