程序基础程序员必知:C/C++面试题

C/C++常考基础面试题(更新) 一般的,如果想让if判断一个变量的“真”、“假”,应直接使用if(var)、if(!为了实现C和C++的混合编程,C++提供了C连接交换指定符号extern "C"来解决名字匹配问题,函数声明前加上extern "C"后,则编译器就会按照C语言的方式将该函数编译为_foo,这样C语言中就可以调用C++的函数了。这个面试题主要考查面试者对宏定义的使用,宏定义可以实现类似于函数的功能,但是它终归不是函数,而宏定义中括弧中的“参数”也不是真的参数,在宏展开的时候对“参数”进行的是一对一的替换。 阅读详情

转自:http://edu.gamfe.com/tutor/d/14818.html

 一、输入一个n ,然后在屏幕上打印出NxN 的矩阵!

    例如,

    输入一个3 ,则

    1 2 3

    8 9 4

    7 6 5

    输入一个4 ,则

    1    2  3  4

    12 13 14 5

    11 16 15 6

    10  9  8  7

    参考答案:

#include<stdio.h> 
#include<conio.h> 
#define N 10 

void printCube(int a[][N],int n); 

void main() 
{ 
  int a[N][N],n; 
  printf("input n:\n"); 
  scanf("%d",&n); 
  printCube(&a[0],n); 
  getch(); 
} 

void printCube(int a[][N],int n) 
{ 
  int i,j,round=1; 
  int m=1; 
  for(i=0;i<n;i++) 
a[0]=m++; 
  for(i=n-1;i>=n/2;i--) 
  { 
for(j=round;j<=i;j++) 
  a[j]=m++; 
for(j=i;j>=round;j--) 
  a[j-1]=m++; 
for(j=i;j>round;j--) 
  a[j-1][round-1]=m++; 
for(j=round;j<i;j++) 
  a[round][j]=m++; 
round++; 
  } 
  for(i=0;i<n;i++){ 
for(j=0;j<n;j++) 
 printf("%3d",a[j]); 
printf("\n"); 
  } 
}


二、朗讯面试题 :

    There are two int variables: a and b, don‘t use “if”, “? :”, “switch” or other judgement statements, find out the biggest one of the two numbers.

    参考答案:

    方案一

int max = ((a+b)+abs(a-b)) / 2

    方案二

int c = a -b;
char *strs[2] = {"a
大 ","b 大 "};
c = unsigned(c) >> (sizeof(int) * 8 - 1);

三、朗讯面试题 :如何打印出当前源文件的文件名以及源文件的当前行号?

    参考答案:

通常使用的就是 __FILE__, __LINE__ ,在调试函数中利用 “%s","%ld", 打印就好了。

四、朗讯面试题 :main 主函数执行完毕后,是否可能会再执行一段代码,给出说明?

    参考答案:

crt 会执行另一些代码,进行处理工作。
如果你需要加入一段在 main 退出后执行的代码,可以使用 atexit() 函数,注册一个函数。
语法:
#include <stdlib.h>
int atexit(void (*function")(void));
#include <stdlib.h>
#include <stdio.h>

void fn1( void ), fn2( void ), fn3( void ), fn4( void );

int main( void )
{
  atexit( fn1 );
  atexit( fn2 );
  atexit( fn3 );
  atexit( fn4 );
  printf( "This is executed first.\n" );
}

void fn1()
{
  printf( "next.\n" );
}

void fn2()
{
  printf( "executed " );
}

void fn3()
{
  printf( "is " );
}

void fn4()
{
  printf( "This " );
}

    五、朗讯面试题 :如何判断一段程序是由C 编译程序还是由C++ 编译程序编译的?

    参考答案:

c++ 编译时定义了 __cplusplus
c
编译时定义了 _STDC_

    六、下面这道面试题怎么做(指针)?

#include<stdio.h>
main(){
int c[3][3]={1,2,3,4,5,6,7,8,9};
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
printf("%ld\n",&c[j]);
printf("-------------------------\n");
printf("%ld\n",(c+1));
printf("%ld\n",(*c+1));
printf("%ld\n",&c[0][0]);
printf("%ld\n",**c);
printf("%ld\n",*c[0]);
if(int(c)==int(*c))
printf("equl");
}
为什么 c , *c 的值相等,( c+1 ),( *c+1 )的值不等
c , *c , **c ,代表什么意思?

    参考答案:

c 是第一个元素的地址, *c 是第一行元素的首地址,其实第一行元素的地址就是第一个元素的地址,这容易理解。 **c 是提领第一个元素。
为什么 c , *c 的值相等?
int c 因为直接用 c 表示数组 c[0][0]
printf("%ld\n",*c[0]); 语句已将指针移到数组头。
int(*c) 表示 c0 的值为 1 ,所以相等。
数组 c 的存放空间示意如下:(机器中是行优先存放的)
c[0][0] c[0][1] c[0][2]
c[1][0] c[1][1] c[1][2]
c[2][0] c[2][1] c[2][2]

c 是一个二维数组名,实际上它是一个指针常量,不能进行自加、自减运算,即: c++ 、 c-- 、 ++c 、 --c
都是不允许的;
c :   数组名;是一个二维指针,它的值就是数组的首地址,也即第一行元素的首地址(等于 *c ),也
     等于第一行第一个元素的地址( & c[0][0] );可以说成是二维数组的行指针。
*c : 第一行元素的首地址;是一个一维指针,可以说成是二维数组的列指针。
**c :二维数组中的第一个元素的值;即: c[0][0]
所以:
    c 和 *c 的值是相等的,但他们两者不能相互赋值,(类型不同);
     ( c + 1 ) : c 是行指针,( c + 1 )是在 c 的基础上加上二维数组一行的地址长度,即从 &c[0][0]
     变到了 &c[1][0] ;
    ( *c + 1 ): *c 是列指针,( *c + 1 )是在 *c 的基础上加上二数组一个元素的所占的长度,即从
    &c[0][0] 变到了 &c[0][1]
     从而( c + 1 )和( *c + 1 )的值就不相等了

    七、定义 int **a[3][4], 则变量占有的内存空间为:

    _____参考答案:

int **p; /*16 位下 sizeof(p)=2, 32 位下 sizeof(p)=4*/
总共  3*4*sizeof(p)

 

    八、编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的下一秒。如输入2004 年12 月31 日23 时59 分59 秒,则输出2005 年1 月1 日0 时0 分0 秒。

    参考答案:

判断年份是否是闰年,月份的大小月,
月( 12 进制)、日(与闰年、大小月有关)、时( 24 进制)、分( 60 进制)、妙( 60 进制)

    九、给出下面代码的输出

float a = 1.0f;
cout << (int)a << endl;
cout << (int&)a << endl; //
( int&)a , 是什么意思,是生成一个对 a 的引用吗?
cout << boolalpha << ( (int)a == (int&)a ) << endl;

float b = 0.0f;
cout << (int)b << endl;
cout << (int&)b << endl;
cout << boolalpha << ( (int)b == (int&)b ) << endl;

    输出结果是:

1
1065353216
false
0
0
true

 

 

Paypal开发者中心获取“ClientId”和“ClientSecret”参数 正式环境设置 1、登录到 paypal开发者中心 网址:https://developer.paypal.com/developer/ 点击右上角登录按钮登录 2、左侧栏 - 我的应用程序和凭证 - 点击“创建新应用” 新注册的paypal账号,需要进行邮箱验证,验证通过后,需要等待一段时间(或重新登录),才会出现相关设置项位置 验证邮箱通过后,点击创建新应用 3、按提示填写,保存创建应用 4、点击刚创建的应用进入应用详情页 5、应用详情页获得网站开发人员所需要的“ClientId”和“Client 阅读详情

相关推荐

【通信协议】I2C总线(一主多从)

I2C总线(一主多从)之软件模拟代码详解

m0_75090944的博客 9840

程序员笔试题收集汇总(一)

收集的笔试题,各处摘抄加自己的理解 相关文章: 程序员笔试题收集汇总(一) http://blog.youkuaiyun.com/youyou1543724847/article/details/52383530 程序员笔试题收集汇总(二) http://blog.youkuaiyun.com/youyou1543724847/article/details/52728001 程序员笔试题收集汇总(三

随心的专栏 2万+

贴片二极管SOD封装详解:SOD-123/323/523尺寸焊盘设计要点

表面贴装技术中,二极管封装尺寸直接决定PCB布局与焊接可靠性。SOD封装作为小外形二极管的主流形态,其SOD-123、SOD-323、SOD-523三种规格分别对应不同的功耗与占板面积权衡。理解封装尺寸、焊盘设计计算逻辑和钢网开窗原理,是避免立碑、虚焊等工艺缺陷的关键。在可穿戴设备、电源保护等空间受限场景中,合理选择封装不仅能优化散热路径,还能提升量产良率。本文从焊盘计算、工艺要点到选型策略,全面解析SOD封装的工程实践。

weixin_42520780的博客 306

JAVA工程师 笔试题(2023)

使用对象:2023届软件工程专业毕业生 1 题型设计原理 1.1 题目类型分为三大类,多选题、问答题、编码题,主要检测4个能力:工具、技术、算法、基础编程 多选题 6 题:检测面试者的对编程工具的认知程度,是否匹配我们的项目工具。 问答题 20 题:检测面试者对技术的掌握情况,是否全面掌握 JAVA SE 、JAVA EE、HTML、JavaScript相关技术。(JAVA SE: 编程基础 、面向对象 、IO流 、异常处理 、多线程 、网络编程 、JDBC 、 Servlet 、JSP)

java_zhong1990的专栏 1054

保姆级教程:在Rockchip RK3588 SDK中,如何为你的新硬件板子创建第一个DTS文件

本文提供在Rockchip RK3588 SDK中为自定义硬件创建首个DTS文件的详细教程。通过分析DTS在RK3588开发中的角色、快速定位参考设计、实操步骤及调试验证方法,帮助开发者高效完成硬件板级配置,特别适合嵌入式Linux系统开发者参考。

weixin_28678831的博客 286

vcs中systemverilog和c/c++联合仿真

前言 systemverilog中,可以通过DPI、PLI来与外部其它语言的程序进行交互。PLI又分为三类,TF、ACC和VPI,可以认为是PLI技术的三代演进: 其中VPI(PLI3.0)是TF/ACC的一个超集,目前使用的PLI基本上都是VPI。 与PLI技术相独立的另一个技术就是DPI,DPI技术简化了systemverilog与foreign language的交互步骤,对于开发者相对友好,所以使用相对广泛一些。 本文不对DPI中程序调用/数据交互展开讨论(这部分可以参考绿皮书..

kevindas的博客 1万+

【C++软件开发】面试经典100问

【C++软件开发】面试经典100问

m0_56051805的博客 9180

[多智能体强化学习] 王树森YouTube课程笔记

前言 近期在设计V2X资源分配任务下的状态空间和动作空间,可以说是一筹莫展,是自己菜,现在看来可能也是涉及到一些关于多智能体强化学习实现过程中过于细节的点,目前的知识储备还不够。因此打算用半周到一周的时间重电,希望之后能有进展。 本文内容来自于友人LX所推荐的油管教程,链接如下:多智能体强化学习,一共两节课40min左右。教程废话不多干货不少,老师的声音还好听,推荐直接去看原教程。 这里还要多一嘴,那就是对于强化学习来说,单主体和多主体的界限,在某种程度上来说是很模糊的,并不是场景中有多个主体需要..

观林望实的博客 3363

常见C++面试题及基本知识点总结(一)

【转载请注明出处】:http://www.cnblogs.com/LUO77/p/5771237.html  1. 结构体和共同体的区别。 定义: 结构体struct:把不同类型的数据组合成一个整体,自定义类型。 共同体union:使几个不同类型的变量共同占用一段内存。 地址: struct和union都有内存对齐,结构体的内存布局依赖于CPU、操作系统、编译器及编译时的对齐...

夜空中最亮的星 3455

深入解析国家企业征信系统瑞数6vmp算法逆向实战

本文深入解析了国家企业征信系统所采用的双层防护机制,重点聚焦于瑞数6代vmp算法的逆向实战。文章详细拆解了从加速乐521状态码的绕过,到瑞数412挑战的核心算法还原过程,提供了通过动态Hook、日志分析进行算法逆向,并用Python实现自动化请求链的完整技术方案,旨在为安全研究与技术学习提供参考。

yellow的专栏 612

Python爬虫实战:利用Playwright和反反爬技术高效抓取Bloomberg金融数据

用户行为分析(鼠标移动、点击模式)请求头检测IP频率限制WebSocket通信验证Canvas指纹识别我们的爬虫需要模拟人类行为,使用代理IP池,并合理控制请求频率。

2201_76125261的博客 1020

软件工程师笔试题1

软件工程师笔试题

weixin_48373513的博客 1258

手把手教你学Simulink--单相逆变器模糊逻辑控制策略仿真

本文介绍了在Simulink中设计单相逆变器模糊逻辑控制策略的完整流程。主要包括:1)构建单相逆变器模型;2)使用FuzzyLogicToolbox设计模糊控制器,定义输入输出变量和模糊规则;3)将控制器集成到Simulink模型;4)添加干扰源和示波器;5)配置仿真参数并分析结果。该方法利用模糊控制处理非线性系统的优势,可实现输出电压的精确跟踪,具有良好的鲁棒性。文中提供了详细的步骤说明和示例代码,强调准确设计隶属函数和规则库对控制性能的关键作用。该仿真设计为电力电子控制系统的开发提供了有效支持。

MHD0815的博客 200

C/C++基础知识点面试题

目录 一、虚函数的数据结构,如何工作? 二、const与define的区别? 三、指针与引用的区别? 四、指针与数据的区别? 五、不用临时变量实现两个变量的交换 七、一个C++源文件从文本到可执行文件经历的过程 八、C++11新特性 九、C++和C的不同 十、malloc的原理 十一、内存泄漏、野指针 十二、static 十三、union和struct 十四、new与ma...

找个特立不独行的名的博客 2万+

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

史上最全C/C++面试题汇总

总结一些常见面试题,包括准备面试查阅的和自己实际面试中遇到的。不建议全篇的去背面试题,要学会将面试的知识点进行分类总结,聚合成一块块的知识点,然后去学习串联,推荐《王道程序员面试宝典》这本求职复习书籍,应付一般小厂的面试绰绰有余,内容很全面,建议反复阅读记忆。

weixin_44816732的博客 2万+

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

【C/C++】程序员经典面试题,过来人的总结...

序 青春,一半明媚,一半忧伤。 嗨,这里是狐狸~~ 今天是2022年的1月14日,今天是个好日子呀,阳光明媚,微风不燥,太阳出来的那一刻心都融化了似的,希望每天都可以像今天一样美好吧。 今天给大家讲一下C/C++程序员会遇到的面试题,都是一些常见的题目,大家可以把答案藏住自己先做一遍,效果应该会很好的。 一、找错题 试题1: void test1() {  charstring[10];  char* str1 ="0123456789";  strcpy( str...

C语言C++学习俱乐部:765860056 3221

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

C/C++程序员面试指南

C/C++程序员面试指南编辑本段图书信息   书 名: C/C++程序员面试指南   作 者:杨国祥   出版社: 电子工业出版社   出版时间: 2010-4-1   ISBN: 9787121103599   开本: 16开   定价: 49.00元编辑本段宣传语  从企业面试的角度来梳理C/C++程序员的技术功底   以技术经理的眼光来审视对C

netanimals的专栏 4086

程序员必知:C/C++面试题(8)

转自:http://wxdlut.blog.163.com/blog/static/128770158200992373455791/ 程序员必知:C/C++面试题(8)  1. 以下三条输出语句分别输出什么?[C易]   char str1[]       = "a

glorin的专栏 1213

C/C++程序员面试题

本文的写作目的并不在于提供C/C++程序员求职面试指导,而旨在从技术上分析面试题的内涵。文中的大多数面试题来自各大论坛,部分试题解答也参考了网友的意见。  许多面试题看似简单,却需要深厚的基本功才能给出完美的解答。企业要求面试者写一个最简单的strcpy函数都可看出面试者在技术上究竟达到了怎样的程度,我们能真正写好一个strcpy函数吗?我们都觉得自己能,可是我们写出的strcpy很可能只能拿

cmgg的专栏 1985

C/C++程序员面试题集

2013年3月20日 今天偶然间看到一个关于C++面试的博客,里边介绍的很基础很全面,基本上涵盖了我这半年多来面试时所遇到的各种问题,链接如下: http://edu.yesky.com/84/3041584.shtml 2012年10月18号百度PC客户端岗位一面电话面试面试题: 前奏:因为阿里巴巴的面试不能由大连调北京,我就风尘扑扑的从北京回到大

leo115的专栏 2万+

Linux C/C++面试题汇总

Linux C/C++面试题汇总前言计算机基础程序的内存空间进程和线程相关关键字conststaticvolatileC/C++指针 前言 最近面试的比较多,看了很多关于面试的内容,有些平时工作用的比较少或者没有主要到的地方,长时间不看就会忘记,如果下次面试还需要再次找这些东西比较麻烦,所以写此篇文章就是为了方便以后面试,也给一些即将面试的人提供一些帮助。以后如果面试有新的值得关注的问题作者会及时更新。 计算机基础 程序的内存空间 堆栈段(stack): 由编译器自动分配和释放,存放函数的参数和局部变量。

qq_33865609的博客 4629

C++程序员内功修炼——Linux C/C++编程技术汇总

在软件开发的宏大版图中,C++ 语言宛如一座巍峨的高山,吸引着无数开发者攀登探索。而 Linux 操作系统,以其开源、稳定、高效的特性,成为了众多开发者钟爱的开发平台。将 C++ 与 Linux 相结合,就如同为开发者配备了一把无坚不摧的利刃,能够在系统级编程、高性能计算、游戏开发等诸多领域披荆斩棘。对于 C++ 程序员而言,掌握 Linux 环境下的 C/C++ 编程技术,不仅仅是提升自身技能的关键一步,更是在激烈的职场竞争中脱颖而出的必备法宝。

深度Linux 2681

C/C++程序员应聘常见面试题深入剖析

1.引言   本文的写作目的并不在于提供C/C++程序员求职面试指导,而旨在从技术上分析面试题的内涵。文中的大多数面试题来自各大论坛,部分试题解答也参考了网友的意见。  许多面试题看似简单,却需要深厚的基本功才能给出完美的解答。企业要求面试者写一个最简单的strcpy函数都可看出面试者在技术上究竟达到了怎样的程度,我们能真正写好一个strcpy函数吗?我们都觉得自己能,可是我们写出的strcpy很

原始世界 1901

C/C++程序员常见面试题深入剖析

C/C++程序员常见面试题深入剖析 1.引言 本文的写作目的并不在于提供C/C++程序员求职面试指导,而旨在从技术上分析面试题的内涵。文中的大多数面试题来自各大论坛,部分试题解答也参考了网友的意见-。  许多面试题看似简单,却需要深厚的基本功才能给出完美的解答。企业要求面试者写一个最简单的strcpy函数都可看出面试者在技术上究竟达到了怎样的程 度,我们能真正写好一个strcpy函数吗

wangjieest的专栏 711

C/C++程序员 面试经历总结

最近在找工作,遇到了一些面试题,很惭愧的是很多都没答上来。    现在把一些问题总结一下,算是记录一下面试的经历吧。以后有空简单地回答一下,   同时也欢迎各位同仁解答,共同学习一下吧!  一、嵌入式C语言面试回忆主观题:1、在嵌入式系统中,volitate的作用是什么?并给出三个不同的例子。答:一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值...

木木的博客 6203
上一篇: C语言中typedef用法
下一篇: 人人网笔试题目(c++)
Theodore_Lin
博客等级 码龄16年 24粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值