用C語言怎麼寫類似s 2 22 222 2222 22222 希望能給個詳盡的解題過程,主要是演算法問題,謝謝了

2022-03-03 06:22:32 字數 4744 閱讀 9010

1樓:匿名使用者

首先,n個2的計算方法是2*(10的n次方)+ (n-1)個2也就是說,比如已經求出了2222後,變到22222只要加上2乘以10的5次方

而該試首相已知,就是2,那麼第二項就是2+2*(10的1次方),第三項就是2+(第二項的結果)*(10的2次方),第四項就是2+(第三項的結果)*(10的3次方),而這10的n次方也可以不用一遍遍算的那麼麻煩,我們也可以用一個變數(比如命名為ten)來儲存,第一項的時候乘以的是10的0次方,就是ten=1,第二項的時候乘以的是10,就是ten=ten*10,第三項是10的平方,依然可以ten=ten*10...依次類推

最後只要再把這n個數加起來即可

綜上所述,我們可以寫出一個函式來計算n個aaa...aa的函式//n表示項數,a表示數字(例如你給的題中a=2)long fun(int a,int n)s+=t;

}return s;

}已經用vc++6.0試過了,是對的

這個方法應該是最省時間和空間的,當然你也可以用函式來求10的n次方,不過那樣時間和空間複雜度都開銷很大

你再理解一下吧,不懂可以再問,希望對你有幫助

2樓:伍拾步

有疑問聯絡我。。。

#include

#define n 5 //加數共有5項void main()

printf("sum=%d\n",sum);}

3樓:匿名使用者

定義整型量s,i,j,k和n i主要用來存放最高位的數 比如20 200 2000。。。j主要存放整個數 比如2 22 222 2222。。。。n為數的個數 k控制迴圈 s為和 **如下:

#include

main()

printf("%d",s);}

4樓:陽光xl不鏽

大哥,好不容易編出來啦,沒分給個最佳答案吧,程式絕對正確

/*求s=a+aa+aaa+....的值,其中a是一個數字,例如2+22+222...(此時共三個數相加),

幾個數相加由鍵盤控制

*/#include

#include

#include

void function(unsigned long int b,unsigned long int m); //實現a+aa+aaa+...=的結果

int main(void)

while(count

a=l; //還原a值

function(a,n);

}void function(unsigned long int b,unsigned long int m)

printf("%.0f\n",sum);

system("pause");}

5樓:匿名使用者

long a=2,b=2;

for(i=0;i

計算2+22+222+2222+22222+222222+2222222的結果..用c語言for迴圈怎麼寫???????

6樓:匿名使用者

解法1:

main()

for(i=3;i>=1;i--) /*輸出後3行*/ }解法2:

main()

for(i=1;i<=3;i++) /*輸出後3行*/ }

7樓:匿名使用者

#include "math.h" //後邊的求冪函式要用到這個標頭檔案

#include "stdio.h"

void main()

sum+=a;

}sum+=2;//前邊算出的和我並沒有算第一個數2,所以在這裡還要加上2

printf("它們的和是:%d\n",sum);//呵呵 你可以執行一下 看看我的程式對不對 剛剛寫的}

c語言 求內似2+22+222+2222+22222的 **有問題 算出來老是等於0 5

8樓:

#include

//#include

//#include

void main()

printf("%d\n",s);

system("pause");}

c語言,用遞迴實現s=2+22+222+2222+2..2(n個2)

9樓:

#include

void main()

printf("sum=%d\n",sum);}

10樓:來自海印寺芳香襲人 的啄木鳥

#include

int add = 0;

int num = 0;

void func(int n)

}void main()

這是int型的資料,n的值不能太大,

否則超出界限,可以通過long型改善,但也是有限的。

如果要想實現無限位運算演算法就比較麻煩了

這就和階乘演算法一樣,範圍要控制好

11樓:匿名使用者

#include

int sum=0;

int digui(int n)

intmain()

12樓:

long int fun(int n)

return fun(n-1)+sum;}}

用c語言程式設計求s=2+22+222+……+2222…2

13樓:自我程式設計

計算思路很多比如:2+(2*10+2)+(2*10^2+2)。。(2*10^n+2)

但考慮數字長度不定,n可能會很大,那麼就不能用一般整型型別儲存(因為大小有限,超出就溢位了),所以採用字串儲存及按位計算。當然不能超出記憶體限制。

#include

#include

#include

char *getnum(int len);//獲取任意位數的 22222...的數字字串

char *addnum(char *sum,char *num);//兩數字字串按十進位制數字相加後儲存在sum中返回

int main(void)

printf("=%s",sum);

return 0;

}char *getnum(int len)//獲取任意位數的 22222...的數字字串

else

}return sum;}

14樓:匿名使用者

/*求s=2+22+222+……+2222…2,有n個數,最長數字為n個2組成

*/#include

#define max 1000

int main()

return 0;}

15樓:風若遠去何人留

#include

int main()

printf("%.0lf\n", s);//如果用int s, 這裡用%d

return 0;}

16樓:匿名使用者

#include

void main()

17樓:匿名使用者

本來想給答案,看到1樓回覆,還是算了,樓主抱本書多學習下吧。

思路:int i=2; i = i*10+2 疊加上去。

18樓:匿名使用者

說哈思想,就是前者*10+2,然後求和,有個小錯誤,但不是什麼大問題,只是i=1,要從1開始,寫陣列多了的緣故,將就看!!!

19樓:戶哲茂

**如下

#include

unsigned long int fun2(unsigned int n)//n=5   結果 22222

{int i;

unsigned long int tmp=0;

for(i=0;i如圖

20樓:匿名使用者

#include

void main()

printf("s=%d",s);}

21樓:程式小屋

// 來一個遞迴,很簡單

int result(int n)

else

}int main()

printf("%d", res);

return 0;}

22樓:1024程式設計師

c語言經典例子之求s=a+aa+aaa+aa...a的值

23樓:夢之陽

24樓:聽不清啊

#include

int main()

{int i,n,s=0,t=0;

scanf("%d",&n);

if(n>9)return 0;

for(i=0;i

25樓:匿名使用者

多看c書 程式要靠自己編寫才有意思

26樓:匿名使用者

呵呵,小意思,等一下子。。

怎麼用c語言計算s

用連個迴圈就 行了 include include void main sum pow s,1 printf f sum include stdio.h int main int argv,char argc 執行結果 我來寫個c 的,主要部分就是迴圈部分的,c語言一樣可以實現!很簡單的!inclu...

閏年用c語言怎麼寫

1 開啟visual studio編輯器,新建一個c語言檔案,在最前面引入標準庫檔案,然後定義一個main主函式 2 主函式中先定義一個int型的變數,用來儲存使用者輸入的數字,然後yongscanf控制輸入,輸入的值傳遞給a變數,接著判斷是否為閏年,判斷條件為能被4整除而不能被100整除或者是能被...

用c語言程式設計求s的值,用c語言程式設計,求S的值S

示例 include int main include void main 用c語言編寫程式,得出1 1 2 1 3 1 100的值 include int main void printf num d n num return 0 include int main 這樣是不更簡潔呢?物聯網校企聯盟...