一些编程笔试题

1.编写函数将字符串中的字符’‘移到串的前部分,前面的非’‘字符后移,但不能改变非’‘字符的先后顺序,函数返回串中字符’‘的数量。
测试案例:
原始串为:ab**cd**e*12,
处理后为*****abcde12,函数并返回值为5。

int movStar(char * p, int n)
{
 char * q1 = p+(n-1), *q2 = p+(n-1);
 while(q1>=p)
 {
  if(*q1 != '*')
  *q2-- = *q1;
  q1--;
 }
 int nRet = q2 - q1;
 while(q2>=p)
 {
  *q2-- = '*';
 }
 return nRet;
}

2.给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数

#include <iostream>   
#include <iomanip>   
#include <limits>   
using namespace std;   

void swap_int(int& a, int& b)  
{  
    int t = a;  
    a = b;  
    b = t;  
}  

int main()  
{  
    int numel[] = {1, 23, 2, 34, 21, 45, 26, 22, 41, 66, 74, 91, 17, 64};  
    int sz = sizeof(numel)/sizeof(numel[0]);  
    for(int i =0; i<sz; ++i){  
        cout << numel[i] << " ";  
    }  
    cout << endl;  
    int begin = 0;  
    int end = sz -1;  
    while(begin < end){  
        while(numel[begin]%2 == 1 && end > begin){  
            ++begin;  

        }  
        while(numel[end]%2 == 0 && end > begin){  
            --end;  
        }  
        swap_int(numel[begin], numel[end]);  
    } 

    for(int i =0; i<sz; ++i){  
        cout << numel[i] << " ";  
    }  
    cout << endl;  
    return 0;  

}  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值