您的位置:首页 > 其它

以行为单位对字符串变量下标为奇数位置上的字符按其ASCii值从小到大的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中

2012-09-18 21:18 591 查看
#include  <stdio.h>
#include  <string.h>
#include  <windows.h>
#include  <conio.h>
char xx[20][80];
void jsSort()                  //扦插法排序
{
int i,j,s,k;
char temp;
for(i=0;i<20;i++)                       //对20行进行循环
{
s=strlen(xx[i]);                    //求每一行的字符长度
for(j=3;j<s;j=j+2)                  //对下标为奇数的字符扫描
{
k=j;                            //前插法排序
while((xx[i][k]<xx[i][k-2])&&(k>=3))
{
temp=xx[i][k];
xx[i][k]=xx[i][k-2];
xx[i][k-2]=temp;
k=k-2;
}
}
}

}
void main()
{
readDat();
jsSort();
writeDat();
}
readDat()
{
FILE *in;
int i=0;
char *p;
in=fopen("IN76.DAT","r");
while(i<20&&fgets(xx[i],80,in)!=NULL)
{
p=strchr(xx[i],'\n');
if(p)*p=0;
i++;
}
fclose(in);
}
writeDat()
{
FILE *out;
int i;
out=fopen("OUT76.DAT","w");
//system("cls");
for(i=0;i<20;i++)
{ printf("%s\n",xx[i]); fprintf(out,"%s\n",xx[i]); }
fclose(out);
}

/*****************************************  选择排序void jsSort()

void jsSort()
{                                            //选择排序
int i,j,k,s;
char temp;
for(i=0;i<20;i++)
{
s=strlen(xx[i]);                //求字符串长度
for(j=1;j<s;j+=2)               //第一次从第一个奇数下标元素向后比较
for(k=j+2;k<s;k=k+2)          //每次从后面选择最小的元素 放到前面
if(xx[i][j]>xx[i][k])
{  temp=xx[i][j];	xx[i][j]=xx[i][k];	xx[i][k]=temp; }
}
}
*/


博主个人网站 http://henghui.web-126.com/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐