當前位置:才華齋>計算機>C語言>

計算機二級C語言上機考前臨考練習

C語言 閱讀(3.13W)

計算機二級考試中C語言一直是考生的困擾,下面是本站小編整理的計算機二級C語言上機考前臨考練習,更多計算機二級考試內容請關注應屆畢業生考試網。

計算機二級C語言上機考前臨考練習

  填空題

用篩選法可得到2~n(n<10000)之間的所有素數,方法是:首先從素數2開始,將所有2的倍數的數從數表中刪去(把數表中相應位置的值置成0);接著從數

表中找下一個非0數,並從數表中刪去該數的.所有倍數;依此類推,直到所找的下一個數等於n為止。這樣會得到一個序列:

2,3,5,7,11,13,17,19,23,…… 函式fun用篩選法找出所有小於等於n的素數,並統計素數的個數作為函式值返回。

請在程式的下劃線處填入正確的內容並把下劃線刪除,使程式得出正確的結果。

注意:源程式存放在考生資料夾下的BLANK1.C中。

不得增行或刪行,也不得更改程式的結構!

給定源程式:

#include

int fun(int n)

{ int a[10000], i,j, count=0;

for (i=2; i<=n; i++) a[i] = i;

i = 2;

while (i

for (j=a[i]*2; j<=n; j+=___1___)

a[j] = 0;

i++;

while (___2___==0)

i++;

}

printf("nThe prime number between 2 to %dn", n);

for (i=2; i<=n; i++)

if (a[i]!=___3___)

{ count++; printf( count%15?"%5d":"n%5d",a[i]); }

return count;

}

main()

{ int n=20, r;

r = fun(n);

printf("nThe number of prime is : %dn", r);

}

解題思路:

第一處:所有2的倍數的數從數表中刪去,所以應填:a[i]。

第二處:找出下一個不是的a[i],所以應填:a[i]。

第三處:輸出素數,只要判斷a[i]不是0就是素數,所以應填:0。

  改錯題

給定程式MODI1.C中函式fun的功能是: 為一個偶數尋找兩個素數, 這兩個素數之和等於該偶數,並將這兩個素數通過形參指標傳回主函式。

請改正函式fun中指定部位的錯誤, 使它能得出正確的結果。

注意: 不要改動main函式, 不得增行或刪行, 也不得更改程式的結構!

給定源程式:

#include

#include

void fun(int a,int *b,int *c)

{ int i,j,d,y;

for(i=3;i<=a/2;i=i+2) {

Y=1;

for(j=2;j<=sqrt((double)i);j++)

if(i%j==0) y=0;

if(y==1) {

d==a-i;

for(j=2;j<=sqrt((double)d);j++)

if(d%j==0) y=0;

if(y==1)

{ *b=i; *c=d; }

}

}

}

main()

{ int a,b,c;

do

{ printf("nInput a: "); scanf("%d",&a); }

while(a%2);

fun(a,&b,&c);

printf("nn%d = %d + %dn",a,b,c);

}

解題思路:

第一處:變數y錯寫成Y。

第二處:給變數d進行賦值,所以應改為:d=a-i;。

  程式設計題

請編寫函式fun, 它的功能是:計算並輸出n(包括n)以內能被5或9整除的所有自然數的倒數之和。

例如,在主函式中從鍵盤給n輸入20後, 輸出為: s=0.583333。

注意: 要求n的值不大於100。

部分源程式在檔案PROG1.C中。

請勿改動主函式main和其他函式中的任何內容, 僅在函式fun的花括號中填入你編寫的若干語句。

給定源程式:

#include

double fun(int n)

{

}

main()

{ int n; double s;

printf("nInput n: "); scanf("%d",&n);

s=fun(n);

printf("nns=%fn",s);

NONO();

}

解題思路:

本題是計算n(包括n)以內能被5或9整除的所有自然數的倒數之和。

參考答案:

double fun(int n)

{

int i;

double sum=0.0;

for(i=1; i<=n; i++)

if(i%5 == 0 || i%9 == 0) /* 被5或9整除 */

sum+=1.0/i;

return sum;

}