{int I,j,data;
for(I=0;I<199;I++) for(j=I+1;j<200;j++)
{if (aa[I]00
{data=aa[I];aa[I]=aa[j];aa[j]=data;} else if(aa[I]00==aa[j]00) if(aa[I]>aa[j])
{data=aa[I];aa[I]=aa[j];aa[j]=data;} }
for(I=0;I<10;I++) bb[I]=aa[I]; }
原程序如下: #include
void main() {
readDat(); jsSort(); writeDat();
system(\ }
readDat() {
FILE *in; int i;
in=fopen(\
for(i=0; i<200; i++) fscanf(in,\ fclose(in); }
writeDat()
{
FILE *out; int i; clrscr();
out=fopen(\ for(i=0; i<10; i++){
printf(\ fprintf(out,\ }
fclose(out); }
7:已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产
品代码dm(字符型4
位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)四部分组成。其
中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell
中。请编制函数SortDat(),其功能要求:按产品代码从大到小进行排列,若产品代码相同,则
按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把
结果输出到文件OUT10.DAT中。
注意: 部分源程序存放在PROG1.C中。
请勿改动主函数main( )、读数据函数ReadDat()和输出数据函数WriteDat()的内容。
void SortDat() /*标准答案*/ {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;} } 原程序如下: #include 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(\ 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(\ for(i=0;i<100;i++){ fprintf(fp,\ sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);} fclose(fp);} 8:函数ReadDat()实现从文件ENG.IN中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS1.DAT中。 替代关系:f(p)=p*11 mod 256 (p是数组中某一个字符的ASCII值,f(p)是计算后新字符的 ASCII值),如果计算后f(p)值小于等于32或大于130,则该字符不变,否则将f(p)所对应的字符进行替代。 注意:部分源程序已给出。原始数据文件存放的格式是:每行的宽度均小于80个字符。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 void encryptChar() /*标准答案*/ {int I; char *pf; for(I=0;I {if(*pf*11%6>130||*pf*11%6<=32); else *pf=*pf*11%6; pf++; } } } 或者: void encryptChar() { int i,j; char *p; for(i=0;i else xx[i][j]=p; } } 原程序如下: #include unsigned char xx[50][80]; int maxline=0;/*文章的总行数*/ int ReadDat(void); void WriteDat(void); void encryptChar() { } void main() { clrscr(); if(ReadDat()){ printf(\数据文件ENG.IN不能打开!\\n\\007\ return; } encryptChar(); WriteDat(); system(\ } int ReadDat(void) { FILE *fp; int i=0; unsigned char *p; if((fp=fopen(\ while(fgets(xx[i],80,fp)!=NULL){ p=strchr(xx[i],'\\n'); if(p)*p=0; i++; } maxline=i; fclose(fp); return 0; } void WriteDat(void) { FILE *fp; int i; fp=fopen(\ for(i=0;i fclose(fp); } 9:函数ReadDat( )实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中; 请编制函 数SortCharD( ), 其函数的功能是: 以行为单位对字符按从大到小的顺序进行排序, 排序后的结果仍按行重新存入字符串数组xx中。最后main()函数调用函数WriteDat()把结果xx输出到文件OUT2.DAT中。 例: 原文: dAe,BfC. CCbbAA 结果: fedCBA., bbCCAA 原始数据文件存放的格式是: 每行的宽度均小于80个字符, 含标点符号和空格。 注意: 部分源程序存放在PROG1.C中。 请勿改动主函数main( )、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 ------------类型:字符串(单词)的倒置和删除。 void SortCharD(void) /*标准答案*/ {int I,j,k,strl; char ch; for(I=0;I {ch=xx[I][j]; xx[I][j]=xx[I][k]; xx[I][k]=ch;} }}