#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() {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||strcmp(sell[i].dm,sell[j].dm)==0&&sell[i].je 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++){ printf(\ fprintf(fp,\ } 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)所对应的字符进行替代。(注意中间变量用无符号整型),部分源程序存在文件prog1.c中。原始数据文件存放的格式是:每行的宽度均小于80个字符。 请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 #include unsigned char xx[50][80]; int maxline=0;/*文章的总行数*/ int ReadDat(void); void WriteDat(void); void encryptChar() { int i,j; for(i=0;i for(j=0;j if(xx[i][j]*11%6<=32||xx[i][j]*11%6>130) continue; else xx[i][j]=xx[i][j]*11%6; } void main() { clrscr(); if(ReadDat()){ printf(\数据文件ENG.IN不能打开!\\n\\007\ return; } encryptChar(); WriteDat(); } 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中,最后调用函数writeDat()把结果xx输出到文件OUT2.DAT中。 例:原文:dAe,BfC. CCbbAA 结果:fedCBA. bbCCAA 原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。 部分源程序存在文件prog1.c中。 请勿改动主函数main()、读数据函数ReadDat()和输出数据函数writeDat()的内容。 #include char xx[50][80]; int maxline=0;/*文章的总行数*/ int ReadDat(void); void WriteDat(void); 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;} } } void main() { clrscr(); if(ReadDat()){ printf(\数据文件IN.DAT不能打开!\\n\\007\ return; }
相关推荐: