| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 760 人关注过本帖
标题:关于跳过循环的问题???
只看楼主 加入收藏
rucyang
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2013-10-4
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:10 
关于跳过循环的问题???
程序代码:
本想输出4a1b5g1e4f,结果却是4a3a2a1a1b5g4g3g2g1g1e4f3f2f1f,先是令k=1,判断后面的是否与它相等,相等k=k+1;如何实现跳过3a2a1a,4g3g2g1g,3f2f1f的循环???
#include <stdio.h>

#include <string.h>

void main()
{
   char s[256] = "aaaabgggggeffff";

 
   int j,  k,i ;
  
   for(i=0;i<strlen(s);i++)
   {
       k=1;
       for(j=i+1;j<strlen(s);j++)
       {
           if(s[i]==s[j])
               k++;
       }
           printf("%d",k);
           printf("%c",s[i]);
           

         
      
   }
}
      
搜索更多相关主题的帖子: 如何 
2013-10-10 08:15
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:2 
C语言是面向过程的,你脑子有什么想法用代码实现就是了。

总有那身价贱的人给作业贴回复完整的代码
2013-10-10 08:31
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:2 
void main()
{
    char s[256] = "aaaabgggggeffff";

    int j;

    int len = strlen(s);
    int i = 0;
    while (i < len)
    {
        j = i+1;

        while (s[j] == s[i])
        {
            j++;
        }

        printf("%d",j-i);
        printf("%c",s[i]);

        i = j;
    }
}

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-10-10 08:32
蓝天时代
Rank: 2
等 级:论坛游民
帖 子:30
专家分:47
注 册:2013-4-25
收藏
得分:2 
#include <stdio.h>

#include <string.h>

void main()
{
   char s[256] = "aaaabgggggeffff";
int b[256]={0};
   int j,  k,i ;
  
   for(i=0;i<strlen(s);i++)
   {
     if(b[i]==0)
    {  k=1;
       for(j=i+1;j<strlen(s);j++)
       {
           if(s[i]==s[j])
              { k++; b[j]=1;}
       }
           printf("%d",k);
           printf("%c",s[i]);
           

         
      
      }
   }
}
      加一个数组,记忆字符有没有比较过。
2013-10-10 08:56
蓝天时代
Rank: 2
等 级:论坛游民
帖 子:30
专家分:47
注 册:2013-4-25
收藏
得分:0 
3楼做法有局限性,只能判断有规律的字符串。如果是乱序就不好判断。
2013-10-10 09:01
在这里爬起
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:43
专家分:113
注 册:2013-8-9
收藏
得分:2 
程序代码:
#include <stdio.h>

#include <string.h>

void main()
{
   char s[256] = "aaaabgggggeffff";

   int j,  k,i ;

 
   for(i=0;i<strlen(s);i++)
   {
       k=1;
       for(j=i+1;j<strlen(s);j++)
       {
           if(s[i]==s[j])
           {
               k++;
               i=j;
           }
       }
       
       
           printf("%d",k);
           printf("%c",s[i]);
           

        
     
   }
}
很简单,你把循环后j的值付给i就行了,那样就直接从下一个不同的字母循环了
2013-10-10 09:30
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:0 
回复 5楼 蓝天时代
楼主要求的就是字符串压缩吧,字符串压缩后的数据是可以还原的。

比如 aaabbbcccdddaa 应该压缩成3a3b3c3d2a的 如果用你的算法就是5a3b3c3d了。你想想如果用你的算法算出来的结果,你怎么把字符串还原?

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-10-10 12:57
蓝天时代
Rank: 2
等 级:论坛游民
帖 子:30
专家分:47
注 册:2013-4-25
收藏
得分:0 
回复 7楼 yuccn
呵呵,如果是这样就是的。
2013-10-10 13:24
a592963144
Rank: 2
等 级:论坛游民
帖 子:41
专家分:95
注 册:2013-9-27
收藏
得分:2 
3楼的对了  我试过  乱码也可以
2013-10-10 13:56
a592963144
Rank: 2
等 级:论坛游民
帖 子:41
专家分:95
注 册:2013-9-27
收藏
得分:0 
貌似 要把 void main()  改为  int main ()
2013-10-10 13:58
快速回复:关于跳过循环的问题???
数据加载中...
 
   



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

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