【C++】C/C++面试之17道经典编程题目分析

本文汇总了17道C/C++面试的经典编程题目,涵盖函数接口设计、算法和基础语法。题目包括字符串比较、回文数判断、字符串操作等,每个题目均附有题解分析,旨在帮助读者提升编程技能。
摘要由CSDN通过智能技术生成

本篇是C/C++面试题目,共计17道经典题。其中涵盖了C的各种基础语法和算法,以函数接口设计和算法设计为主。

(读者可以看着题目先做一遍,做完再看解析,大家可以互相学习)

目录:

  • 函数书写
  • 经典题题目
  • 题解分析

函数书写

函数是为了提高代码重复运用的方法。
接口设计:
功能 名字 参数类型、参数个数及意义 返回值类型及意义
算法设计:
熟练掌握C语言十几种基础算法。

Tips:
1、函数命名(见名知意),变量名。
2、函数返回值。
3、函数参数的设计。
4、printf是一个调试语句,不要出现在子函数中。
5、子函数中不要出现常量。
6、传递字符串时,不要传递长度。传递数组时,传递起始地址和有效数据的个数。
7、if…else分支语句需要return时,return一般在if语句中。
8、能调用库函数的地方,可以使用库函数。
9、const的使用。

经典题题目

1.比较字符串,输出它们第一个不同字母的位置,大小写不敏感。
2.判断一个数是否为回文数。(数字:1234321)
3.比较两个字符串的长短,并返回结果。
4.给一个字符串,编程取其中一个特定的字符并输出。
5.比较两个英文字符串的不相同字符的位置。(忽略字母大小写)
6.检索出字符串中出现次数最多的那个字符,不考虑大小写然后返回该字符。
7.查找字符串中出现次数最多的字符,并返回该字符,只考虑小写字母,不考虑不同字母出现次数一样多的情况。
8.输入一个整数n,计算不大于n的数中和7相关的数的个数,包括能被7整除的数和含有字符7的数。
9.输入一个整数将每一位上的奇数放在一个新整数中,高位放置高位,低位放置低位。
10.输入一串数,将其最小的放在第一位,次小的放在最后一位,再小的放在第二位,以此类推。
11.函数,传入参数为应付钱数。返回值为买家最小付出钱的张数。(int getMoneyNum(int iInputMoney))例如:买家应付351元,最少张数为5。备注:可支付的钱币面值只有100、50、10、5、1,不考虑2、20以及小数部分。
12.设有几个人围坐在一圈并按顺时针方向从1到几编号,从第S个人开始进行1到m的报数。报数到第M个人,此人出圈。再从他的下一个人重新开始1到M的报数,如此进行,一直到所有人都出圈为止,输出报数顺序。(此题为选做题)
13.对姓氏排名
char str[ ] = “zhang wang li zhao”
char str_new[ ] = “li wang zhang zhao”
14.将一组整数数据中为奇数的数提取出来,高低位顺序不变。如:8 3 7 9 5 2 1 4 ==》3 7 5 1。
15.一组2n+1个元素的正整形数组,按升序排序,然后将小于中间数值的成员替换为中间的值。例如:1,2,3,4,5,输出结果为:3,3,3,4,5。
16.输入一个四位的十进制整数,编程实现将这四位整数转化成十六进制的字符串,并输出十六进制的字符串。(注意负数的处理)
17.输入一个四位的整数,比如:2367,输出:2+3+6+7=18.(只需结果即可)

题解分析

1.比较字符串,输出它们第一个不同字母的位置,大小写不敏感。

int str_cmp_diff(const char *str1,const char *str2)
{
   
    int i = 0;
    while(str1[i] != '\0' && str2[i] != '\0')
    {
   
        if((str1[i] | 0x20) != str2[i] | 0x20))
            return i + 1;
        i++;
    }
    if(str1[i] != str2[i])
        return i + 1;
    return 0;
}
int str_cmp_diff(const char *str1,const char *str2)
{
   
    while(str1[i] != '\0' || str2[i] != '\0')
    {
   
        if((str1[i] | 0x20 != str2[i] | 0x20)
            return i + 1;
        i++;
    }
    return 0;
}

2.判断一个数是否为回文数。(数字:1234321)

bool isrevert(const int data)
{
   
    int temp = 0;
    int num = data;
    while(num > 0)
    {
   
        temp = num % 10 + temp * 10;
        num /
  • 1
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值