读书人

南开百题难点破解(1)

发布时间: 2013-03-12 11:19:35 作者: rapoo

南开百题难题破解(1)

题目要求:

从左到右依次扫描字符串str,把小写字母o左边的所有字符移到该串的右边,并把该小写字母o删除,继续扫描字符串str并做上述操作,直到字符串str中所有的小写字母o被删除为止。

解答如下:

void StrOR(void){int i,j,k=0;//定义三个变量,i表示行数,j表示列数,k指向每一行的第一个字符int len;//用来存放每行的字符数char buf[80];//用来存放临时变换的行数据char a=0;//行数据存放到临时数组中时,用0字符清空该行数据for(i=0;i<maxline;i++){len=strlen(xx[i]);//获得每行的字符数j=0;while(j<len){if(xx[i][j]=='o')//判断该字符是否为o{xx[i][j]=0;//将字符o的位置用零替换,以便做字符串拷贝和连接时发挥作用,字符串连接函数和拷贝函数遇到零字符时将不再进行操作strcpy(buf,&xx[i][j+1]);/*strcpy函数:原型声明:extern char *strcpy(char dest[],const char *src);功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间,连字符串结束标志也一起copy.说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。返回指向dest的指针。*/strcat(buf,xx[i]);/*strcat函数:原型:extern char *strcat(char *strDest, char *strSrc);功能:把strSrc所指字符串添加到strDest结尾处(覆盖strDest结尾处的'\0')并添加'\0';说明:strSrc和strDest所指内存区域不可以重叠且strDest必须有足够的空间来容纳strSrc的字符串。返回指向strDest的指针.*/strset(xx[i],a);//将xx[i]该行数据清零,以便从临时数组中获得数据时不会发生错误strcpy(xx[i],buf);//将临时数组中的数据拷贝到xx的行数组中len = len-j;//拷贝后的数据中后j个字符不会包含字符oj=0;//将j置为0,对新的数据重新进行操作}else{j++;}}}}


读书人网 >编程

热点推荐