T46-50
1题目:
题目46:已知数据文件IN.DAT中存有200个四位数, 并已调用读函数readDat()把这些数存入数组a中,请考生编制一
函数jsVal(),其功能是: 依次从数组a中取出一个四位数,如果该数连续大于该四位数以前的5个数且该数是奇数,但该
数必须能被7整除。 则统计出满足此条件的个数cnt, 并把这些四位数按从大到小的顺序存入数组b中。 并要计算满足
上述条件的四位数的个数cnt。最后main()函数调用写函数writeDat( )把结果cnt以及数组b中符合条件的四位数输出到
OUT.DAT文件中。
注意: 部分源程序存在文件PROG1.C文件中。
程序中已定义数组: a[200], b[200], 已定义变量: cnt
请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。
void jsVal() /*标准答案*/
{int I,j,flag=0;
for(I=5;I
{for(j=I-5;j
{if(a[I]>a[j])
flag=1;
else {flag=0;break;}}
if (flag==1&&a[I]%2==1&&a[I]%7==0) {b[cnt]=a[I];cnt++;}
}
for(I=0;I
for(j=I+1;j
if(b[I]
{flag=b[I];b[I]=b[j];b[j]=flag;}
}
PROG1.C
#include
#define MAX 200
int a[MAX], b[MAX], cnt = 0;
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) ;
}
IN.DAT
6012
5099
9012
7025
8088
7055
5334
7607
8145
6012
5099
9012
7025
第 1 页
T46-50
8088
7055
5334
5795
2896
3019
7747
7607
8145
7090
4140
8626
7905
3735
9620
8714
9496
3640
5249
7671
5925
4687
2982
6227
6478
2638
2793
8298
8246
5892
9861
5795
2896
3019
7747
7607
8145
6012
5099
9012
7025
8088
7055
5334
5795
2896
3019
77