已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)5部门组成。其中,金额=单价×数量。函数ReadDat( )是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat( ),其功能要求如下:按金额从小到大进行排列,若金额相同,则按产品代码从大到小进行排列,最终结构仍存入结构数组sell中,最后调用函数WriteDat( )把结构输出到文件OUT2.DAT中。
注意:部门源程序已给出。请勿改动主函数main( )、读数据函数ReadDat( )和输出数据函数WriteDat( )的内容。
试题程序:
#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
#define MAX 100
typedef struct

char dm[5];/*产品代码*/
char mc[11];/*产品名称*/
int dj;/*单价*/
int sl;/*数量*/
long je;/*金额*/

PRO;
PRO sell[MAX];
void ReadDat( );
void WriteDat( );
void SortDat( )


void main( )

memset(sell,0,sizeof(sell));
ReadDat( );
SortDat( );
WriteDat( );

void ReadDat( )

FILE*fp;
char str[80],ch[11];
int i;
fp=fopen("IN.DAT","r");
for(i=0;i<100;i++)

fgets(str,80,fp);
memcpy(sell[i].dm,str,4);
memcpy(sell[i].mc,str+4,10);
memcpy(ch,str+14,4);ch[4]=0;
sell[i].dj=atoi(ch);
memcpy(ch,str+18,5);ch[5]=0;
sell[i].sl=atoi(ch);
sell[i].je=(long)sell[i].dj*sell[i].sl;

fclose(fp);

void WriteDat(void)

FILE*fp;
int i;
fp=fopen("OUT2.DAT","w");
for(i=0;i<100;i++)

printf("%s%s%4d%5d%Sd/n",sell[i].de,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);
fprintf(fp,"%s%s%4d%5d%5d/n",sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);

fclose(fp);

void sortData()
{
PRODUCT temp;
int i,j;
memset(&temp,0,sizeof(temp));
for(i=0;i<MAX-1;i++)∥下面是按条件对数据进行排序的程序
for(j=i+1;j<MAX;j++)
if(strcmp(sell[i].name,sell[j].name)>0‖(strcmp(sell[i].name,sell[j].name)==0&&sell[i].value>sell[j].value))
{
∥将以&sell[i]为起始地址大小为sizeof(temp)的内存中的内容
∥复制到以&temp为起始地址的内存中
memcpy(&temp,&sell[i],sizeof(temp));
memcpy(&sell[i],&sell[j],sizeof(temp));
memcpy(&sell[j],&temp,sizeof(temp));
}
}

已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)5部门组成。其中,金额=单价×数量。函数ReadDat( )用于读取这100个销售记录并存入结构数组sell中。请编制函数SortDat( ),其功能要求如下:按产品名称从大到小进行排列,若产品名称相等,则按金额从大到小进行排列,最终排列结构仍存入结构数组sell中,最后调用函数WriteDat( )把结构输出到文件OUT5.DAT中。
注意:部分源程序已给出。请勿改动主函数main( )、读数据函数ReadDat( )和输出数据函数WriteDat( )的内容。
试题程序:
#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
#define MAX 100
typedef struct
char dm[5];/*产品代码*/
char mc[11];/*产品名称*/
int dj;/*单价*/
int sl;/*数量*/
long je;/*金额*/

PRO;
PRO sell[MAX];
void ReadDat( );
void WriteDat( );
void SortDat( )


void main( )

memset(sell,0,sizeof(sell));
ReadDat( );
SortDat( );
WriteDat( );

void ReadDat( )

FILE*fp;
char str[80],ch[11];
int i;
fp=fopen("IN.DAT","r");
for(i=0;i<100;i++)

fgets(str,80,fp);
memcpy(sell[i].dm,str,4);
memcpy(sell[i].mc,str+4,10);
memcpy(ch,str+14,4);ch[4]=0;
sell[i].dj=atoi(ch);
memcpy(ch,str+18,5);ch[5]=0;
sell[i].sl=atoi(ch);
sell[i].je=(long)sell[i].dj*sell[i].sl;

fclose(fp);

void WriteDat( )

FILE*fp;
int i;
fp=fopen("OUT5.DAT","w");
for(i=0;i<100;i++)

printf("%S%s%4d%5d%5d/n",sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl.sell[i].je);
fprintf(fp,"%S%S%4d%5d%5d/n",sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);

fclose(fp);

int i,j;
PRO xy;
for(i=0;i<99;i++)
for(j=i+1;j<100;j十十)
if(strcmp(sell[i].mc,sell[j].mc)<O∥如果产品i的产品名称大于产品j的产品名称
‖strcmp(sell[i].mc,sell[j].mc)==0∥如果产品i的产品名称等于产品j的产品名称
&&sell[i].je<sell[j].je)∥如果产品i的金额小于产品j的金额
{xy=sell[i];sell[i]=sell[j];sen[j]=xy;}∥产品i和产品j交换

已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)5部分组成。其中,金额=单价×数量。函数ReadDat( )是读取100个销售记录并存入结构数组sell中。请编制函数SortDat( ),其功能要求如下:按金额从小到大进行排列,若金额相等,则按产品代码从小到大进行排列,最终结果仍存入结构数组sell中,最后调用函数WriteDat( )把结构输出到文件OUT1.DAT中。
注意:部门源程序已给出。请勿改动主函数main( )、读数据函数ReadDat( )和输出数据函数WriteDat( )的内容。
试题程序:
#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
#define MAX 100
typedef struct

char dm[5];/*产品代码*/
char mc[11];/*产品名称*/
int dj;/*单价*/
int sl;/*数量*/
long je;/*金额*/

PRO;
PRO sell[MAX];
void ReadDat( );
void WriteDat( );
void SortDat( )


void main( )

memset(sell,0,sizeof(sell));
ReadDat( );
SortDat( );
WriteDat( ):

void ReadDat( )

FILE*fp;
char str[80],ch[11];
int i;
fp=fopen("IN.DAT","r");
for(i=0;i<100;i++)

fgets(str,80,fp);
memcpy(sell[i].dm,str,4);
memcpy(sell[i].me,str+4,10);
memcpy(ch,str+14,4);ch[4]=0;
sell[i].dj=atoi(ch);
memcpy(ch,str+18,5);ch[5]=0;
sell[i].sl=atoi(ch);
sell[i].je=(long)sell[i].dj*sell[i].sl;

fclose(fp);

void WriteDat( )

FILE*fp;
int i;
fp=fopen("OUT1.DAT","w");
for(i=0:i<100;i++)

printf("%s%s%4d%5d%5d/n",sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);
fprintf(fp,"%s%s%4d%5d%5d/n",sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);

fclose(fP);

int i,j;
PRO xy;
for(i=0;i<99;i++)
for(j=i+1;j<100;j++)
if(sell[i].je>sell[j].je∥如果产品i的金额大于产品j的金额
‖sell[i].je==sell[i].je∥如果产品i的金额等于产品j的金额
&&strcmp(sell[i].dm,sell[j].dm)>O)∥如果产品i的产品代码大于产品j的产品代码
{xy=sell[i];sell[i]=sell[j];sell[j]=xy;}∥产品i和产品j交换

已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)五部分组成。其中:金额=单价×数量。函数ReadDat( )用于读取这100个销售记录并存入结构数组sell中。请编制SortDat( ),其功能要求如下:按产品代码从大到小进行排列,若产品代码相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat( )把结构输出到文件OUT6.DAT中。
注意:部门源程序已给出。请勿改动主函数main( )、读数据函数ReadDat( )和输出数据函数WriteDat( )的内容。
试题程序:
#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
#define MAX 100
typedef struct

char dm[5];/*产品代码*/
char mc[11];/*产品名称*/
int dj;/*单价*/
int sl;/*数量*/
long je;/*金额*/

PRO;
PRO sell[MAX];
void ReadDat( );
void WriteDat( );
void SortDat( )


void main( )

memset(sell,0,sizeof(selI));
ReadDat( );
SortDat( );
WriteDat( );

void ReadDat( )

FILE*fp;
char str[80],ch[11];
int i;
fp=fopen("IN.DAT","r");
for(i=0;i<100;i++)

fgets(str,80,fp);
memcpy(sell[i].dm,str,4);
memcpy(sell[i].mc,str+4,10);
memcpy(ch,str+14,4);ch[4]=0;
sell[i].dj=atoi(ch);
memcpy(ch,str+18,5);ch[5]=0;
sell[i].sl=atoi(ch);
sell[i].je=(long)sell[i].dj*sell[i].sl;

fclose(fp);

void WriteDat(void)

FILE*fp;
int i;
fp=fopen("OUT2.DAT","w");
for(i=0;i<100;i++)

printf("%s%s%4d%5d%5d/n",sell[i].dm,
sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);
fprintf(fp,"%S%S%4d%5d%5d/n",sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);

fclose(fp);

int i,j;
PRO xy;
for(i=0;i<99;i++)
for(j=i+1;j<100;j++)
if(sell[i].je>sell[j].je∥如果产品i的金额大于产品j的金额
‖sell[i].je==sell[j].je∥如果产品i的金额等于产品j的金额
&&strcmp(sell[i].dm,sell[j].dm)<0)∥如果产品i的产品代码小于产品j的产品代码
{xy=sell[i];sell[i]=sell[j];sell[j]=xy;}∥产品i和产品j交换

已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat( )把这些数存入数组a中,请考生编制一个函数jsVal( ),其功能是:把一个四位数的千位数位置上的值减去百位数位置上的值再减去十位数位置上的值最后减去个位数位置上的值,如果得出的值大于等于0且原四位数是奇数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中,最后调用写函数writeDat( )把结果cnt和数组b中符合条件的四位数输出到OUT.DAT文件中。
注意:部分源程序存在文件PROG1.C文件中。程序中已定义数组:a[200],b[200],已定义变量:cnt。请勿改动数据文件INDAT中的任何数据、主函数main( )、读函数readDat( )和写函数writeDat( )的内容。
[试题程序]
#include
#define MAX 200
int a[MAX],b[MAX],cnt=0;
void writeDat( );
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( );

void 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]);
fdose(fp);

Void jsVal()
{int i,j; /*定义变量*/
int aA,aB,aC,aD;
int temp;
for(i=0;i<MAX;i++)
{aA=a[i]%A0; /*数位分解*/
aB=a[i]%A00/A0;
aC=a[i]%A000/A00;
aD=a[i]/A000;
if(aD-aC-aB-aA≥0&&a[i]%B==A) /*判断条件*/
b[cnt++]=a[i];
}
for(i=0;i<cnt-A;i++) /*选择法排序*/
for(j=i+A;j<cnt;j++)
if(b[i]>b[j])
(temp=b[i];
b[i]=b[j];
b[j]=temp;
}
}[解析] 本题要求将已知数按十进制位拆分,先按一定的判断条件筛选统计,再按大小进行排序。依据题意,应依次从数组a中取出每一个四位数,按十进制位拆分后,根据题目中给出的判断条件(四位数的干位数位置上的值-百位数位置上的值-十位数位置上的值-个位数位置上的值,如果得出的值大于等于0且原四位数是奇数,即a4-a3-a2-a1>=0&&a[i]%2==1)筛选后,将符合条件的四位数存入数组b中,同时计数器变量cnt加1,最后将数组b中的四位数用选择法进行排序。

已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat( )把这些数存入数组a中,请考生编制一个函数jsVal( ),其功能是:若一个四位数的千位数位置上的值大于等于百位数位置上的值,百位数位置上的值大于等于十位数位置上的值,以及十位数位置上的值大于等于个位数位置上的值。并且原四位数是奇数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中,最后调用写函数writeDat( )把结果cnt和数组b中符合条件的数输出到OUT.DAT文件中。
注意:部分源程序存在文件PROG1.C文件中。程序中已定义数组:a[200],b[200],已定义变量:cnt。请勿改动数据文件IN.DAT中的任何数据、主函数main( )、读函数readDat( )和写函数writeDat( )的内容。
[试题程序]
#include
#define MAX 200
int a[MAX],b[MAX],cnt=0;
void writeDat( );
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( );

void 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,j; /*定义变量*/
int a1,a2,a3,a4;
int temp;
for(i=0;i<MAX;i++)
{ a1=a[i]%10; /*数位分解*/
a2=a[i]%100/10;
a3=a[i]%1000/100;
a4=a[i]/1000;
if(a4≥a3&&a3≥a2&&a2≥a2≥a1&&a[i]%2=1} /*判断条件*/
b[cnt++]=a[i];
}
for(i=0;i<cnt-1;i++) /*选择法排序*/
for(j=i+1;j<cnt;j++)
if(b[i])b[j])
{temp=b[i];
b[i]=b[j];
b[j]=temp;
}
}

已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat( )把这些数存入数组a中,请考生编制一个函数jsVal( ),其功能是:把一个四位数的千位数位置上的值加上个位数位置上的值恰好等于百位数位置上的值加上十位数位置上的值,并且原四位数是奇数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中,最后调用写函数writeDat( )把结果cnt和数组b中符合条件的四位数输出到OUT.DAT文件中。
注意:部分源程序存在文件PROG1.C文件中。程序中已定义数组:a[200],b[200],已定义变量:cnt。请勿改动数据文件IN.DAT中的任何数据、主函数main( )、读函数readDat( )和写函数writeDat( )的内容。
[试题程序]
#inclde
#define MAX 200
int a[MAX],b[MAX],cnt=0;
void writeDat( );
void jsVal( )


void readDat( )

int i;
FILE *fp;
fp=fopen("in.dat","r");
for(i=0;i<MAX;i++)
fscanf(fp,"%d",&a[i]);
fdose(fp);

void main( )

int i;
readDat( );
jsVal( );
printf(“满足条件的数=%d/n”,cnt);
for(i=0;i<cnt;i++) printf(“%d”,b[i]);
printf(“/n”);
writeDat( );

void 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,t; /*定义变量*/
int aA,aB,aC,aD;
int temp;
for(i=0;i<MAX;i++)
{aA=a[i]%A0; /*数位分解*/
aB=a[i]%A00/A0;
aC=a[i]%A000/A00;
ad=a[i]/A000;
if(aD+aA)==aC+aB&&a[i]%B==A) /*判断条件*/
b[cnt++]=a[i];
}
for(i=0;i<cnt-A;i++) /*选择法排序*/
for(j=i+A;j<cnt;j++)
if(b[i],b[j])
{temp=b[i];
b[i]=b[j];
b[j]=temp;
}
}[解析] 本题要求将已知数按十进制位拆分,先按一定的判断条件筛选统计,再按大小进行排序。依据题意,应依次从数组a中取出每一个四位数,按十进制位拆分后,根据题目中给出的判断条件(四位数的千位数位置上的值+个位数位置上的值=百位数位置上的值+十位数位置上的值,且原四位数是奇数,即a4+a1==a3+a2&&a[i]%2==1)筛选后,将符合条件的四位数存入数组b中,同时计数器变量cnt加1,最后将数组b中的四位数用选择法进行排序。

已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat( )把这些数存入数组a中,请考生编制一个函数jsVal( ),其功能是:依次从数组a中取出一个四位数,如果该四位数大于该四位数以后的连续5个数且该数是奇数(该四位数以后不满5个数,则不统计),则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中,最后调用写函数writeDat( )把结果cnt和数组b中符合条件的四位数输出到OUT.DAT文件中。
注意:部分源程序存在文件PROG1.C文件中。程序中已定义数组:a[200],b[200],已定义变量:cnt。请勿改动数据文件IN.DAT中的任何数据、主函数main( )、读函数readDat( )和写函数writeDat( )的内容。
[试题程序]
#include
#define MAX 200
int a[MAX],b[MAX],cnt=0;
void writeDat( );
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( );

void 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()
(inf i,j; /*定义变量*/
int temp;
for(i=0;i<MAX-E;i++)
if(a[i]%B==A&&a[i]>a[i+A]&&a[i]>a[i+B]&&a[i]>a[i+C]E&&a[i]>a[i+D]&&a[i]>a[i+E]) /*判断条件*/
b[cnt++]=a[i];
for(i=0;i<cnt-A;i++) /*选择法排序*/
for(j=i+A;j<cnt;j++)
if(b[i]>b[j])
{temp=b[i];
b[i]=b[j];
b[j]=temp;[解析] 本题要求先将已知数按照一定的判断条件与数组中相邻的连续几个数进行比较,筛选统计后再按大小进行排序。依据题意,应依次从数组a中取出每一个四位数,依次与以后的连续5个数比较,根据题目中给出的判断条件(该四位数大于该四位数以后的连续5个数且该数是奇数,即a[i]%2==1&&a[i]>a[i+1]&&a[i]>a[i+2]&&a[i]>a[i+3]&&a[i]>a[i+4]&&a[i]>a[i+5])筛选后,将符合条件的四位数存入数组b中,同时计数器变量cnt加1,最后将数组b中的四位数用选择法进行排序。

已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat( )把这些数存入数组a中,请考生编制一个函数jsVal( ),其功能是:把千位数字和十位数字重新组成一个新的含有两位数字的数ab(新数的十位数字是原四位数的千位数字,新数的个位数字是原四位数的十位数字),以及把个位数字和百位数字组成另一个新的含有两位数字的数cd(新数的十位数字是原四位数的个位数字,新数的个位数字是原四位数的百位数字),如果新组成的两个数ab>cd,ab必须是偶数且能被5整除,cd必须是奇数,同时两个新数的十位数字均不为0,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数cnt。最后main( )函数调用写函数writeDat( )把结果cnt和数组b中符合条件的四位数输出到OUT.DAT文件中。
注意:部分源程序存在文件PROG1.C文件中。程序中已定义数组:a[200],b[200],已定义变量:cnt。请勿改动数据文件IN.DAT中的任何数据、主函数main( )、读函数readDat( )和写函数writeDat( )的内容。
[试题程序]
#include
#define MAX 200
int a[MAX],b[MAX],cnt=0;
void writeDat( );
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( );

void 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,j; /*定义变量*/
int aA,aB,aC,aD;
int ab,cd;
int temp;
for(i=0;i<MAX;i++)
{ aA=a[i]%A0; /*数位分解*/
aB=a[i]%A00/A0;
aC=a[i]%A000/A00;
aD=a[i]/A000;
ab=aD*A0+aB; /*数位重组*/
cd=aA*A0+aC;
if(ab>cd&&ab%B==0&&ab%E=0&&cd%B==A
&&aD!=0&&aA!=0) /*判断条件*/
b[cnt++]=a[i];
}
for(i=0;i<cnt-A;i++) /*选择法排序*/
for(j=i+A;j<cnt;j++)
if(b[i]<b[j])
{temp=b[i];
b[i]=b[j];
b[j]=temp;
}
}[解析] 本题要求将已知数按十进制位拆分并重新组成两个两位数后,先按照一定的判断条件筛选统计,再按大小进行排序。依据题意,应依次从数组a中取出每一个四位数,按十进制位拆分并重组后,根据题目中给出的判断条件(新组成的两个位数ab>cd,ab必须是偶数且能被5整除,cd必须是奇数,同时两个新数的十位数字均不为0,即ab>cd&&ab%2==0&&ab%5==0&&cd%2==1&&a4!=0&&a1!=0)筛选后,将符合条件的四位数存入数组b中,同时计数器变量cnt加1,最后将数组b中的四位数用选择法进行排序。

已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat( )把这些数存入数组a中,请考生编制一个函数jsVal( ),其功能是:依次从数组a中取出一个四位数,如果该四位数大于该四位数以前的连续5个数且该数是奇数,且该数必须能被7整除(该四位数以前不满5个数,则不统计),则统计出满足此条件的个数cnt并把这些四位数按从大到小的顺序存入数组b中,最后调用写函数writeDat( )把结果cnt和数组b中符合条件的四位数输出到OUT.DAT文件中。
注意:部分源程序存在文件PROG1.C文件中。程序中已定义数组:a[200],b[200],已定义变量:cnt。请勿改动数据文件IN.DAT中的任何数据、主函数main( )、读函数readDat( )和写函数writeDat( )的内容。
[试题程序]
#include
#define MAX 200
int a[MAX],b[MAX],cnt=0;
void writeDat( );
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( );
jsVall ( );
printf(“满足条件的数=%d/n”,cnt);
for(i=0;i<cnt;i++) printf("%d",b[i]);
printf("/n");
writeDat( );

void 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,j /*定义变量*/
int temp;
for(i=E;i<MAX;i++)
if(a[i]%B==A&&a[i]%G=0&&a[i]>a[i-A]&&a[i]>a[i-B]&&a[i]>a[i-C]&&a[i]>a[i-D]&&a[i]>a[i-E]) /*判断条件*/
b[cnt++]=a[i];
for(i=0;i<cnt-A;i++) /*选择法排序*/
for(j=i+A;j<cnt;j++)
if(b[i]<b[j])
{temp=b[i];
b[i]=b[j];
b[j]=temp;
}
}[解析] 本题要求将已知数按照一定的判断条件与数组中相邻的连续几个数进行比较,筛选统计后再按大小进行排序。依据题意,应依次从数组a中取出每一个四位数,与以前的连续5个数依次比较,根据题目中给出的判断条件(该四位数大于该四位数以前的连续5个数且该数是奇数,且该数必须能被7整除,即a[i]%2==1&&a[i]%7==0&&a[i]>a[i-1]&&a[i]>a[i-2]&&a[i]>a[i-3]&&a[i]>a[i-4]&&a[i]>a[i-5])筛选后,将符合条件的四位数存入数组b中,同时计数器变量cnt加1,最后将数组b中的四位数用选择法进行排序。

微信扫码获取答案解析
下载APP查看答案解析