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