計算機二級C語言上機考前臨考練習
- C語言
- 關注:2.96W次
計算機二級考試中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;
}
- 文章版權屬於文章作者所有,轉載請註明 https://xuezhezhai.com/zh-tw/jsj/cyuyan/wlxxp4.html