网上看到的一道题,给出解法

  网上看到的一道题,给出解法已知一个int型数组USER[30],其中每一个元素或为0或是其下标数加1。要求以字符串形式打印其中不为零的元素。

规则:

1)不连续元素以逗号分割如:1,4,6,27,30

2)连续元素用连字符形式,并用逗号分割每个区段,如:1-4,7,19-30

示例数组:USER[30] = {0,0,3,0,5,0,7,8,9,10,11,12,0,0,0,0,0,0,0,0,0,0,0,24,25,0,0,0,29,0}

写出算法或程序。

经过考虑给出以下算法:

myFun(){
 int USER[30] = {0,2,3,0,5,0,7,8,9,10,11,12,0,0,0,0,0,0,0,0,0,0,0,24,25,0,0,0,29,0};
 bool numChan = true; //是否有不为零的数相连
 bool fir = true; //是否第一次打印
 for(int i=0; i<30; i++){
   if(USER != 0){
     if(fir){
        cout<<USER;
        fir = false;
     }
   else
        cout<<","<<USER;
   while((USER[i+1] != 0) && (i < 29)){
        i++;
        numChan = false;
        }
   if(!numChan)
        cout<<"-"<<USER;
   }
   numChan = true;
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值