面试模拟题1(C语言)
- 格式:doc
- 大小:56.50 KB
- 文档页数:14
C语言、基础1、Heap与stack的区别答案:Heap是堆,stack是栈。
Stack的空间由操作系统自动分配/释放,Heap上的空间手动分配/释放。
Stack空间有限,Heap是很大的自由存储区C中的malloc函数分配的内存空间即在堆上,C++中对应的是new操作符。
程序在编译期对变量和函数分配内存都在栈上进行,且程序运行过程中函数调用时参数的传递也在栈上进行。
难度:简单分析:考查应试者对于程序内存最基本的认识。
2、关键字volatile有什么含意?并给出3个不同的例子。
答案:一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。
精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。
下面是volatile变量的几个例子:1). 并行设备的硬件寄存器(如状态寄存器)2). 一个中断服务子程序中会访问到的非自动变量3). 多线程应用中被几个任务共享的变量难度:中等分析:考查嵌入式系统中常用的volatile变量。
这是区分C程序员和嵌入式系统程序员的最基本的问题。
3、关键字static的作用是什么?答案:在C语言中,关键字static有3个明显的作用。
在函数体内,一个被声明为静态的变量在这一函数被调用的过程中维持其值不变。
在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所有函数访问,但不能被模块外其他函数访问。
它是一个本地的全局变量。
在模块内,一个被声明为静态的函数只可被这一模块内的其他函数调用。
那就是,这个函数被限制在声明它的模块的本地范围内使用。
难度:中等分析:主要考查应试者是否懂得本地化数据和代码范围的好处和重要性。
4、位操作嵌入式系统总是要用户对变量或寄存器进行位操作。
给定一个整型变量a,写两段代码,第一个设置a的bit 3,第二个清除a 的bit 3。
在以上两个操作中,要保持其它位不变。
《C语言程序设计》模拟题1一、选择题:1.一个C语言的源程序中__A____。
A)必须有一个主函数 B)可以有多个主函数C)必须有主函数和其他函数 D)可以没有主函数2.执行以下语句的结果为__C_ __。
y=10; x=y++;A)x=10, y=10 B)x=11, y=11C)x=10, y=11 D)x=11, y=103.执行以下程序段后,c3的值是__A____。
int c1=1,c2=2,c3;c3=c1/c2;A) 0 B) 1/2 C) 0.5 D) 14.C语言中字符型(char)数据在内存中的形式存储是__D ___。
A) 原码 B) 补码 C)反码 D) ASCII码5.下列常数中不能作为C的常量的是__ D____。
A) 0xA5 B) 2.5e-2 C) 3e2 D) 2e32.66.C语言中整数-8在内存中的存储形式是__B ____。
A) 1111 1111 1111 1000 B) 1000 0000 0000 1000C) 0000 0000 0000 1000 D) 1111 1111 1111 01117.已知 int i,a;执行语句"i=(a=2*3,a*5),a+6;"后,变量i的值是_B ____。
A)6 B)12 C)30 D)368.已知函数abc的定义为:void abc ( ){ ....... }则函数定义中void的含义是_ A___。
A)执行函数abc后,函数没有返回值B)执行函数abc后,函数不再返回C)执行函数abc后,可以返回任意类型D)以上三个答案全是错误的9.以下程序的输出结果是_C ___。
main(){ int i,x[3][3]={1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++) printf("%d,",x[i][2-i]);}A) 1,5,9, B) 1,4,7, C) 3,5,7, D) 3,6,9, 10.已知:double *p[6];它的含义是__C __。
一、单项选择题(在每小题的四个备选答案中,选出一个正确的,并将正确答案的号码填在题后的括号内,每小题1分,共14分)1、程序运行时显示出错信息,可以排除下列哪一个因素(D)A、算法错误B、运行时输入数据错误C、未通过编译D、系统资源配置不当2、语句"float pi=3.1415926535;"将(D)A、导致编译错误B、说明pi为初值3.1415926535的单精度实型常数C、导致运行时的溢出错误D、说明pi为初值3.141593的单精度实型变量3、表达式!x||a==b等效于(D)A、!((x||a)==b)B、!(x||y)=bC、!(x||(a==b)D、(!x)||(a==b)4、字符变量ch="A",int类型变量K=25,printf("%d%d%d\n".ch,k,ch>k);输出(B)A、65,25,1B、65251C、65,25,fD、65 25 f5、下列语句应将小写字母转换为大写字母,其中正确的是(A)A、if(ch>="a"&ch<="z")ch=ch-32;B、if(ch>"a"&&ch<="z")ch=ch-32;C、ch=(ch>"a"&&ch<="z")?ch-32:"";D、ch=(ch>"a"&&ch<"z")?ch-32:ch;6、下列语句中与语句while(i>=0&&i<=10){if(i==5)continue;printf("%f\n",1.0//(i-5));i++;}功能相同的是(A)A、for(;i>=0&&i<=10;i++)if(i!=5)printf("%f\n",1.0/(i-5));B for(;i>=0&&i<=10;i++)if(i==5)printf("%f\n",1.0/(i-5));C、for(;i>=0&&i<=10;i++)if(i!=5)printf("%f\n",1.0/(i-5));else break;D、for(;i<=0&&i>=10;i++)if(i!=5)printf("%f\n",1.0/(i-5));7、下列各语句定义了数组,其中哪一个是正确的(C)A、int s1[5],s2[4,3];B、int n,a[n];C、char st [5]="A";D、int x(10),y(10);8、定义带参数的宏"#define jh(a,b,t) t=a;a=b;b=t",使两个参数a、b的值交换,下列表述中哪个是正确的(D)A、不定义参数a和b将导致编译错误B、不定义参数a、b、t将导致编译错误C、不定义参数t将导致运行错误D、参数a、b、t不是变量,不必定义类型9、假如指针p已经指向某个整型变量x,则*p相当于(D)A、&xB、&pC、*xD、x&x10、数组定义为"int a[4][5];",下列哪一个引用错误的(D)A、*aB、*(*(a+2)+3)C、&a[2][3]D、++a11、共同体定义为"union data {char ch;int x;} a;",下列哪一个是不正确的()A、a.ch="x";B、a.x=10;a.x--;C、a={"x",1}D、a.ch="x";a.ch--12、按位与运算:int a=7,b=12,c=a&b;变量c的值是(B)A、19B、4C、5D、913、右移运算:int a=7,c=a>>1;变量c的值是(B)A、6B、3C、15D、2214、为读写打开一个文本文件a:\aa.dat,下列语句中哪一个是正确的(C)A、fp=fopen("a:\aa.dat",k"io");B、fp=fopen("a:\aa.dat","w");C、fp=fopen("a:\aa.dat","a+");D、fp=fopen("a:\aa.dat","r");二、填空题(每小题1分,共14分)1、设int x=17,y=5;执行语句x%=x++/--y后x的值为 2 。
一.D A C A A B C B A B A A A D C二.TFTFT TFFTF TFFFT FFTTF三. 3 4,4 1 0 0 递归 b 20四1.【参考代码】double y=0;int i;for(i=0; i<=m; i++)y+=1.0/(i+5);return(y);2.【参考代码】int i,max,min;max=min=a[0];for(i=1;i<n;i++)if(a[i]>max) max=a[i];else if(a[i]<min) min=a[i];return(max*min);五1.【参考答案】for (k=4; k<=n; k++)【参考答案】a=b;【参考答案】return d;2.【参考答案】void fun(char *str, char ch )【参考答案】if ( *str == '\0' )【参考答案】str[1] = '\0';六1.【参考答案】i=1【参考答案】200【参考答案】f12.【参考答案】a,bb,a【参考答案】x>yy<x一单选1.下面四个选项中,均是不合法的用户标识符的选项是()。
A、float la0 _AB、A P_0 doC、_123 temp intD、b-a goto int2.表达式18/4*sqrt(4.0)/8值的数据类型为()。
A、doubleB、floatC、intD、不确定3.设:long w=65535,t=7654321;根据下面的输出结果,正确的程序段是( ).w=65535,t=7654321endA、printf("w=%5d,t=%7d\n",w,t);printf("%s","end');B、printf("w=%5ld,t=%7ld",w,t);printf("%c","end");C、printf("w=%5ld,t=%7ld\n",w,t);printf("%s","end");D、printf("w=%5u,t=%7u\n",w,t);printf( "end");4.选择结构中的条件与循环结构中循环成立的条件,在写法上可以是任一表达式,但其值只能被判断为“真”或“假”。
c语言面试题C语言面试题C语言是一种广泛应用于系统编程和嵌入式开发领域的计算机编程语言。
如果你正在准备面试,那么掌握一些常见的C语言面试题是非常重要的。
本文将为你提供一些常见的C语言面试题,帮助你更好地准备面试。
一、基础知识类题目1. 什么是C语言?请简要介绍一下C语言的特点。
2. C语言中的标识符和关键字有什么区别?3. C语言中的数据类型有哪些?请列举并简要描述每种数据类型的特点。
4. 请解释一下指针的概念,并说明指针和数组之间的关系。
5. 什么是宏定义?请举一个宏定义的例子并说明其作用。
二、语法类题目1. 请解释一下C语言中的条件语句和循环语句,并举例说明。
2. 如何在C语言中定义一个函数?并简要说明函数的作用。
3. C语言中有哪些类型的运算符?请举例说明每种运算符的用法。
4. 请解释一下C语言中的结构体,并说明如何定义和使用结构体。
5. 什么是递归函数?请给出一个递归函数的例子并说明其执行过程。
三、面向对象编程类题目1. C语言是否支持面向对象编程?请说明理由。
2. 请简要介绍一下C语言中的封装、继承和多态的概念。
3. 在C语言中如何实现封装?请给出一个封装的例子,并说明每个部分的作用。
4. 请解释一下C语言中的函数指针,并说明函数指针和回调函数之间的关系。
5. 如何模拟实现C语言中的继承和多态特性?请给出一个示例。
四、内存管理类题目1. 什么是内存泄漏?请举一个例子,并说明如何避免内存泄漏。
2. 在C语言中如何申请和释放内存?请给出相应的代码示例。
3. 请解释一下C语言中的堆和栈,并说明它们的区别和用途。
4. 如何实现动态内存分配和动态数组的功能?请给出一个示例。
5. 请解释一下C语言中的内存对齐和内存对齐规则。
五、文件处理类题目1. 请简要介绍一下C语言中的文件处理机制。
2. 如何在C语言中打开和关闭文件?请给出相应的代码示例。
3. 如何读取和写入文件中的数据?请给出相应的代码示例。
C语言程序设计模拟题1.由C语言编写的代码程序()。
A.可直接执行B.是一个源程序C.经过编译即可执行D.经过编译解释才能执行【答案】B。
解析:C语言编写的代码程序是一个源程序,C语言编写的代码程序需要经过编译、连接、解释才能执行。
2.按照C语言规定的用户标识符命名规则,不能出现在标识符中的是()。
A.大写字母B.中划线C.数字字符D.下划线【答案】B。
解析:C语言的自定义标识符只能有字母、数字、下划线。
3.下列选项中,不能用作标识符的是()。
A._1234_B._1_2C.int_2_D.2_int_【答案】D。
解析:标识符只能以字母或下划线开头。
4.以下选项中合法的用户标识符是()。
A.longB._2TestC.3DmaxD.A.dat【答案】B。
解析:A为关键字,C开头只能是字母或下划线,D标识符中只能有字母、数字、下划线。
5.以下不能定义为用户标识符的是()。
A.MainB._0C._intD.sizeof【答案】D。
解析:sizeof为关键字,不能用作用户标识符。
6.下列定义变量的语句错误的是()。
A.int _int;B.double int_;C.char For;D.float US$;【答案】D。
解析:标识符只能有字母、数字、下划线。
7.在C语言中,合法的实型常数是()。
A.5E2.0B.E-3C.2E0D.1.3E【答案】C。
解析:实型常量e的前面要有数,e的后面为整数。
8.在C语言中,合法的实型常数是()。
A.1.2E0.5B.3.14159EC.5E-3D.E15【答案】C。
解析:实型常量e的前面要有数,e的后面为整数。
9.以下选项中,不能作为合法常量的是()。
A.1.234e04B.1.234e0.4C.1.234e+4D.1.234e0【答案】B。
解析:实型常量e的前面要有数,e的后面为整数。
10.以下不合法的数值常量是()。
A.011B.1e1C.8.0E0.5D.0xab【答案】C。
第1篇一、基础知识1. 题目:简述半导体材料的特点及其分类。
解析:半导体材料具有导电性介于导体和绝缘体之间的特性。
半导体材料分为元素半导体和化合物半导体。
元素半导体主要有硅、锗等,化合物半导体主要有砷化镓、磷化铟等。
2. 题目:解释PN结的形成原理及其特性。
解析:PN结是由P型半导体和N型半导体组成的。
在PN结形成过程中,P区的空穴和N区的电子相互扩散,形成扩散区。
扩散完成后,由于电荷积累,在PN结两侧形成内建电场,阻止电荷继续扩散。
PN结具有单向导电性、整流作用、电容特性等特性。
3. 题目:什么是集成电路?简述集成电路的发展历程。
解析:集成电路是将多个晶体管、二极管、电阻、电容等元件集成在一个半导体芯片上,实现一定功能的电路。
集成电路的发展历程经历了以下阶段:分立元件阶段、小规模集成电路阶段、中规模集成电路阶段、大规模集成电路阶段、超大规模集成电路阶段。
4. 题目:什么是CMOS技术?简述CMOS技术的特点。
解析:CMOS技术是一种互补金属氧化物半导体技术,由N沟道MOSFET和P沟道MOSFET组成。
CMOS技术具有以下特点:低功耗、高集成度、低噪声、良好的温度稳定性等。
二、模拟电路1. 题目:简述运算放大器的特点及其应用。
解析:运算放大器是一种高增益、差分输入、单端输出的放大器。
运算放大器具有以下特点:高增益、低输入阻抗、高输出阻抗、带宽较宽等。
运算放大器广泛应用于模拟信号处理、模拟电路设计等领域。
2. 题目:解释负反馈的概念及其作用。
解析:负反馈是将输出信号的一部分反馈到输入端,与输入信号进行叠加,从而改变电路的放大倍数、带宽、线性度等特性。
负反馈的作用包括:稳定电路工作点、提高电路线性度、扩展电路带宽等。
3. 题目:什么是滤波器?简述滤波器的基本类型及其特点。
解析:滤波器是一种允许信号通过而阻止或削弱其他信号通过的电路。
滤波器的基本类型包括:低通滤波器、高通滤波器、带通滤波器、带阻滤波器。
第七届全国信息技术应用水平大赛模拟题C语言程序设计注:模拟题题量总计88道,其中单选题60道,每道题1分;多选题20道,每道题2分;程序填充题6道,每道题5分;编程操作题2 道,每道题10分。
试卷满分为150分,完成时间为180分钟。
此模拟题仅供参考,具体题型、题量、分值分配与试题难度以实际预赛题为准。
单选题(共60题,每题1分,共60分)1. 下列符号串中,属于C语言合法标识符的个数为( )。
_1_2_3,a-b-c,float,9cd,a3b4A:1B:2C:3D:42. 下列能为字符变量 a 赋值的是:char a= ( )。
A:'ab'B:"a"C:'\0'D:"\0"3. 在下列字符序列中,合法的标识符是( )。
A:P12.aB:stud_100C:$water.1D:88sum4. 下列用于printf函数的控制字符常量中,代表tab的字符常量是( )。
A:'\b'B:'\t'C:'\r'D:'\f'5. 下列用于printf函数的控制字符常量中,代表退格的字符常量是( )。
A:'\b'B:'\t'C:'\r'D:'\n'6. 如有以下程序:unsigned int a=6; int b=-20; char c; c=(a+b>6); 则c的值为( )。
A:6B:-14C:1D:07. 关于C语言,以下不正确的叙述是( )。
A:在C语言程序设计中,逗号运算符的优先级最低B:在C语言程序设计中,var和VAR是两个相同的变量C:C语言也支持重载D:此处的两个语句int a; a=-13.06;在程序编译中将会提示出错8. 若有定义:int a=2,*p;float x=1, y=2;char e=‘w’;则以下用法不正确的是( )。
面试模拟题1 (C)面试题1:用find 写出查找/opt/kernel目录下(包括子目录)文件名为Kconfig的命令。
cd /opt/kernel; find –name Kconfig 或find /opt/kernel –name Kconfig面试题2:用 Vi 编译器底行命令模式实现字符串替换,把当前文件中的“xiaodai”全部替换成“banzhang”。
%s/xiaodai/banzhang/g面试题3:变量的声明和定义有什么区别?答:变量的定义:为变量分配地址和存储空间,只在一个地方定义变量的声明:不为变量分配地址,可以在多个地方声明,加入extern 修饰的变量的声明,说明此变量将在文件以外被定义。
很多时候一个变量,只是声明不分配内存空间,直到具体使用时才初始化,分配内存空间,如外部变量。
面试题4:sizeof是库函数吗?sizeof 和 strlen 的区别?sizeof 不是库函数,sizeof 是计算变量类型的大小,即占存储区多少个字节;而 strlen 是计算字符串字面值的实际长度,如字符串“hello”,它的长度是5,则strlen(“hello”) = 5;sizeof 是一个操作符,strlen 是库函数sizeof 的参数可以是数据的类型,也可以是变量,而strlen 只能以结尾为‘\0’的字符作为参数。
编译器在编译时就计算出了sizeof 的结果,而 strlen 函数必须在运行时才能计算出来,并且sizeof 计算的是数据类型占内存的大小,而 strlen 计算的是字符串实际的长度。
数组做 sizeof 的参数不退化,而传递给 strlen 做参数就退化指针了,计算出的是数组中字符串中的实际长度。
如: char num[10] = “hello”sizeof(num) = 10, 而 strlen(num) = 5;又如:char num[] = “helloworld”sizeof(num) = 11, strlen(sum) = 10注意:sizeof 是最容易混淆为函数名的操作符。
面试题5:链表和数组有什么区别面试题6:简述队列和栈的异同面试题7:有以下语句: char a=3, b=6, c; c = a^b<<2; 则c的二进制值是_____。
面试题8:如何打印出当前源文件的文件名以及源文件的当前行号?面试题9:假设某个函数的原型为:void foo( int x, int y ); 该函数分别被C编译器和C++编译器编译后在符号库中的名字是什么?面试题10:在QT程序中可以调用被C 编译器编译后的函数吗?如果可以怎么实现?面试题11:.h头文件中的ifndef/define/endif 的作用?#i nclude<file.h> 与#i nclude "file.h"的区别?面试题12:结构与联合有和区别?面试题13:全局变量和局部变量可否同名,他们是否有区别?如果有,是什么区别?面试题14:static有什么用途?static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?面试题15:什么是预编译,何时需要预编译?面试题16:有数组定义int a[2][2]={{1},{2,3}};则a[0][1]的值为多少?。
面试题17:请计算sizeof的值char str[] = “Hello” ;char *p = str ;int n = 10;请计算sizeof (str ) =_____sizeof ( p ) =_____sizeof ( n ) =_____void Func ( char str[100]){请计算sizeof( str ) =}void *p = malloc( 100 ); 请计算sizeof ( p ) =char *str[]={“Hello”,”HI”,“\x0”};请计算:sizeof(str) =sizeof(str[0]) =面试题18:头文件中有如下宏定义,#define DECLARE_TASKLET(name, func, data) \struct tasklet_struct name = { NULL, 0, ATOMIC_INIT(0), func, data }.c源文件中有如下语句,static DECLARE_TASKLET(btn_tasklet,btn_tasklet_func,(unsigned long)&mydata);请写出预编译后,该语句展开的结果.面试题19:写一个程序,以递归方式反序输出一个字符串。
如给定字符串“abc”输出“cba ”。
面试题20:对于一个字节(8bit)的无符号整形变量,求二进制表示中“1”的个数,要求算法执行效率尽可能地高。
面试题21:参数传递有哪些形式?寄存器和堆栈传递各有什么优缺点? 面试题22:Define宏语句和inline函数有什么区别?面试题23:char a[5][4],a的地址为0,问printf(“%d”,a[4]+3)值面试题24:编写一个宏,实现判断数组a元素的个数。
面试题25:.#define DOUBLE(x) x+x ,i = 5*DOUBLE(5); i 是多少?面试题26:i++一下代码的输出结果是?int i = 1;int j = 2;int k = i+++j;cout << k << endl;面试题27:下面代码输出是什么?为什么void foo(void){unsigned int a = 6;int b = -20;(a+b > 6) puts("> 6") : puts("<= 6");}面试题28:关于动态申请内存的问题void GetMemory(char *p){p = (char *)malloc(100);}void Test(void){char *str = NULL;GetMemory(str);strcpy(str, "hello world");printf(str);}请问运行Test 函数会有什么样的结果?面试题29:请问运行 Test 函数会有什么样的结果?char *GetMemory(void){char p[] = "hello world";return p;}void Test(void){char *str = NULL;str = GetMemory();printf(str);}面试题30:请问运行 Test 函数会有什么样的结果?void GetMemory2(char **p, int num){*p = (char *)malloc(num);}void Test(void){char *str = NULL;GetMemory(&str, 100);strcpy(str, "hello");printf(str);}面试题31:请问运行 Test 函数会有什么样的结果?void Test(void){char *str = (char *) malloc(100);strcpy(str, “hello”);free(str);if(str != NULL){strcpy(str, “world”);printf(str);}}面试题32:用预处理指令#define 声明一个常数,用以表明 1 年中有多少秒(忽略闰年问题)面试题33:C 语言中结构化程序设计的三种基本控制结构面试题34:请说出 const 与#define相比,有何优点?面试题35:简述数组与指针的区别?面试题36:main 函数执行完毕后,是否可能会再执行一段代码,给出说明?面试题37:如果编写一个标准 strlen 函数面试题38:如何引用一个已经定义过的全局变量?面试题39:do……while 和 while……do 有什么区别?面试题40:写一个“标准”宏 MIN面试题41:typedef 和 define 有什么区别面试题42:Typedef 在C语言中频繁用以声明一个已经存在的数据类型的同义字。
也可以用预处理器做类似的事。
例如,思考一下下面的例子:#define dPS struct s *typedef struct s * tPS;以上两种情况的意图都是要定义dPS 和tPS 作为一个指向结构s指针。
哪种方法更好呢?(如果有的话)为什么?面试题43:int (*s[10])(int) 表示的是什么面试题44:写出 bool 、int、 float、指针变量与“零值”比较的 if 语句bool 型数据:面试题45:请写出以下代码的打印结果#include<stdio.h>void main( void ){int a[5]={1,2,3,4,5};int *ptr=(int *)(&a+1);printf("%d,%d",*(a+1),*(ptr-1));return;}面试题46:设置地址为 0x67a9 的整型变量的值为 0xaa66。