for(i=0;i
{
p=strchr(xx[i],’o’); /* 找找看,有没有字符’o’,有的话让p指向它,若没有返回NULL*/
[Page: ]
while(p!=NULL)/*根据以上的P值是否为空,判断是否有’o’字符,有的话做下面处理*/
{
memset(t,’\0’,100); /* 清空数组t*/
memcpy(t,xx[i],p-xx[i]); /*将’o’前面的字符形成一个串拷贝到t中,临时存放 */
strcpy(xx[i],p+1); /* 删除’o’连同’o’前面的字符串*/
strcat(xx[i],t); /*将原’o’前面的字符串连接到处理后的字符串的末尾,到次已经处理玩
了一个字符’o’ */
p=strchr(xx[i],’o’); /* 寻找下一个字符’o’*/
}
}
}
再看一道类型题,本题共出现十道题,题目说明很相似,只是排序的条件不同,所以这种题代码非常规则,我们全部用冒泡法排序,只改以下排序的条件即可。我们把这类题称为“按金额、代码排序的题”。
例如:
已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)几部份组成。其中:金额=单价×数量可计算得出。函数ReadDat()的功能是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品名称从小到大进行排列,若产品名称相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT.DAT中。
注意:部份源程序已在程序PROG1.C中给出。
请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。
typedef struct{
char dm[5]; /*产品代码*/
char mc[11]; /*产品名称*/
int dj; /*单价*/
int sl; /*数量*/
long je; /*金额*/