有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)五部分组成。其中:金额=单价×数量。函数ReadDat()的功能是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品名称从小到大进行排列,若产品名称相同,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell 中,
void SortDat()
{
int i,j;
PRO temp;
for(i=0;i<99;i++)
for(j=i+1;j<100;j++)
if(strcmp(sell[i].mc,sell[j].mc)>0)
{
temp=sell[i];
sell[i]=sell[j];
sell[j]=temp;
}
else if(strcmp(sell[i].mc,sell[j].mc)==0)
if(sell[i].je>sell[j].je)
{
temp=sell[i];
sell[i]=sell[j];
sell[j]=temp;
}
}
其功能要求:按产品名称从大到小进行排列,若产品名称相同,则按金额从大到小进行排列,
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)<0)
{ xy=sell[i]; sell[i]=sell[j]; sell[j]=xy; }
else if(strcmp(sell[i].mc,sell[j].mc)==0)
if(sell[i].je { xy=sell[i]; sell[i]=sell[j]; sell[j]=xy; } } 功能是:按产品代码从小到大进行排列,若产品代码相同,则按金额从小到大进行排列 void SortDat() { int i,j; PRO temp; for(i=0;i<99;i++) for(j=i+1;j<100;j++) if (strcmp(sell[i].dm,sell[j].dm)>0) { temp=sell[i]; sell[i]=sell[j]; sell[j]=temp; } else if(strcmp(sell[i].dm,sell[j].dm)==0) if(sell[i].je>sell[j].je) { temp=sell[i]; sell[i]=sell[j]; sell[j]=temp; }} 其功能要求:按产品名称从大到小进行排列,若产品名称相同,则按金额从小到大进行排列,int i,j; PRO xy; for(i=0;i for(j=i+1;j { if ( strcmp(sell[i].mc,sell[j].mc)<0 ) { xy=sell[i]; sell[i]=sell[j]; sell[j]=xy; } else if(strcmp(sell[i].mc,sell[j].mc)==0) if(sell[i].je>sell[j].je) { xy=sell[i]; sell[i]=sell[j]; sell[j]=xy; } } 功能要求:按产品代码从大到小进行排列,若产品代码相同,则按金额从大到小进行排列,。int i,j; PRO xy; for( i=0; i<99; i++ ) for( j=i+1; j<100; j++ ) { if(strcmp(sell[i].dm,sell[j].dm)<0) { xy=sell[i]; sell[i]=sell[j]; sell[j]=xy; } else if(strcmp(sell[i].dm,sell[j].dm)==0) if(sell[i].je { xy=sell[i]; sell[i]=sell[j]; sell[j]=xy; } } 功能是:按产品代码从小到大排列,若产品代码相同,则按金额从大到小进行排列void SortDat() { int i,j; PRO temp; for(i=0;i<99;i++) for(j=i+1;j<100;j++) { if (strcmp(sell[i].dm,sell[j].dm)>0) { temp=sell[i]; sell[i]=sell[j]; sell[j]=temp; } else if (strcmp(sell[i].dm,sell[j].dm)==0) if (sell[i].je { temp=sell[i]; sell[i]=sell[j]; sell[j]=temp; } } } 其功能要求:按金额从大到小进行排列,若金额相同,则按产品代码从大到小进行排列,void SortDat() { int i,j; PRO xy; for(i=0;i<99;i++) for(j=i+1;j<100;j++) { if(sell[i].je { xy=sell[i]; sell[i]=sell[j]; sell[j]=xy; } else if(sell[i].je==sell[j].je) if(strcmp(sell[i].dm,sell[j].dm)<0) { xy=sell[i]; sell[i]=sell[j]; sell[j]=xy; } } } 其功能要求:按金额从大到小进行排列,若金额相同, 则按产品名称从小到大进行排列,void SortDat() { int i,j; PRO temp; for(i=0;i<99;i++) for(j=i+1;j<100;j++) { if (sell[i].je { temp=sell[i]; sell[i]=sell[j]; sell[j]=temp; } else if (sell[i].je==sell[j].je) if (strcmp(sell[i].mc,sell[j].mc)>0) { temp=sell[i]; sell[i]=sell[j]; sell[j]=temp; } } } 其功能要求:按金额从小到大进行排列,若金额相同,则按产品代码从大到小进行排列 void SortDat() { 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) { xy=sell[i]; sell[i]=sell[j]; sell[j]=xy;} else if (sell[i].je==sell[j].je) if (strcmp(sell[i].dm,sell[j].dm)<0) { xy=sell[i]; sell[i]=sell[j]; sell[j]=xy; }}} 其功能要求:按金额从小到大进行排列,若金额相同,则按产品代码从小到大进行排列, void SortDat() { 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) { xy=sell[i];sell[i]=sell[j];sell[j]=xy; } else if (sell[i].je==sell[j].je) / if (strcmp(sell[i].dm,sell[j].dm)>0) { xy=sell[i];sell[i]=sell[j];sell[j]=xy; } }} 有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数jsVal(),其功能是:如果4位数各位商的数字均是奇数,则统计出满足此条件的个数cnt,并把这些4位数按从大到小的顺序存入数组b中。最后调用函数writeDat()吧结果cnt及数组b中符合条件的4位数输出到OUT1.DAT 文件。 void jsVal() { int i,j; int a1,a2,a3,a4; int temp; for(i=0;i<200;i++) { a4=a[i]/1000; a3=a[i]%1000/100; a2=a[i] %100/10; a1=a[i] %10; if(a4%2!=0 && a3%2!=0 && a2%2!=0 && a1%2!=0) { b[cnt]=a[i]; cnt++; } } for(i=0;i for(j=i+1;j if(b[i] { temp=b[i]; b[i]=b[j]; b[j]=temp; } } 功能是:依次从数组a中取出一个数,如果该4位数连续大于该4位数以后的5个数且该数是奇数,则统计出满足此条件的数的个数cnt,并把这些4位数按从小到大的顺序存入数组b中,void jsVal() { int i,j; int temp; for(i=0;i if(a[i]%2!=0) { for(j=i+1;j<=i+5;j++) if(a[i] break; if(j==i+6) { b[cnt]=a[i]; cnt++; } } for(i=0;i for(j=i+1;j if(b[i]>b[j]) { temp=b[i]; b[i]=b[j]; b[j]=temp; } } 功能是:如果4位数各位商的数字均是0或2或4或6或8,则统计出满足此条件的书的个数cnt,并把这下4位数按从大到小的顺序存入数组b中, void jsVal() { int i,j; int a1,a2,a3,a4; int temp; for(i=0;i<200;i++) { a4=a[i]/1000; a3=a[i]%1000/100; a2=a[i]%100/10; a1=a[i]%10; if(a4%2==0 && a3%2==0 && a2%2==0 && a1%2==0) { b[cnt]=a[i]; cnt++; } } for(i=0;i for(j=i+1;j if(b[i] { temp=b[i]; b[i]=b[j]; b[j]=temp; } } 功能是:若一个4位数的千位数字小于等于百位数字,百位数字小于等于十位数字,以及十位数字小于等于个位数字,并且此4位数是偶数,则统计出满足此条件的书的个数cnt并把这些4位数按从小到大的顺序存入数组中, void jsVal() { int i,j; int a1,a2,a3,a4; int temp; for(i=0;i<200;i++) { a4=a[i]/1000; a3=a[i]%1000/100; a2=a[i]%100/10; a1=a[i]%10; if ((a4<=a3) && (a3<=a2) && (a2<=a1) && (a1%2==0)) { b[cnt]=a[i]; cnt++; } } for(i=0;i for(j=i+1;j if(b[i]>b[j]) { temp=b[i]; b[i]=b[j]; b[j]=temp; } } 功能是:把一个4位数的千位数字减百位数字再减十位数字最后减个位数字,如果得出的值大于等于零且此4位数是奇数,则统计出满足此条件的数的个数cnt并把这些4位数存入数组b中,然后对数字b中的4位数按从小到大的顺序进行排列 void jsVal() { int i,j; int a1,a2,a3,a4; int temp; for(i=0;i<200;i++) { a4=a[i]/1000; a3=a[i]%1000/100; a2=a[i]%100/10; a1=a[i]%10; if((a4-a3-a2-a1>=0) && a1%2!=0) { b[cnt]=a[i]; cnt++; } } for(i=0;i for(j=i+1;j if(b[i]>b[j]) { temp=b[i]; b[i]=b[j]; b[j]=temp; } } 功能是:如果一个4位数的千位数字加十位数字恰好等于百位数字加上个位数字,并且此4位数是偶数,则统计出满足此条件的个数cnt并把这些4位数按从小到大的顺序存入数组b中, void jsVal( ) { int i,j; int a1,a2,a3,a4; int temp; for(i=0;i<200;i++) { a4=a[i]/1000; a3=a[i]%1000/100; a2=a[i]%100/10; a1=a[i]%10; if((a4+a2==a3+a1) && a[i]%2!=1) { b[cnt]=a[i]; cnt++; } } for(i=0;i for(j=i+1;j if(b[i]>b[j]) { temp=b[i]; b[i]=b[j]; b[j]=temp; } } 功能是:如果以个4位数个千位数字大于等于百位数字,百位数字大于等于十位数字,以及十位数字大于等于个位数字,并且此4位数是奇数,则统计出满足此条件的数的个数cnt并把这些4位数从小到大的顺序存入数组b中 void jsVal( ) { int i,j; int a1,a2,a3,a4; int temp; for(i=0;i<200;i++) { a4=a[i]/1000; a3=a[i]%1000/100; a2=a[i]%100/10; a1=a[i]%10; if((a4>=a3)&&(a3>=a2)&&(a2>=a1)&&a1%2!=0) { b[cnt]=a[i]; cnt++; } } for(i=0;i for(j=i+1;j if(b[i]>b[j]) { temp=b[i]; b[i]=b[j]; b[j]=temp; } } 功能是:如果以个4位数的千位数字加上十位数字恰好等于百位数字加上个位数字,并且此4位数是偶数,则统计出满足此条件读书的个数cnt并把这些4位数按从小到大的顺序存入数组b中void jsVal( ) { int i,j; int a1,a2,a3,a4; int temp; for(i=0;i<200;i++) { a4=a[i]/1000; a3=a[i]%1000/100; a2=a[i]%100/10; a1=a[i]%10; if(a4+a2==a3+a1 && a1%2==0) { b[cnt]=a[i]; cnt++; } } for(i=0;i for(j=i+1;j if(b[i]>b[j]) { temp=b[i]; b[i]=b[j]; b[j]=temp; } } 功能是:如果一个4位数的千位数字加个位数字恰好等于百位数字加上十位数字,并且此4位数是奇数,则统计出满足此条件的数的个数cnt并把这些4位数按从小到大的顺序存入数字b中 void jsVal( ) { int i,j; int a1,a2,a3,a4; int temp; for(i=0;i<200;i++) { a4=a[i]/1000; a3=a[i]%1000/100; a2=a[i]%100/10; a1=a[i]%10; if ((a4+a1==a3+a2) && a1%2==1) { b[cnt]=a[i]; cnt++; } } for(i=0;i for(j=i+1;j if(b[i]>b[j]) { temp=b[i]; b[i]=b[j]; b[j]=temp; } } 功能是:把千位数字和十位数字重新组成一个新的两位数ab(新两位数的十位数字是原四位数的千位数字,新两位数的个位数字是原四位数的十位数字),以及把个位数字和百位数字组成另一个新的两位数cd (新两位数的十位数字是原四位数的个位数字,新两位数的个位数字是原四位数的百位数字),如果新组成的两个两位数ab-cd>=0且ab-cd<=10且两个数均是奇数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数cnt。 void jsVal() { int i,j; int a1,a2,a3,a4; int temp; int ab,cd; for(i=0;i<200;i++) { a4=a[i]/1000; a3=a[i]%1000/100; a2=a[i]%100/10; a1=a[i]%10; ab=10*a4+a2; cd=10*a1+a3; if ((ab-cd)>=0 && (ab-cd)<=10 && ab%2==1 && cd%2==1 && a4!=0 && a1!=0) { b[cnt]=a[i]; cnt++; } } for(i=0;i for(j=i+1;j if(b[i] { temp=b[i]; b[i]=b[j]; b[j]=temp; } } 功能是:把千位数字和十位数字重新组成一个新的两位数(新两位数的十位数字是原四位数的千位数字,新两位数的个位数字是原四位数的十位数字),把百位数字和十位数字组成了一个新的2位数(新2位数的十位数字是原4位数的百位数字,新2位数的个位数字是原4位数的十位数字),如果新组成的两个2位数均是奇数并且两个2位数中至少有一个数能被5整除,同时两个新2位数的十位数字均不为零,则将满足此条件的4位数按从大到小的顺序存入数组b中并要求计算满足上述条件的4位数的个数cnt,void jsVal() { int i,j; int a1,a2,a3,a4; int temp; int ab,cd; for(i=0;i<200;i++) { a4=a[i]/1000; a3=a[i]%1000/100; a2=a[i]%100/10; a1=a[i]%10; ab=10*a4+a1; cd=10*a3+a2; if (ab%2==1 && cd%2==1 && (ab%5==0 || cd%5==0)&& a4!=0 && a3!=0) { b[cnt]=a[i]; cnt++; } } for(i=0;i for(j=i+1;j if(b[i] { temp=b[i]; b[i]=b[j]; b[j]=temp; } } 功能是:把千位数字和十位数字重新组成一个新的两位数ab(新两位数的十位数字是原四位数的千位数字,新两位数的个位数字是原四位数的十位数字),以及把个位数字和百位数字组成另一个新的两位数cd(新两位数的十位数字是原四位数的个位数字,新两位数的个位数字是原四位数的百位数字),如果新组成的两个两位数ab-cd>=10且ab-cd<=20且两个数均是偶数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数cnt。 void jsVal( ) { int i,j; int a1,a2,a3,a4; int temp; int ab,cd; for(i=0;i<200;i++) { a4=a[i]/1000; a3=a[i]%1000/100; a2=a[i]%100/10; a1=a[i]%10; ab=10*a4+a2; cd=10*a1+a3; if((ab-cd>=10)&&(ab-cd<=20)&&(ab%2==0)&&(cd%2==0)&&a4!=0&&a1!=0) { b[cnt]=a[i]; cnt++; } } for(i=0;i for(j=i+1;j if(b[i] { temp=b[i]; b[i]=b[j]; b[j]=temp; } } 功能是:把千位数字和十位数字重新组成一个新的2位数(新2位数的十位数字是原4位数的千位数字, 新2位数的个位数字是原4位数的十位数字),以及把个位数字和百位数字组成了另一个新的2位数(新2位数的十位数字是原4位数的个位数字,新2位数的个位数字是原4位数的百位数字),如果新组成的两个2位数均是素数且新2位数的十位数字均不为零,则将满足此条件的4位数按从大到小的顺序存入数组b中并要求计算满足上述条件的4位数的个数cnt, void jsVal() { int i,j; int a1,a2,a3,a4; int temp; int ab,cd; for(i=0;i<200;i++) { a4=a[i]/1000; a3=a[i]%1000/100; a2=a[i]%100/10; a1=a[i]%10; ab=10*a4+a2; cd=10*a1+a3; if(isprime(ab)&&isprime(cd)&&a4!=0&&a1!=0) { b[cnt]=a[i]; cnt++; } } for(i=0;i for(j=i+1;j if(b[i] { temp=b[i]; b[i]=b[j]; b[j]=temp; } } 功能是:把千位数字和十位数字重新组成一个新的两位数ab(新两位数的十位数字是原四位数的千位数字,新两位数的个位数字是原四位数的十位数字),以及把个位数字和百位数字组成另一个新的两位数cd(新两位数的十位数字是原四位数的个位数字,新两位数的个位数字是原四位数的百位数字),如果新组成的两个两位数ab void jsVal( ) { int i,j; int a1,a2,a3,a4; int temp; int ab,cd; for(i=0;i<200;i++) { a4=a[i]/1000; a3=a[i]%1000/100; a2=a[i]%100/10; a1=a[i]%10; ab=10*a4+a2; cd=10*a1+a3; if((ab { b[cnt]=a[i]; cnt++; } } for(i=0;i for(j=i+1;j if(b[i] { temp=b[i]; b[i]=b[j]; b[j]=temp; } } 功能是:把个位数字和千位数字重新组合成一个新的十位数ab(新十位数的十位数字是原4位数的个位数字,新十位数的个位数字是原4位数的千位数字),以及把百位数字和十位数字组成另一个新的十位数cd (新十位数的十位数字是原4位数的百位数字,新十位数的个位数字是原4位数的十位数字),如果新组成的两个数均为偶数且两个十位数中至少有一个数能被9整除,同时两个新2位数的十位数字均不为零,则将满足此条件的4位数按从大到小的顺序存入数组b中,并计算满足上述条件的4位数的个数cnt,void jsVal( ) { int i,j; int a1,a2,a3,a4; int temp; int ab,cd; for(i=0;i<200;i++) { a4=a[i]/1000; a3=a[i]%1000/100; a2=a[i]%100/10; a1=a[i]%10; ab=10*a1+a4; cd=10*a3+a2; if((ab%9==0||cd%9==0)&&(ab%2!=1)&&(cd%2!=1)&&a1!=0&&a3!=0) { b[cnt]=a[i]; cnt++; } } for(i=0;i for(j=i+1;j if(b[i] { temp=b[i]; b[i]=b[j]; b[j]=temp; } } 功能是:把个位数字和千位数字重新组合成一个新的2位数ab(新2位数的十位数字是原4位数的个位数字,新2位数的个位数字是原4位数的千位数字),以及把百位数和十位数组成另一个新的2位数cd(新2位数的十位数字是原4位数的百位数字,新2位数的个位数字是原4位数的十位数字),如果新组成的两个2位数必须是一个奇数、另一个为偶数且两个2位数中至少有一个数能被17整除,同时两个新2位数的十位数字均不为0,则将满足此条件的4位数按从大到小的顺序存入数组b中,并要计算满足上述条件的4位数的个数cnt, void jsVal( ) { int i,j; int a1,a2,a3,a4; int temp; int ab,cd; for(i=0;i<200;i++) { a4=a[i]/1000; a3=a[i]%1000/100; a2=a[i]%100/10; a1=a[i]%10; ab=10*a1+a4; cd=10*a3+a2; if((ab%17==0||cd%17==0)&&((ab%2==0 && cd%2==1)||(ab%2==1 && cd%2==0)) && a4!=0 && a1!=0) { b[cnt]=a[i]; cnt++; } } for(i=0;i for(j=i+1;j if(b[i] { temp=b[i]; b[i]=b[j]; b[j]=temp; } } 功能是:把千位数字和十位数字重新组合成一个新的2位数ab(新2位数的十位数字是原4位数的千位数 字,新2位数的个位数字是原4位数的十位数字),以及把个位数字和百位数字组成另一个新的2位数cd (新2位数的十位数字是原4位数的个位数字,新2位数的个位数字是原4位数的百位数字),如果新组成的两个2位数ab>cd,ab必须是偶数且能被5整除,cd必须是奇数,同时两个新数的十位数字均不为0,则将满足此条件的4位数按从大到小的顺序存入数组b中,并要计算满足上述条件的4位数的个数cnt,void jsVal( ) { int i,j; int a1,a2,a3,a4; int temp; int ab,cd; for(i=0;i<200;i++) { a4=a[i]/1000; a3=a[i]%1000/100; a2=a[i]%100/10; a1=a[i]%10; ab=10*a4+a2; cd=10*a1+a3; if((ab>cd) && (ab%2==0 && ab%5==0) && cd%2==1 && a4!=0 && a1!=0) { b[cnt]=a[i]; cnt++; } } for(i=0;i for(j=i+1;j if(b[i] { temp=b[i]; b[i]=b[j]; b[j]=temp; } } 功能是:依次从数组a中取出一个四位数,如果该4位数连续小于该四位数以后的5个数,且该数是偶数(该4位数以后不满5个数,则不统计),则统计出满足此条件的个数cnt,并把这些四位数按从小到大的顺序存入数组b中。 void jsVal() { int i,j; int temp; for(i=0;i if(a[i]%2==0) { for(j=i+1;j<=i+5;j++) if(a[i]>a[j]) break; if(j==i+6) { b[cnt]=a[i]; cnt++; } } for(i=0;i for(j=i+1;j if(b[i]>b[j]) { temp=b[i]; b[i]=b[j]; b[j]=temp; } } 功能是:依次从数组a中取出一个四位数,如果该4位数连续大于该四位数以前的5个数,且该数是偶数(该4位数以前不满5个数,则不统计),则统计出满足此条件的个数cnt,并把这些四位数按从大到小的顺序存入数组b中。 void jsVal() { int i,j; int temp; for(i=5;i if(a[i]%2==0) { for(j=i-5;j<=i-1;j++)