菜鸟求助,求高手解释一下这个程序的算法,谢谢
来源:百度知道 编辑:UC知道 时间:2024/09/12 19:43:07
这个函数,是什么以行为单位一次把字符串中所有小写字母o左边的字符串内容一道该串的右边存放,然后把小写字母o删除.
#include <stdio.h>
#include <string.h>
#include <conio.h>
char xx[50][80];
int maxline=0;
int ReadDat(void);
void WriteDat(void);
void StrOR(void)
{
int i,j,k,index,strl;
char ch;
for(i=0;i<maxline;i++)
{
strl=strlen(xx[i]);
index=strl;
for(j=0;j<strl;j++)
if(xx[i][j]=='o')
{ for(k=j;k<strl-1;k++)
xx[i][k]==xx[i][k+1];
xx[i][strl-1]=' ';
index=j;
}
for(j=strl-1;j>=index;j--)
{
ch=xx[i][strl-1];
for(k=strl-1;k>0;k--)
xx[i][k]=xx[i][k-1];
xx[i][0]=ch;
}
}
}
void main()
{
clrscr();
if(ReadDat())
{
printf("数据文件IN.DAT不能打开!\n\007");getch();
return;
}
St
#include <stdio.h>
#include <string.h>
#include <conio.h>
char xx[50][80];
int maxline=0;
int ReadDat(void);
void WriteDat(void);
void StrOR(void)
{
int i,j,k,index,strl;
char ch;
for(i=0;i<maxline;i++)
{
strl=strlen(xx[i]);
index=strl;
for(j=0;j<strl;j++)
if(xx[i][j]=='o')
{ for(k=j;k<strl-1;k++)
xx[i][k]==xx[i][k+1];
xx[i][strl-1]=' ';
index=j;
}
for(j=strl-1;j>=index;j--)
{
ch=xx[i][strl-1];
for(k=strl-1;k>0;k--)
xx[i][k]=xx[i][k-1];
xx[i][0]=ch;
}
}
}
void main()
{
clrscr();
if(ReadDat())
{
printf("数据文件IN.DAT不能打开!\n\007");getch();
return;
}
St
void StrOR(void)
{
int i,j,k,index,strl;
char ch;
for(i=0;i<maxline;i++)
{
/*
每次从二维数组中读取一行. 并且记录下这一行的字符长度
*/
strl=strlen(xx[i]);
index=strl;
for(j=0;j<strl;j++)
/*
*一个一个字符的检查,如果这个字符等于"o"的话...
*/
if(xx[i][j]=='o')
{
/*
从这个字符开始一直到这个字符串完. 把后一个字符COPY-PAST到当前字符, 这样原来的"o"就被覆盖了.
*/
for(k=j;k<strl-1;k++)
xx[i][k]==xx[i][k+1];
/*
把最后一个字符定为 " " 空
*/
xx[i][strl-1]=' ';
/*
记录下"o"出现的index. 这个循环结束时, INDEX将储存最后一个o的出现地点
*/
index=j;
}
/*
从这个字符串的最后一直到上次出现'o'的地方. 把字符串一个一个再用如上的方法拷贝回去.
*/
for(j=strl-1;j>=index;j--)
{
ch=xx[i][strl-1];
/*
*拷贝粘贴.
*/
for(k=strl-1