c语言中的关于数学问题的编程,C语言中具有代表性几种数学问题编程技巧探索.doc...
C語言中具有代表性幾種數學問題編程技巧探索
C語言中具有代表性幾種數學問題編程技巧探索
[摘要]本文分析了C語言中幾種常見的具有代表性的幾類數學問題,從數學規律、語法結構分析、語句優化設計及應用方面,探索同一類編程問題的編程方法和技巧。
[關鍵詞]數學問題;技巧;規律
[作者簡介]高大菊(1983-),女,漢族,滁州城市職業學院助教。
在C語言程序設計過程中,很多的程序設計問題和數學問題是緊密聯系的,怎樣分析數學規律,靈活地使用C語言的幾種結構來實現編程目的,往往帶給高職學校的學生不少編程困難,現就在學習實踐中對幾種常見的具有代表性的數學問題的編程技巧總結一二。
一、序列問題
經常遇到這樣的問題:給一組有一定規律的序列,然后求前n項的和或積的問題,這里簡稱序列問題。這類問題在編程中可以利用以下兩點技巧:①遇求和設0自加,遇求積設1自乘,遇異號乘-1。②研究數字規律。
在設計時,如果遇到很多項相加求和的情況,這時可以設一個變量,令其初始值為0,然后做自加運算,達到求和的目的;同樣,如果遇到很多項相乘求積的情況,可以設一個變量,令其初始值為1,然后做自乘運算,達到求積的目的;遇到一次加一次減即每一項符號不一樣的情況,可以直接乘-1,達到改變符號目的,最后再找出前一項和后一項之間的聯系,找到變化規律,這樣問題就容易解決了。
例題:有一分數序列:1/3-1/3*2/5+1/3*2/5*3/7-1/3*2/5*3/7*4/9+…….求其前20項之和。
分析:這個例題首先看成是一個求和運算,可以設變量s=0,然后通過S+=來求和,認真分析每一項,會發現每一項又需要求積運算,可以設變量t=1,做t*=來求積,而且每隔一項符號就要變化一次,可以設一個符號變量m,每次與-1相乘自然符號達到變化要求。最后就剩下分析規律了,通過分析可以發現,每一項比前一項多出的部分中分子,分母之間都有a=a+1,b=b+2的規律,這樣問題就好解決了。程序設計如下:
main( )
{float s=0,t=1;
intm=1,i,a=1,b=3;
for(i=1;i<=20;i++)
{ t* = a/b; s += m*t;m=(-1)*m; a=a+1; b=b+2;}
printf(“s=%9.6f\n”,s);
}
二、數字拆分問題
在C語言中,也經常接觸到所謂的水仙花數,還有改變一個數據數字位置這樣一類的問題,這些問題都需要將組成數據的每個數字作為一個獨立的個體來看,達到設計目的,拆分技巧歸納如下:數據除最高位數(如個位,百位、千位等)得最高位數字,剩余數據繼續除,除到個位才停止。
例如將一個三位正整數n拆分。
分析:n是一個三位數,那么最高位是百位,所以求百位數字的時候直接除100即可,依次類推,一直除到個位就可得出三個數字了。類似的問題可以用同樣的方法解決。部分程序設計如下:
if(n>=100&&n<1000)
{i=n/100;(*求百位數字*)
j=(n-i*100)/10;(*求十位數字*)
k=(n-i*100-j*10)/1;(*求個位數字*)
}(注意:這里n,i,j,k均定義為int型,兩個整形數據相除結果必為整。)
三、遞歸問題
C語言中會遇到很多的遞歸問題,有時需要多次重復循環或調用執行某個語句。關于遞歸的問題,第一步應該將問題簡單化,將問題的規模縮小到最小,第二步,將問題分解為若干個小問題,然后通過描述這些較小問題解決原來較大問題的算法。我們設計時要注意兩個條件:(1)遞歸形式,(2)遞歸結束條件,根據這兩個條件再寫循環體或遞歸函數。
請看下面的例題:
猴子吃桃問題。猴子第一天摘下若干桃子,當即吃了一半,還不過癮,又多吃了一個。第二天又將剩下的桃子吃掉一半,又多吃了一個。以后每天早上都吃了錢一天剩下的一半零一個。到第10天早上再想吃時就剩下一個桃子了,求第一天共摘多少桃子。
分析:(1)到第十天的時候只剩下一個桃子,所以結束條件:f(10)=1。
(2)后一天的桃子數目總是等于前一天數目的1/2再減1,所以f(n+1)= f(n)/2-1,也就是f(n)=(f(n+1)+1)*2。
因為此問題是一個從后往前推導的問題,所以在利用循環結構設計時,應該從第9天循環開始,通過9次的循環,數字不停的疊加,最后一次就可以求出第一天的桃子總數了,見程序A。
利用遞歸函數設計時,首先還是把握住上面分析的兩個條件,將這兩個條件通過判斷的方法寫在遞歸函數中,通過主函數來調用,再用變量將返回值輸出即可。見程序B。
main( )
{ int day=9,x1,x2=1; ea
總結
以上是生活随笔為你收集整理的c语言中的关于数学问题的编程,C语言中具有代表性几种数学问题编程技巧探索.doc...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言程序存为bin程序,对文件进行加密
- 下一篇: C语言中printf是不是关键字,C语言