永发信息网

C语言小问题?

答案:6  悬赏:50  手机版
解决时间 2021-04-30 22:35
  • 提问者网友:太高姿态
  • 2021-04-30 05:28

#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?达不到想要的结果

最佳答案
  • 五星知识达人网友:怀裏藏嬌
  • 2021-04-30 05:52

#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的取值范围是多少。

全部回答
  • 1楼网友:长青诗
  • 2021-04-30 09:30

这是你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); }

我这没编译器,你试试行不行,不行再来找我,

  • 2楼网友:酒安江南
  • 2021-04-30 09:12

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); }

  • 3楼网友:神的生死簿
  • 2021-04-30 07:43

不对改为:

#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); }

  • 4楼网友:英雄的欲望
  • 2021-04-30 06:11

其实你也可以这样写

#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);

}

  • 5楼网友:污到你湿
  • 2021-04-30 06:02

因为你用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); }

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯