3.請編寫一個(gè)函數(shù)void fun(char m,int k,int xx[]),該函數(shù)的功能是:將大于整數(shù)m且緊靠m的k個(gè)素?cái)?shù)存入xx所指的數(shù)組中。例如,若輸入17和5,則應(yīng)輸出:19,23,29,31, 37。
注意:部分源程序存在PROG1.C中,請勿改動(dòng)主函數(shù)和其他函數(shù)中的內(nèi)容,僅在函數(shù)fun的指定的部位填入你編寫的若干語句。
試題源程序如下:
#include <stdio.h>
void fun(int m, int k, int xx[])
{
}
main()
{ int m, n, zz[100];
printf("\nPlease enter two integers(m & n): ");
scanf("%d%d",&m,&n);
fun(m, n, zz);
for(m=0; m<n; m++) printf("%d ",zz[m]);
printf("\n\n");
。
分析:
(1)本題的基本算法是求素?cái)?shù)。假設(shè)有整數(shù)i,若i不能被2到i之間的任意一個(gè)數(shù)除盡,則i就是素?cái)?shù);若一旦能被某個(gè)數(shù)除盡就不是素?cái)?shù)。
(2)以下是求i是否為素?cái)?shù)的基本算法:變量ok用作i是素?cái)?shù)的標(biāo)志,ok為1,則i是素?cái)?shù)。
ok=1;
for(p=2; p<i/2; p++)
if( i%p==0){ ok=0; break; }
if(ok)……
(3)本題要求把大于m的k個(gè)素?cái)?shù)存入xx所指的數(shù)組中。所以,i的值應(yīng)大于m;取大于m的值逐一進(jìn)行判斷,若是素?cái)?shù)就放入xx所指數(shù)組中。把以上語句放入一個(gè)循環(huán)中:
for( i=m+1,j=0; ? ; i++ )
{ ok=1;
for(p=2; p<=i/2; p++)
if( i%p==0 ){ ok=0; break; }
if (ok) { xx[j]=i;j++; }
}
此處,變量i統(tǒng)計(jì)存入數(shù)組中元素的個(gè)數(shù),同時(shí)作為下標(biāo)。
(4)按本題的要求,外循環(huán)結(jié)束的條件應(yīng)當(dāng)是:j<k(j的值從0到k-1)。只要求得了k個(gè)素?cái)?shù),就可退出循環(huán)。因此在?處應(yīng)填入j<k。
希望與更多計(jì)算機(jī)等級考試的網(wǎng)友交流,請進(jìn)入計(jì)算機(jī)等級考試論壇
更多信息請?jiān)L問:考試吧計(jì)算機(jī)等級考試欄目
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |