计算机等级考试三级网络技术上机考前必看5
![](http://www.onekao.net/templets/default/images/content_ad.gif)
计算机等级考试三级网络技术上机考前必看(5)
#
试题五:已知数据文件IN.DAT中存有200个四位数, 并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是: 把千位数字和十位数字重新组成一个新的十位数(新十位数的十位数字是原四位数的千位数字,新十位数的个位数字是原四位数的十位数字), 以及把个位数字和百位数字组成另一个新的十位数 (新十位数的十位数字是原四位数的个位数字,新十位数的个位数字是原四位数的百位数字), 如果新组成的两个十位数均是素数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中, 并要计算满足上述条件的四位数的个数cnt。最后main()函数调用写函数writeDat( )把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。
#
注意: 部分源程序存在文件PROG1.C文件中。
#
程序中已定义数组: a[200], b[200], 已定义变量: cnt
请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。
#
-------------------------
PROG1.C
#include #
#define MAX 200
int a[MAX], b[MAX], cnt = 0; #
int isprime(int m)
#
{int i; #
for(i=2;i<=m/2;i++) #
if(m%i==0) return 0; #
return 1;
#
} #
void jsVal() #
{
#
}
#
void readDat() #
{ int i ;
#
FILE *fp ;
fp = fopen("in.dat", "r") ;
#
for(i = 0 ; i < MAX ; i++) fscanf(fp, "%d", &a[i]) ;
#
fclose(fp) ;
}
#
void main() #
{ int i ; #
readDat() ;
jsVal() ;
printf("满足条件的数=%d\n", cnt) ; #
for(i = 0 ; i < cnt ; i++) printf("%d ", b[i]) ;
#
printf("\n") ; #
writeDat() ; #
system("pause");
} #
writeDat() #
{ FILE *fp ; #
int i ;
fp = fopen("out.dat", "w") ; #
fprintf(fp, "%d\n", cnt) ;
for(i = 0 ; i < cnt ; i++) fprintf(fp, "%d\n", b[i]) ; #
fclose(fp) ; #
} #
/*标准答案*/ #
void jsVal()
#
{int I,thou,hun,ten,data,j;
#
int ab,cd; #
for(I=0;I<200;I++) #
{thou=a[I]/1000; hun=a[I]%1000/100;
ten=a[I]%100/10; data=a[I]%10;
#
ab=10*thou+ten; cd=10*data+hun;
#
if (isprime(ab)&&isprime(cd)&&ab!=0&&cd!=0) #
{b[cnt]=a[I];cnt++;}
}
#
for(I=0;I #
for(j=I+1;j
if(b[I] #
{data=b[I];b[I]=b[j];b[j]=data;}
} #