機試時間:9月23日20:15
機試試題:南開82( 素數題)
已知數據文件in.dat中存有300個四位數,并已調用讀函數ReadDat()把這些數存入數組a中,請編制一函數jsValue(),其功能是:求出所有這些四位數是素數的個數cnt,再求出所有滿足此條件的四位數平均值pjz1,以及不滿足此條件的四位數平均值pjz2,最后調用寫函數writeDat()把結果cnt,pjz1,pjz2輸出到out.dat文件。
例如:5591是素數,則該數滿足條件計算平均值pjz1,且個數cnt=cnt+1。
9812是非素數,則該數不滿足條件計算平均值pjz2。
部分源程序存在文件prog1.c中。
程序中已定義數組:a[300],已定義變量:cnt,pjz1,pjz2
請勿改動主函數main()、讀函數ReadDat()和寫函數writeDat()的內容。
答案內容:
{int i;
for(i=0;i<300;i++)
if(isP(a)) {pjz1+=a;cnt++;}
else pjz2+=a;
if(cnt==0) pjz1=0;
else pjz1/=cnt;
if(300-cnt==0) pjz2=0;
else pjz2/=(300-cnt);
}
試題5:
機試時間:9月24日9:20
機試題目:南開59題。
考號尾數:915
題目59函數jsVal(),其功能是:把千位數字和十位數字重新組成一個新的十位數ab(新十位數的十位數字是原四位數的千位數字,新十位數的個位數字是原四位數的十位數字),以及把個位數字和百位數字組成另一個新的十位數cd(新十位數的十位數字是原四位數的個位數字,新十位數的個位數字是原四位數的百位數字),如果新組成的兩個十位數ab<cd,ab必須是奇數且不能被5整除,cd必須是偶數,同時兩個新數的十位數字均不為零,則將滿足此條件的四位數按從大到小的順序存入數組b中,并要計算滿足上述條件的四位數的個數cnt。
void jsVal()
{int i,thou,hun,ten,data,j;
int ab,cd;
for(i=0;i<MAX;i++)
{thou=a/1000; hun=a/100%10;
ten=a%100/10; data=a%10;
ab=10*thou+ten; cd=10*data+hun; if(((ab-cd)<0&&ab%2==1&&ab%5!=0)&&cd%2!=1&&ab>=10&&cd>=10)
{b[cnt]=a;cnt++;} }
for(i=0;i<cnt-1;i++)
for(j=i+1;j<cnt;j++)
if(b<b[j]) {data=b;b=b[j];b[j]=data;}}
試題6 :
機試時間:9月24日9:20
機試題目:南開59題。
考號尾數:915
題目59函數jsVal(),其功能是:把千位數字和十位數字重新組成一個新的十位數ab(新十位數的十位數字是原四位數的千位數字,新十位數的個位數字是原四位數的十位數字),以及把個位數字和百位數字組成另一個新的十位數cd(新十位數的十位數字是原四位數的個位數字,新十位數的個位數字是原四位數的百位數字),如果新組成的兩個十位數ab<cd,ab必須是奇數且不能被5整除,cd必須是偶數,同時兩個新數的十位數字均不為零,則將滿足此條件的四位數按從大到小的順序存入數組b中,并要計算滿足上述條件的四位數的個數cnt。
void jsVal()
{int i,thou,hun,ten,data,j;
int ab,cd;
for(i=0;i<MAX;i++)
{thou=a/1000; hun=a/100%10;
ten=a%100/10; data=a%10;
ab=10*thou+ten; cd=10*data+hun; if(((ab-cd)<0&&ab%2==1&&ab%5!=0)&&cd%2!=1&&ab>=10&&cd>=10)
{b[cnt]=a;cnt++;} }
for(i=0;i<cnt-1;i++)
for(j=i+1;j<cnt;j++)
if(b<b[j]) {data=b;b=b[j];b[j]=data;}}