当前位置: 代码迷 >> C语言 >> 今天得作业题呀。。。
  详细解决方案

今天得作业题呀。。。

热度:181   发布时间:2004-12-27 16:44:00.0
今天得作业题呀。。。

今天老师给我们出了这样得题!

80+81+.....+89+810+811+.....+899+8100+8101+......+8999+81000

怎么做这道题呀。。

搜索更多相关的解决方案: 作业  

----------------解决方案--------------------------------------------------------
#include <stdio.h>
void main()
{
long int  i;
long int sum=0;
for(i=81;i<=81000;i++)
{
sum=sum+i;
}
printf("%ld",sum);
}
----------------解决方案--------------------------------------------------------

楼上的你做错了,这个要求各位达到9以后乘10再累加


----------------解决方案--------------------------------------------------------

这个程序还比较有点意思,我帮你写了, 用的递归,当然用for循环也可以做,主要是想练练手 #include <stdlib.h> #include "string.h" #include "math.h" #define Min 80 #define Max 81000 long sum(int n);

void main() { long a; a=sum(80); printf("sum=%ld",a); getchar(); }

long sum(int n) { int m; int flag;

//如果低于最小的或高于最大的返回0 if(n<Min||n>Max) return 0;

//计算除最高位以外所有的数字 m=n%((int)pow(10,(int)log10(n))); //判断除最高位外所有的数字是否全是9 if(m==0) flag=0; else flag=1; while(m!=0) { if(m%10!=9) { flag=0; break; } m=m/10; }

//如果各位达到9以后乘10再累加 //否则下一个数字递增1 if(flag) { m=(int)8*pow(10,(int)log10(n)+1)+pow(10,(int)log10(n)); return n+sum(m); } else { return n+sum(n+1); } }


----------------解决方案--------------------------------------------------------
哈哈,睡眼惺忪,如果是考试那就惨了
----------------解决方案--------------------------------------------------------
可看成如下规律: 80+ [( 81+.....+89)+ (810+811+.....+899) + (8100+8101+......+8999)]+ 81000 代码不必太长了: #include<iostream.h> void main() { int i, a, temp; long sum=(80+81000); for (i=81,a=9; i<=8100; i*=10,a*=10) for (temp=i; temp<10*a; temp++)      sum += temp;    cout<<"Result: "<<sum<<endl; } 运行结果: Result: 7853300 注: 和我用公式笔算结果完全吻合。

[此贴子已经被作者于2005-2-24 14:52:35编辑过]


----------------解决方案--------------------------------------------------------

#include <stdio.h> #include <math.h> #include <conio.h>

int main() { int i,j; long sum=80+81000; for(i=0;i<3;i++) { sum+=81*pow(10,i); for(j=81*pow(10,i)+1;j<90*pow(10,i);j++) { sum+=j; } } printf("The result is %ld\n",sum); getch(); return 0; }


----------------解决方案--------------------------------------------------------
#include &lt;iostream&gt;
long Sum(int n,int first,int end);
void main(void)
{
   long m_jieguo;
   m_jieguo=80+Sum(9,81,89)+Sum(90,810,899)+Sum(900,8100,8999)+81000;
   cout&lt;&lt;m_jieguo&lt;&lt;endl;
}
long Sum(int n,int first,int end)
{
  long jieguo=n*(first+end)/2;
  return jieguo;
}
----------------解决方案--------------------------------------------------------
好强都,我新来的
以后大家多多帮助啊
----------------解决方案--------------------------------------------------------
看来大家都没看懂这道题,把每个数字前的8去掉看看,是不是很清楚了,剩下的编程就是几行就搞定了
----------------解决方案--------------------------------------------------------
  相关解决方案