本系列資料由"韜略宏智" 授權(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
第12題:
下列程序的功能是:計算出自然數(shù)SIX和NINE,它們滿足的條件是SIX+SIX+SIX=NINE+NINE的個數(shù)cnt以及滿足此條件所有的SIX與NINE的和SUM。請編寫函數(shù)countValue()實現(xiàn)程序的要求,最后調(diào)用函數(shù)writeDat()把結(jié)果cnt和sum,輸出到文件out12.dat中。
其中的S,I,X,N,E各代表一個十進制數(shù)字。
部分源程序已經(jīng)給出。
請勿改動主函數(shù)main()和輸出數(shù)據(jù)函數(shù)writeDat()的內(nèi)容。
#include<stdio.h>
int cnt,sum;
void countValue()
{
}
void main()
{
cnt=sum=0;
countValue();
printf("the total numbers Conforms to the condition=%d\n",cnt);
printf("the total between SIX and NINE Conforms to the condition=%d\n",sum);
writeDat();
}
writeDat()
{
FILE *fp;
fp=fopen("out12.dat","w");
fprintf(fp,"%d\n%d\n",cnt,sum);
fclose(fp);
}
【答案】
void countValue()
{
int i=100;
while(1)
{
if(3*i%2==0&&3*i/2>=1000&&3*i/2<=9999&&i/10%10==(3*i/2)/100%10&&(3*i/2)/1000==(3*i/2)%100/10)
{cnt++;sum+=i+3*i/2;i++;}
else i++;
if(i>999||3*i/2>9999)break;
}
}
【解析】
考點:條件查找指定數(shù)字。
本題的解題思路是:存在一個三位數(shù)它的三倍值等于一個四位數(shù)的二倍值,通過分析知道三位數(shù)的三倍值的一半肯定是一個四位數(shù)字,還可以知道三位數(shù)的三倍值肯定是一個偶數(shù),并且該三位數(shù)的十位數(shù)字等于四位數(shù)的百位數(shù)字,在四位數(shù)字中其千位數(shù)字等于其十位數(shù)字,然后在所有的三位數(shù)中進行查找,若滿足上述條件的即為我們要查找的數(shù)字,然后統(tǒng)計出個數(shù)并且累加求和。讀者可以仔細(xì)思考本題的算法,如果要從各個位上的數(shù)字去分析的話,程序?qū)⑹址爆崱>唧w做法是:從第一個三位數(shù)字100開始逐個進行判斷,若滿足上述條件,則將累加到一個臨時變量中并統(tǒng)計出其個數(shù)。
該程序的流程:程序首先調(diào)用countValue()函數(shù)對數(shù)據(jù)進行處理后由writeDat()函數(shù)寫回文件OUT12.DAT中。
在countValue()函數(shù)中,因為while循環(huán)的條件為真(條件非0即為真),程序首先執(zhí)行while循環(huán),其功能是通過if語句進行判斷,當(dāng)條件成立時即存在一個三位數(shù)i使得3*i為偶數(shù)且3*i/2是一個四位數(shù)字,并且該三位數(shù)的十位數(shù)字等于四位數(shù)的百位數(shù)字,在四位數(shù)字中其千位數(shù)字等于其十位數(shù)字,則將總個數(shù)cnt加1,把i和3*i/2累加到sum中(3*i/2即為題目中的NINE,i即為題目中的SIX),否則i加1。while循環(huán)執(zhí)行到i不為三位數(shù)或3*i/2不為四位數(shù)時結(jié)束,函數(shù)也結(jié)束。
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |