C++面试题一大波

//打印1到最大的n位数。
//题目:输入数字n,按顺序打印出从1到最大的n位十进制数。比如:
//输入3,则打印出1、2、3一直到最大的3位数999.
//[陷阱]:这个题目很容易想到的办法就是先求出最大的数。然后循环输出就可以了。
#include <iostream>
#include <string.h>
using namespace std;
void Grial(char *str, char *s)
{
    if (*s == ‘\0‘)
    {
        cout << str << endl;
        return;
    }
    else
    {
        for (int i = 0; i <= 9; i++)
        {
            Grial(str,s+1);
            *s = ‘1‘ + i;
        }
    }
}
void Grial(int x)
{
    char *s = new char[x];
    memset(s,‘0‘,sizeof(s));
    *(s + x) = ‘\0‘;
    char *str = s;
    Grial(str, s);
}
int main()
{
    Grial(2);
    return 0;
}
#include <iostream>
using namespace std;

void Grial(char *str,int n)
{
    int count = 1;
    char *p = str+n;
    while (count != 0 && *str != ‘1‘)
    {
        if (*p - ‘0‘ + count >= 10)
        {
            *p = ‘0‘;
            count = 1;
        }
        else
        {
            *p += count;
            count = 0;
        }
        p--;
    }
}
void Grial(int x)
{
    char *str = new char[x + 1];
    memset(str, ‘\0‘, sizeof(str));
    for (int i = 0; i <= x; i++)
    {
        strcat(str,"0");//多开辟一位,用来作为终止判断条件。
    }
    char *p = str;
    while (1)
    {
        p = str;
        Grial(p,x);
        p = str;
        while (*p == ‘0‘)p++;
        if (*str == ‘1‘ && p == str)break;//终止位置。
        cout << p << endl;
    }
}
int main()
{
    Grial(3);
    return 0;
}
#include <iostream>
using namespace std;
/*
3.数值的正数次方
题目:
实现函数double power(double base, int exponent),
求base的exponent次方,不得使用库函数,不需要考虑大数问题。
注意:考虑非法输入的返回。
*/

double GetSum(double base,int exponent)
{
    double count = 1;
    while (exponent)
    {
        count *= base;
        exponent--;
    }
    return count;
}
double power(double base,int  exponent)
{
    if (base == 0)return 0;
    if (exponent == 0)
        return 1;
    double count = 1;
    if (exponent > 0)
    {
        count = GetSum(base,exponent);
    }
    else
    {
        count = 1/GetSum(base, -exponent);
    }
    return count;
}
int main()
{
    cout << power(2, -2) << endl;
    return 0;
}
#include <iostream>
using namespace std;
//求数组中出现次数超过一半的数字。
int Grial(int a[], int low,int high,int M)
{
    int i = low;
    int j = high;
    if (i >= j)return 0 ;
    int key = a[i];
    while (i < j)
    {
        while (i < j && a[j] > key)j--;
        a[i] = a[j];
        while (i < j && a[i] < key)i++;
        a[j] = a[i];
        if(i<j)
        {
        i++;
        j--;
        }
    }
    a[i] = key;
    if (i >= M)
    {
        return a[i];
    }
    else if (i<M)
    {
        return Grial(a, i + 1, high, M);
    }
    else
    {
        return Grial(a, low, i - 1, M);
    }
}
int main()
{
    //int a[] = {0,1,1,2,1,1,2};
    int a[] = { 0, 1, 1, 1, 1, 1, 1, 4, 2, 3, 4 };
    int n = sizeof(a)/sizeof(int);
    int mid = (n % 2 == 0) ? (n / 2 + 1) : n / 2;
    cout << Grial(a,0,n-1,mid) << endl;
    return 0;
}

#include <iostream>
using namespace std;
//求数组中出现次数超过一半的数字。
int Grial(int a[], int n)
{
    int count = 0;
    int val;
    for (int i = 0; i < n; i++)
    {
        if (count == 0)
        {
            val = a[i];
        }
        if (val == a[i])
        {
            count++;
        }
        else
        {
            count--;
        }
    }
    return val;
}
int main()
{
    int a[] = { 0, 1, 1, 1, 1, 1, 1, 4, 2, 3, 4 };
    cout << Grial(a, sizeof(a) / sizeof(int));
    return 0;
}
/*
调整数组使奇数全部都位于偶数前面。
题目:
输入一个整数数组,实现一个函数,
来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,
所有偶数位于数组的后半部分。
*/

/*#include <iostream>
using namespace std;
void Grial(int a[], int n)
{
    int i = -1;
    int j = 0;
    while (j<n)
    {
        while (a[j] % 2 == 0)j++;
        i++;
        if (j == n)break;
        if (i != j)
        {
            a[i] ^= a[j];
            a[j] ^= a[i];
            a[i] ^= a[j];
        }
        j++;
    }
}
int main()
{
    int a[] = { 4, 5, 3, 1, 4, 6, 7, 8, 0, 6, 5643, 5, 6,1 };
    Grial(a, sizeof(a)/sizeof(int));
    for (int i = 0; i < 14; i++)
    {
        cout << a[i] << "  ";
    }
    cout << endl;
    return 0;
}
/*
3.数字在排序数组中出现的次数。
题目:
统计一个数字在排序数组中出现的次数。例如:排序数组{1,2,3,3,3,3,4,5}
和数字3,由于3出现了4次,因此输出4.
*/
#include <iostream>
using namespace std;

int Grial(int a[], int n,int val)
{
    //二分查找。
    int i = 0;
    int j = n - 1;
    int mid;
    int count = 0;
    while (i <= j)
    {
        mid = (i + j) / 2;
        if (a[mid]>val)
        {
            j = mid - 1;
        }
        else if (a[mid] < val)
        {
            i = mid + 1;
        }
        else
        {
            i = mid - 1;
            j = mid + 1;
            count++;
            while (a[i--] == val)count++;
            while (a[j++] == val)count++;
            return count;
        }
    }
    return -1;
}
int main()
{
    int a[] = { 1, 2, 3, 3, 3, 3, 4, 5 };
    cout << Grial(a, sizeof(a) / sizeof(int),5) << endl;
    return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-07-30 18:54:54

C++面试题一大波的相关文章

一大波Java来袭(五)——Java集合概述

把"Java集合"比作是容器,可以把多个对象(实际:是对象的引用),扔在容器中. JDK1.5之前,被丢进集合中的对象,会丢失起数据类型.默认为Object类型 JDK1.5之后,不会丢失数据类型,因为引入了"泛型"(作为下文重点) 本文将结合数据结构,重点讲述Java的4种集合体系的功能和用法,并给出不同应用场景改如何选择? 一.同样是用于"存储数据",既可以使用"数组",有可以使用"集合",有什么区别吗

融资晚报:一大波创业公司获得融资

融资晚报:一大波创业公司获得融资 2015-03-16 25 公众小额捐赠平台路人甲完成200万天使融资,“路人甲”由友成基金会孵化,是北京汇涓时代网络科技有限公司旗下产品.路人甲亦是在猎云投融资对接平台挂牌的创业项目.路人甲之后可能会沉淀 积分系统等新的方式,近期会联合各个公益组织,结合阶段性热点,组织各类主题活动,将大量的零散存量捐赠人导入“路人甲”,形成核心用户群体. 3D虚拟试衣系统量体试衣获得来自浙商创投的天使投资,投资数额未透露.量体试衣亦是去年底在猎云投融资对接平台上挂牌的创业项目

一大波Java来袭(四)String类、StringBuilder类、StringBuffer类对比

本文主要介绍String类.StringBuffer类.StringBuilder类的区别  : 一.概述 (一)String 字符串常量,但是它具有不可变性,就是一旦创建,对它进行的任何修改操作都会创建一个新的字符串对象. (二)StringBuffer 字符串可变量,是线程安全的,和StringBuilder类提供的方法完全相同. 区别在于StringBuffer每个方法中前面添加了"synchronized",保证其是线程安全的. (三)StringBuilder 字符串可变量,

一大波Java来袭(二)异常处理

概要解析: 本章的知识点可以记为:1图+5关键字+先逮小的.后逮大的  一.基础 (一)定义 1.异常 是指在程序运行的时候发生的一些异常事件.良好的程序设计应该在异常发生的时候提供处理异常的方法,使得程序不会因为异常的发生而中断.因此Java提供的用于处理程序中错误的一种机制. 2.抛出异常throw java程序的执行过程中如出现异常事件,可以生成一个异常类对象(封装了异常事件的信息),被提交给java运行时系统. 简单理解为:推卸责任.马路上遇到了交通事故,不需要自己处理,而是拨打110,

一大波Java来袭(三)Java常用类

本文简单介绍集中Java常用类 不同种类的工具用于处理不同的工作.比如:厨房中的工具用于烹饪:农场中的工具用于养殖--对于Java的学习中处理不同的工作也要采用不同的工具.如:处理数学函数问题用Math类.针对文件的操作采用File类--这也充分体现了Java面向对象的特点 一.字符串类(重点理解内存模型) (一)String Java.lang.String字符串常量,具有不可变性. (二)StringBuffer Java.lang.StringBuffer字符串可变量,是线程安全的. (三

万网知您所需,“域”众不同--.link/.love/.help等一大波新顶级域来袭!

万网在新顶级域市场再次发力,一大波域名界的小鲜肉新鲜上线,价格优惠,限时低至9元起,更有丰富的可注册资源. 一下,即刻世界,用记录生活,用观看世界, 用和做最好的! 新上线的个性化新顶级域价格如下: 限时优惠,猛戳抢购

一大波资源来袭:工具,源码,职场攻略

又要一年了,不要再做个傻傻的程序员,然后不停的问:为什么技术好.工作认真却还败给那些不如自己的人,觉得很是不公平, No No No,你还修炼的不够,不过听Dev的刘说移动应用开发者要涨工资啦,有木有很幸福的赶脚,还有人说由于科技人才短缺,美国放松了留美毕业生工作政策,但也有其它报道称美国技术类绿卡申请越来越难,奥巴马新宣布的移民新政也不利于留学生的发展,这到底是怎么回事呢?难道在美国的留学生会回来抢国内旭元的饭碗,还是去看看是不是真得吧. 对了,刚才说到修炼不够,我是来送福利的,给你的一大波资

圣诞来了咋能没福利,瞧一瞧、一大波

来,先俗一个,时光荏苒,转眼又一年将要过去,圣诞元旦双节来临之际,小编送上一大波福利. 还是说点现实的吧,哪个对你有用记下来,赚福利.  一.腾讯应用宝携手肯德基"圣诞送壕礼"    壕礼:免费全家桶,数百万微信红包和单反相机等.    活动时间:12月20日-12月29日8:00-24:00 从12月20日开始,在遍布全国4500家肯德基店中,顾客可以轻易发现颜色艳丽的"红包'壕'礼"易拉宝.安卓手机用户在只要按照提示,通过腾讯应用宝下载肯德基客户端后就能在APP

福利!双十一期间,一大波免费公开课来袭!!

双十一,除了剁手买买买,还有什么福利 学院为爱学习的孩纸们准备一场双十一饕餮大餐 从2号-11号,一大波免费直播公开课来袭!!!学习走起来,快快挑选您中意的场子,加入直播QQ群吧,每晚8:00-9:30,直播准时开始! Q群席位有限,来晚了站票都没了啊!! 51CTO学院双十一期间免费直播公开课 时间 课程链接 讲师 名称 QQ群 加群超链接 11.02 http://edu.51cto.com/course/11229.html 刘浩洋 项目管理PMP实战应用 617561547 https: