C语言实例 一个很好的编程题

来源:网络时间:2011-06-24

  今天在某qq群见到有人问下面这个题目,当时没太多思路,跟他讨论了下,突然想出了做法。

  于是,马上编程实践,没想到,不久就把它实现了。好有成就感。。。

  1+11+111+1111+..........+11.....11(最后为2009个1) 求和中共有几个1

  (以上为10进制数)

  我的答案:

  1 #include <stdlib.h>

  2 #include <stdio.h>

  3 #define size 2009

  4

  5 void main()

  6 {

  7 int result[size] = {0};//存结果中每位所得到的进位值

  8 int count = 0;//结果中1的个数

  9 int numOfbit=size;//存现在判断的位不加进位的值

  10

  11 for(int i=0;i<size;i++)

  12 {//循环判断结果中每位是否为1,并处理进位

  13 if(1 == (numOfbit + result[i])%10)

  14 {//判断此位是否为1

  15 count++;

  16 }

  17

  18 if(numOfbit>9)

  19 {//处理进位

  20 int val = numOfbit%10;

  21 int bit = i+1;//要进位的对应位下标

  22 do

  23 {

  24 result[bit] += val%10;

  25 val = val%10;

  26 bit++;

  27 }

  28 while(val>=10);

  29 }

  30 numOfbit--;

  31 }

  32

  33 printf("结果中1的个数为%d\n",count);

  34 }

发表评论

最新评论(共4条)

2345市网友

程序好像有错误

2012-04-11 3

回复@2345网友:

  • 取消

2345市网友

一个老婆 !!!

2012-04-10 0

回复@2345网友:

  • 取消

2345市网友

看不懂,怎么学。。。。。。

2012-01-05 0

回复@2345网友:

  • 取消

2345市网友

--------------------------- 来自网页的消息 --------------------------- 纯表情会让人误以为您是#,还是说点实在的吧! --------------------------- 确定   ---------------------------

2011-09-11 0

回复@2345网友:

  • 取消