int a,b,x,y,z,cont1,cont2;
for(int i=0;i<100;i++){
a=i/10;
b=i%10;
if(a==3||b==3)
cont1++;
}
for(int i=100;i<=999;i++){
x=i/100;
y=i/10%10;
z=i%10;
if(x==3||y==3||z==3){
cont2++;
}
}
cout<<cont2;
return 0;
求第二段代码的错误 ,运行结果比答案多了一个数!
没有问题啊,cont1为19,说明十位个位有19个含3的数,1-9去掉3一个8个百位的cont1,加上300-399里100个,一共有19*8+100
252个含3的数,输出的结果也是252,从数学上计算显然cont2是252,你是输出不为252吗
看着没啥问题,cont2在for循环前是否设为0了? cont2 = 0;
不用那么复杂,你的cont1,cont2都没有初始化。
int main() {
int x,y,cont=0;
for(int i=3;i<=999;i++)
{
x=i;
while(x)
{
y=x%10;
if(y==3){
cont++;
break;
}
x/=10;
}
}
cout<<cont;
return 0;
}
我运行的很正常啊
根据以上提供的代码:cont1=19,cont2=252,cont1+cont2=271,代码也是没问题的,
还有其他的写法:
public static void main(String[] args) {
getNum();
}
/**
* 求1000以内含3的自然数的个数
*
* @return num
*/
public static int getNum() {
int count = 0;
for (int i = 0; i < 1000; i++) {
if (String.valueOf(i).contains("3")) {
count++;
}
}
cout<<count;
return count;
}
运行结果:
第二段代码的错误,是说第二段统计不对吗。cont2的值多了1?
第16行代码打错了,是输出cont1+cont2 这样的输出值还是错的
求大神解答!