| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 449 人关注过本帖
标题:一道三级的上机题 看看有问题吗?
只看楼主 加入收藏
zzzzzzzz
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2007-7-4
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
一道三级的上机题 看看有问题吗?
/*请编制函数StrOR( ),其函数的功能是:以行为单位依次把字符串中所有小写字母o左边的字
符串内容移到该串的右边存放,然后把小写字母o删除,余下的字符串内容移到已处理字符串的
左边存放,之后把已处理的字符串仍按行重新存入字符串数组xx中。*/
#include<stdio.h>
#include<string.h>
stror()
{
    int i,j,k,l=0,m,hangshu,n;
    char b[];
    for(i=0;i<hangshu;i++)
    {
        for(j=0;j<strlen(a[i])-1;j++)
        if(a[i][j]=='o')
        {
            for(k=0;k<j;k++)
                b[k]=a[i][k];
            for(k=j;k<strlen(a[i]);k++)
                a[i][l++]=a[i][k];
            for(k=0;k<j;k++)
                a[i][j++]=b[k];
        }
    }
   
搜索更多相关主题的帖子: 上机 
2009-09-03 18:42
ic06123
Rank: 2
等 级:论坛游民
帖 子:39
专家分:57
注 册:2009-9-2
收藏
得分:10 
hehe,个人觉得应该加上说明,那样方便读。。。。函数的类型和形参没有,算法也不是很清晰。。。
2009-09-03 19:29
喜喜
Rank: 2
来 自:武汉
等 级:论坛游民
帖 子:31
专家分:35
注 册:2009-7-28
收藏
得分:10 
你的怎么感觉这么简单呢,我这里有些解答你看下
void StrOR(void)

{int i,righto,j,s,k;

 char tem[80];

 for(i=0;i<maxline;i++) /*倒序循环*/

   for(j=strlen(xx[i])-1;j>=0;j--)

      {  k=0;
memset(tem,0,80); /*初始化字符串数组tem*/

        if(xx[i][j]=='o')  /*如果当前字符为'o',进入以下语句*/

          {righto=j; /*则将此字符中位置j的值赋给righto*/

           for(s=righto+1;s<strlen(xx[i]);s++)

              tem[k++]=xx[i][s]; /*从righto的下一跳开始将其后所有的字符都存入到tem中*/

           for(s=0;s<righto;s++) /*从当前行首部开始到出现字符'o'的位置(righoto)之前开始循环*/

              if(xx[i][s]!='o') tem[k++]=xx[i][s]; /*将不是字符'o'的字符全存入到tem中*/

           strcpy(xx[i],tem); /*将当前已处理的字符重新存入当前行xx*/

          }

        else continue;

       }

}

还有另一个解法

题目要求的字符串中所有小写字母o左边的字符串内容移到该串的右边存放,即
将串中“最后”一个字母o左右两侧的内容互换。题中第一个while()特环的作用是让p1
指向最后一个字母'o'。第一个ctrcat()函数的作用是将p1以后的字符都放到新串t中
,第二个strcat()函数的作用是将p1以前的字符连接到新串t的后面(注意:在些之前要
让p1所指的单元成为p1前面字符串的结束位置*p1='\0')。这时完成左右互换。最后
一个while()循环的作用是删除新串中的所有小写字母'o',采用的删除方法是不是'
o'的字母一律留下,否则不留(即相当于删除。)*/
void StrOR(void)
{
int i;
char *p1,*p2,t[80];
for(i=0;i<maxline;i++)
{t[0]='\0';
p2=xx[i];
while(*p2)
{if(*p2=='o') p1=p2;
p2++;
}
strcat(t,p1+1);
*p1='\0';
strcat(t,xx[i]);
p1=xx[i];
p2=t;
while(*p2)
{if(*p2!='o') *p1++=*p2;
p2++;
}
*p1='\0';
}
}


 
我对第一种还是可以理解的,第二种我不太明白,因为对指针不熟,  你慢慢看下吧
2009-09-03 21:51
快速回复:一道三级的上机题 看看有问题吗?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011387 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved