本系列資料由"韜略宏智" 授權(quán)發(fā)布,任何網(wǎng)站不得轉(zhuǎn)載,否則追究法律責(zé)任。
第11題:
某級數(shù)的前兩項A1=1,A2=1,以后各項具有如下關(guān)系:
An=An-2+2An-1
下列程序的功能是:要求依次對于整數(shù)M=100、1000和10000求出對應(yīng)的n值,使其滿足:Sn
請勿改動主函數(shù)main()和寫函數(shù)writeDat()的內(nèi)容。
#include
int b[3];
void jsValue()
{
}
main()
{
jsValue();
printf("M=100,n=%d\nM=1000,n=%d\nM=10000,n=%d\n",b[0],b[1],b[2]);
writeDat();
}
writeDat()
{
FILE *fp;
fp=fopen("out11.dat","w");
printf("%d\n%d\n%d\n",b[0],b[1],b[2]);
fprintf(fp,"%d\n%d\n%d\n",b[0],b[1],b[2]);
fclose(fp);
}
【答案】
void jsVal
本系列資料由"韜略宏智" 授權(quán)發(fā)布,任何網(wǎng)站不得轉(zhuǎn)載,否則追究法律責(zé)任。
第11題:
某級數(shù)的前兩項A1=1,A2=1,以后各項具有如下關(guān)系:
An=An-2+2An-1
下列程序的功能是:要求依次對于整數(shù)M=100、1000和10000求出對應(yīng)的n值,使其滿足:Sn<M且Sn+1>=M,這里Sn=A1+A2+…+An,并依次把n值存入數(shù)組單元b[0],b[1]和b[2]中,請編制jsValue()函數(shù)來實現(xiàn)此功能,最后調(diào)用函數(shù)writeDat()把數(shù)組b[]中的值輸出到out11.dat文件中。
}
main()
{
jsValue();
printf("M=100,n=%d\nM=1000,n=%d\nM=10000,n=%d\n",b[0],b[1],b[2]);
writeDat();
}
writeDat()
{
FILE *fp;
fp=fopen("out11.dat","w");
printf("%d\n%d\n%d\n",b[0],b[1],b[2]);
fprintf(fp,"%d\n%d\n%d\n",b[0],b[1],b[2]);
fclose(fp);
}
【答案】
void jsValue()
{
int A1=1,A2=1,n=1,An;
int sum0,sum;
sum0=A1+A2;
while(1)
{
An=A1+A2*2;
sum=sum0+An;
A1= A2; A2= An;n++;
if(sum0<100&&sum>100)b[0]=n;
if(sum0<1000&&sum>1000)b[1]=n;
if(sum0<10000&&sum>10000){b[2]=n;break;}
sum0=sum;
}
}
【解析】
考點:(1)計算數(shù)列的前n項和Sn;
(2)找到著滿足條件的Sn。
本題的解題思路是:依次計算出數(shù)列第n項和Sn并與M比較,如果滿足Sn<M且Sn+1>=M時則將n存入數(shù)組b[]中。計算前n項和,可以先計算出前n項,每一項的值(計算公式已經(jīng)在題目中給出),然后再累加到一個變量中。判斷是否滿足條件,可以通過if語句來實現(xiàn)?忌鷳(yīng)仔細(xì)閱讀題目中的條件,不應(yīng)急于開始編程。
程序的流程是:首先調(diào)用jsValue()函數(shù),對數(shù)據(jù)進(jìn)行處理后由writeDat()函數(shù)寫回文件out11.dat中。
在jsValue()函數(shù)中,因為不確定while循環(huán)的次數(shù),故判斷條件為恒真(非0即為真),直接進(jìn)入while循環(huán)體中,計算出An的值(An表達(dá)式在題目中已經(jīng)給出),并累加到sum中(sum為前n+1項和,sum0為前n項的和),并把A1和A2的值都更新一次,為下一次求和作準(zhǔn)備,之后,n加1。以下三組if語句的功能是:判斷現(xiàn)在的sum和sum0滿足哪一種情況,如果,sum0<100并且sum>100,即前n項和小于100,前n+1項和大于100時則將n存入數(shù)組元素b[0]中;若前n項和小于1000,前n+1項和大于1000時,則將n存入數(shù)組元素b[1]中;若滿足第三個if語句的條件,即前n項和小于1000,前n+1項和大于1000時,則將n存入數(shù)組元素b[2]中,并且跳出while循環(huán);若三個條件都不滿足,將前n+1項和賦給前n項和,重新進(jìn)入while循環(huán),while循環(huán)一直進(jìn)行到第三個if語句滿足為止,函數(shù)結(jié)束。
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |