2016-3-21机试第一道题

本文通过分享编程经验,深入探讨了删除特定条件元素的算法实现,包括数组输入处理、条件判断及逻辑优化,旨在提高读者的编程技能和理解深度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

事前刚运动完 想着不去了 不过想着多去增加些经验,还是去了,2小时机试还是挺快,我只做了第一道题目,第二道是停车管理系统,第三道是逆波兰操作符转换
第一题:从一个整数序列中删除满足特定条件的元素
条件:这里写代码片
1、被7整除
2、个位、十位、百位、千位都为7的数
3、数组长度<100,数组元素大小>0&& <10000;
要求输入元素之间用逗号隔开
第一种思路:把符合特定条件的元素,不输出

#include<iostream>
#include<vector>
using namespace std;
bool Delete(int);
int main(){
     vector<int> tmp;
     vector<int>::iterator piter;
     int x;
     cout<<"Please enter an array of int seperated with comma:";
     while(cin)
     {
          char temp;
          cin>>x;
          if(x>0 && x<10000)
            tmp.push_back(x);
          temp = cin.get();
          if(temp == '\n')
               break;
     }//这段代码能很好的实现输入数组元素用逗号隔开,原来cin还有一些方法也,果然需要多写这样的题目,才记忆深刻!!!
     if(tmp.size() <=100){
         for(piter = tmp.begin(); piter != tmp.end(); piter++){
            if(!Delete(*piter)){
               cout<<*piter<<' ';
               cout<<endl;
            }
        }
     }

     return 0;
}

bool Delete(int tmp)
{
     if(!(tmp%7))
          return true;;
     if(tmp/1000 == 7)
          return true;
     if((tmp%1000)/100 == 7)
          return true;
     if((tmp%100)/10 == 7)
          return true;
     if((tmp%10) == 7)
          return true;
     return false;
}

第二种思路:把符合条件的元素删除

#include<iostream>
#include<vector>
using namespace std;
int main(void){
    vector<int> a;
    vector<int>::iterator ix;
    int x;
    cout<<"Please enter an array of int seperated with comma:";
    while(cin){
        char temp;
        cin>>x;
        if(x>0 && x<10000){
        a.push_back(x);
        }
        temp=cin.get();
        if(temp == '\n')
            break;
    }
    if(a.size() <= 100 ){
    for(ix=a.begin();ix!=a.end();){
        if((*ix %7)==0)
            ix=a.erase(ix);
        else if((((*ix %1000)%100)%10) == 7)
            ix=a.erase(ix);
        else
            ix++;
        if(ix == a.end())
            break;
    }
    }
    for(ix=a.begin();ix!=a.end();ix++)
        cout<<*ix<<endl;
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值