C语言经典算法 11-20
生活随笔
收集整理的這篇文章主要介紹了
C语言经典算法 11-20
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
C語言經典算法 11-20
- 十一、求最大公約數和最小公倍數
- 十二、統計字符串數字,字母,符號的各個數量
- 十三、2+22+222+.....
- 十四、完數
- 十五、小球反彈問題
- 十六、猴子吃桃問題
- 十七、求一個分數序列的和
- 十八、求 1+2!+3!+...+20!的和
- 十九、給你一個多位數 輸出每一位數
- 二十、回文數
十一、求最大公約數和最小公倍數
題目:輸入兩個正整數 m 和 n,求其最大公約數和最小公倍數。程序分析:利用輾除法。代碼如下:
#include<stdio.h> int main(void) {int a,b;int m,n;//m存放最大公約數n存放最小公共倍數int temp=0;int i=0;scanf("%d %d",&a,&b);n=a*b;if(a>=b){temp=a%b;while(temp){a=b;b=temp;temp=a%b;}m=b;//最大公約數}else{temp=b%a;while(temp){b=a;a=temp;temp=b%a;}m=a;//最大公約數}n=n/m;//最小公倍數printf("%d %d\n",m,n);return 0; }十二、統計字符串數字,字母,符號的各個數量
題目:輸入一行字符,分別統計出其中英文字母、數字和其它字符的個數。代碼如下:
#include<stdio.h> #include<string.h> int main(void) {int i;int word=0;//統計字母數int number=0;//統計數字數int fuhao=0;//統計符號數char a[200];scanf("%s",a);for(i=0;i<strlen(a);i++){if( ( a[i]>='a' && a[i]<='z' ) || ( a[i]>='A' && a[i]<='Z' )){word++;continue;}if(a[i]>='0'&&a[i]<='9'){number++;continue;}fuhao++;}printf("字符串總長度為:%d\n",strlen(a));printf("共有%d個字母\n",word);printf("共有%d個數字\n",number);printf("共有%d個符號\n",fuhao);return 0; }十三、2+22+222+…
題目:求 s=a+aa+aaa+aaaa+aa...a 的值,其中 a 是一個數字。 例如 2+22+222+2222+22222(此時 共有 5 個數相加),幾個數相加有鍵盤控制。程序分析:關鍵是計算出每一項的值。代碼如下:
方法一: #include<stdio.h> void main() {int a,n,count=1;long int sn=0,tn=0;printf("please inputaand n\n");scanf("%d,%d",&a,&n); printf("a=%d,n=%d\n",a,n); while(count<=n) { tn=tn+a;sn=sn+tn;a=a*10;++count; } printf("a+aa+...=%ld\n",sn);方法二: #include<stdio.h> int main(void) {int a,n;int sum=0;int b=0;int i=0;printf("請輸入a的值:");scanf("%d",&a);printf("請輸入n的值:");scanf("%d",&n);for(i=0;i<n;i++){b=b*10;b=b+a;sum=sum+b;}printf("%d\n",sum);return 0; }十四、完數
題目:一個數如果恰好等于它的因子之和,這個數就稱為“完數”。例如 6=1+2+3. 編程 找出 1000 以內的所有完數。 程序分析:何判斷素數有點像,不過它是要把因子加一塊代碼如下:
#include<stdio.h> void main() {int i,j,k;for(i=1;i<=1000;i++){k=0;for(j=1;j<=i-1;j++)if(i%j==0)k+=j;if(k==i)printf("%d\n",i);} }十五、小球反彈問題
題目:一球從 100 米高度自由落下,每次落地后反跳回原高度的一半;再落下, 求它在 第 10次落地時,共經過多少米?第 10 次反彈多高?代碼如下:
#include<stdio.h> void main(){ float sn=100.0,hn=sn/2;int n; for(n=2;n<=10;n++){ sn=sn+2*hn;/*第 n 次落地時共經過的米數*/ hn=hn/2;/*第 n 次反跳高度*/ } printf("thetotalof road is %f\n",sn); printf("thetenthis %fmeter\n",hn);}十六、猴子吃桃問題
題目:猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個 第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以后每天早上都吃了前一天剩下 的一半零一個。 到第 10 天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。 程序分析:采取逆向思維的方法,從后往前推斷。代碼如下:
#include<stdio.h> void main() { int day,x1,x2; day=9; x2=1;while(day>0){x1=(x2+1)*2;/*第一天的桃子數是第 2 天桃子數加 1 后的 2 倍*/x2=x1;day--; } printf("thetotalis %d\n",x1); }十七、求一個分數序列的和
題目:有一分數序列:2/1,3/2,5/3,8/5,13/8,21/13... 求出這個數列的前 20 項之和。 程序分析:請抓住分子與分母的變化規律。代碼如下:
#include<stdio.h> void main(){ int n,t,number=20;float a=2,b=1,s=0; for(n=1;n<=number;n++){ s=s+a/b; t=a;a=a+b;b=t;/*這部分是程序的關鍵*/ } printf("sum is %9.6f\n",s);}十八、求 1+2!+3!+…+20!的和
題目:求 1+2!+3!+...+20!的和 程序分析:先累乘再累加代碼如下:
#include<stdio.h> void main() { float n,s=0,t=1;for(n=1;n<=20;n++){ t*=n; s+=t;} printf("1+2!+3!...+20!=%e\n",s);}十九、給你一個多位數 輸出每一位數
題目:給一個不多于 5 位的正整數,要求:一、求它是幾位數, 二、逆序打印出各位數字。 程序分析:學會分解出每一位數。代碼如下:
#include<stdio.h> void main( ) { long a,b,c,d,e,x;scanf("%ld",&x);a=x/10000;/*分解出萬位*/b=x%10000/1000;/*分解出千位*/ c=x%1000/100;/*分解出百位*/d=x%100/10;/*分解出十位*/ e=x%10;/*分解出個位*/ if(a!=0) printf("thereare5, %ld %ld %ld %ld %ld\n",e,d,c,b,a);else if (b!=0)printf("there are 4,%ld %ld %ld %ld\n",e,d,c,b);else if (c!=0)printf(" thereare3,%ld %ld %ld\n",e,d,c); else if (d!=0)printf("there are 2,%ld %ld\n",e,d); else if (e!=0)printf(" thereare1,%ld\n",e); }二十、回文數
題目:一個 5 位數,判斷它是不是回文數。即 12321 是回文數,個位與萬位相同,十位與千位相同。代碼如下:
#include<stdio.h> void main( ) { long ge,shi,qian,wan,x;scanf("%ld",&x);wan=x/10000;qian=x%10000/1000; shi=x%100/10; ge=x%10;if(ge==wan&&shi==qian)/*個位等于萬位并且十位等于千位*/ printf("this number is ahuiwen\n");elseprintf("this number is not ahuiwen\n"); }C語言經典算法 1-10點擊跳轉
C語言經典算法 21-30點擊跳轉
總結
以上是生活随笔為你收集整理的C语言经典算法 11-20的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言经典算法 1-10
- 下一篇: 动态数码管