#include "stdio.h"
main()
{
int sum=0,i=2;
while(i<10)
{
sum=sum+i;
i=i*10+2;
}
printf("2+22+222+'''+2222222222=%d\n",sum);
}
这个程序对么。为什么输出是2?达不到想要的结果
#include "stdio.h"
main()
{
int sum=0,i=2;
while(i<10)
{
sum=sum+i;
i=i*10+2;
}
printf("2+22+222+'''+2222222222=%d\n",sum);
}
这个程序对么。为什么输出是2?达不到想要的结果
#include "stdio.h"
main()
{
int sum=0,i=2;
while(i<10)
{
sum=sum+i;//第一次 sum=2
i=i*10+2;//第一次i=22;就不能进入循环了。
}
printf("2+22+222+'''+2222222222=%d\n",sum);//输出为2;
}
考虑int的取值范围是多少。
这是你while循环的问题,如果你仔细看了很容易知道,此循环只能执行一次。
还有Int型数据最大为65535,无法表示你加的222222及后面的数。
给你改下
#include "stdio.h" main() {
unsigned long sum; int i=0,k=2;
while(i<10) { sum=sum+k; k=k*10+2;
i++; } printf("2+22+222+……'''+2222222222=%ld\n",sum); }
我这没编译器,你试试行不行,不行再来找我,
while循环执行一次后,i的值是22,因此while循环只能执行一次,sum就是2。这样修改
#include "stdio.h" main() { int sum=0,i=2;
while(i<=2222222222) {
sum=sum+i; i=i*10+2; } printf("2+22+222+'''+2222222222=%d\n",sum); }
不对改为:
#include "stdio.h" main() { long sum=0; int i=2,j=1;
while(j<10) { sum=sum+i; i=i*10+2; j++; } printf("2+22+222+...+2222222222=%ld\n",sum); }
其实你也可以这样写
#include <math.h>
int main()
{
int sum=0,i=0,m;
for(;i<10;i++)
m=2*pow(10,i);
sum+=m;
printf("%d",sum);
}
因为你用while(i<10). 第一次进入while循环. 把i的值乘以10加上2. i就等于22.
那么第二次循环开始时判断while(i<10)条件就不满足. 因此while只循环了一次. 所以sum的值就是2
#include "stdio.h" main() { int sum=0,i=2,n=1; while(n<10) { sum=sum+i; i=i*10+2; n=n+1; } printf("2+22+222+'''+2222222222=%d\n",sum); }