已知数据文件IN37.DAT中存有200个4位数 并已调用读函数readDat( )把这些数存入数组
已知数据文件IN37.DAT中存有200个4位数,并已调用读函数readDat( )把这些数存入数组a中,请编制一函数jsVal(),其功能是:依次从数组a中取出一个4位数,如果该4位数连续大于该4位数以前的5个数且该数是偶数(该4位数以前不满5个数,则不统计),则统计出满足此条件的数个数cnt并把这些4位数按从大到小的顺序存入数组b中,最后调用写函数writeDat()把结果cnt及数组b中符合条件的4位数输出到文件OUT37.DAT中。
注意:部分源程序已给出。
程序中已定义数组:a[200],b[200],已定义变量:cnt。
请勿改动主函数main( )、读函数readDat()和写函数writeDat( )的内容。
参考解答
答案:
#include
#define MAX 200
int a[MAX,b[MAX,cnt=0;
void writeDat();
void jsVal()
{
int i,j; /*定义循环控制变量*/
int temp; /*定义数据交换是的暂存变量*/
for(i=5;i
if(a[i%2==0) /*如果当前数是偶数*/
for(j=i-5;j<=i-1;j++) /*取该数前面的5个数进行比较*/
{
if(a[i
break; /*如果当前数不满足比前面5个数都大的条件,则跳出循环*/
else if(j==i-1) /*如果当前数比前面的5个数都大*/
{
b[cnt=a[i; /*将满足条件的数存入数组b中*/
cnt++; /*并统计满足条件的数的个数*/
for(i=0;i
for(j=i+1;j
if(b[i
{
temp=b[i;
b[i=b[j;
b[j=temp;
void readDat()
{
int i;
FILE *fp;
fp=fopen('in37.dat','r');
for(i=0;i
fscanf(fp,'%d',&a[i);
fclose(fp);
void main()
{
int i;
readDat();
jsVal();
printf('满足条件的数=%d\n',cnt);
for(i=0;i
printf('%d ',b[i);
printf('\n');
writeDat();
void writeDat()
{
FILE *fp;
int i;
fp=fopen('out37.dat','w');
fprintf(fp,'%d\n',cnt);
for(i=0;i
fprintf(fp,'%d\n',b[i);
fclose(fp);
相似问题
Excel 2003对单元格数据的格式化操作也可以使用()方法。A “单元格格式”对话框设置B “格
Excel 2003对单元格数据的格式化操作也可以使用()方法。A、“单元格格式”对话框设置B、“格式”工具栏设置C、格式刷复制D、“格式”菜单中的“字体”
在EXCEL中 以下对单元格引用正确的是()A BB B$C $BD $B$
在EXCEL中,以下对单元格引用正确的是()A 、BB、B$C、$BD、$B$
在EXCEL中 当前活动单元格为B2 在公式栏中输入:=“99-2-27”-“99-2-7” 则B2
在EXCEL中,当前活动单元格为B2,在公式栏中输入:=“99-2-27”-“99-2-7”,则B2单元格的显示()A、 VALUE!,表示输入错误B、“99-2-27”-“99-2-7”,左
在EXCEL中 对选定的单元格执行“清除数据” 则可以清除()A 单元格格式B 单元格的内容C 单元
在EXCEL中,对选定的单元格执行“清除数据”,则可以清除()A、单元格格式B、单元格的内容C、单元格的批注D、以上都可以
EXCEL一个工作簿中工作表的个数 默认值是()A 32B 16C 255D 3
EXCEL一个工作簿中工作表的个数,默认值是()A、32B、16C、255D、3