當前位置:才華齋>計算機>計算機三級>

計算機三級網路技術上機考試題

計算機三級 閱讀(1.8W)

離2016年第一次計算機考試只有一個月了,同學們的網路技術複習得怎麼樣了呢?下面本站小編為大家準備了最新的網路技術上機考試題,希望能幫助到大家!

計算機三級網路技術上機考試題

  第一題

下列程式的功能是:將大於整數m且緊靠m的k個素數存入陣列xx。請編寫函式num(int m,int k,int xx[ ])實現程式的要求,最後呼叫函式readwriteDAT( )把結果輸出到檔案中。

例如,若輸入17,5,則應輸出19,23,29,31,37。

注意:部分源程式已給出。

請勿改動主函式main()和輸入輸出函式readwriteDAT()的內容。

試題程式:

#include

#include

void readwriteDAT();

void num(int m,int k,int xx[])

{

}

void main()

{

int m,n,xx[1000];

system("CLS");

printf("nPlease enter two integers:");

scanf("%d,%d",&m,&n);

num(m, n, xx);

for(m=0;m  printf("%d ",xx[m]);

printf("n");

readwriteDAT();

}

void readwriteDAT()

{

int m, n, xx[1000],i;

FILE *rf,*wf;

rf=fopen("","r");

wf=fopen("","w");

for(i=0;i<10;i++)

{

fscanf(rf,"%d %d",&m,&n);

num(m,n,xx);

for(m=0;m  fprintf(wf,"%d ",xx[m]);

fprintf(wf,"n");

}

fclose(rf);

fclose(wf);

}

【參考答案】

void num(int m,int k,int xx[])

{

int i,half,cnt=0; /*定義變數cnt來統計已經取得的素數個數*/

int data=m+1; /*從大於整數m的'數開始找*/

while(1) /*迴圈條件始終為真,所以是無條件迴圈*/

{

half=data/2; /*求出當前數的一半,判斷素數*/

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

/*如果該數依次除以從2到其一半的整數,餘數都不是0,則該數是素數*/

if(data%i==0) /*如果餘數為0*/

break; /*則退出迴圈,取下一個數判斷*/

if(i>half)

{

xx[cnt]=data; cnt++; /*確定該數為素數後,將該數存入陣列xx中,並累計素數的個數*/

}

if(cnt>=k) break; /*如果累計素數的個數超過了要求的個數,則退出迴圈*/

data++; /*如果累計素數的個數小於要求的個數,則繼續取下一個數*/

}

}

解析】在本題中,首先要結合相關數學知識找出判定一個數是否為素數的方法,從而對資料進行篩選。如果數a依次除以從2到a/2的整數,餘數都不是0,則該數是素數。將符合條件的數存入陣列xx中,使用計數器變數cnt來統計已經取得的數的個數。當cnt的值小於等於k時,即表示所獲得素數的個數已經達到了要求,迴圈停止。

  第二題

下列程式的功能是:在三位整數(100至999)中尋找符合條件的整數並依次從小到大存入陣列中;它既是完全平方數,又是兩位數字相同,例如144、676等。請編制函式實現此功能,滿足該條件的整數的個數通過所編制的函式返回。最後呼叫函式writeDat()把結果輸出到檔案中。請勿改動主函式main()和寫函式writeDat()的內容。

#include

int jsvalue(int bb[])

{

}

main

{

int b[20],num;

num=jsvalue(b);

writeDat(num,b);

}

writeDat(int num,int b[])

{

FILE *out;

int i;

out=fopen("","w");

fprintf(out,"%dn",num);

for(i=0;i

fclose(out);

}

-------------------------------------

注:注意在i==(int)sqrt(i)*(int)sqrt(i)中只有當i是完全平方數時開平方後再取整才不會丟失任何資料。

int jsvalue(int bb[])

{

int i,j,k=0,g,s,b;

for(i=100;i<=999;i++)

{

g=i;

s=i/10;

b=i/100;

if((i==(int)sqrt(i)*(int)sqrt(i))&&(g==s//s==b//b==g))

bb[k++]=i;

}

return k;

}

int jsvalue(int bb[])

{

int i,k=0;

for(i=100;i<=999;i++)

if((int)sqrt(i)*(int)sqrt(i)==i && (i/100==i || i/100==i/10 || i/10==i))

bb[k++]=i;

return k;

}