南开100题计算机三级网络技术,计算机三级网络技术上机南开100题T46-50 -.pdf

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值