面试模拟题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’;则以下用法不正确的是( )。
C语言程序设计模拟题(满分共100分)一、单项选择题。
(每小题1分,共20分)1. C语言源程序由预处理命令和( )组成。
(A)函数 (B) 语句 (C) 保留字 (D) 标始符2. 下面程序段中,与if(x%2)中的x%2所表示条件等价的是( )。
scanf("%d",&x);if(x%2) x++;(A)x%2==0 (B) x%2!=1 (C) x%2!=0 (D) x%2==13. 执行下面的C语句序列后,变量b的值是( )。
int a,b,c; a=b=c=1; ++a||++b&&++c;(A) 错误 (B) 0 (C) 2 (D) 14. 设有C语句int a[3][4];,则每次移动过a数组一行元素的指针变量定义形式是( )。
(A)int *p; (B)int **p;(C)int (*p) [4]; (D)int *p[4];5.设有整型变量a, 实型变量f,双精度型变量x,则表达式10+'b'+x*f值的类型为( )。
(A) int (B) float (C) double (D) 不能确定6.C语言中规定,在函数的参数表中,用简单变量做实参时,它和对应形参之间的数据传递方式是( )。
(A)地址传递 (B)单向值传递(C)有实参传给形参,再由形参传回给实参 (D)由用户指定传递方式7.下面程序的输出是()。
#include <stdio.h>void main(){int x=10,y=3;printf("%d\n",y=x/y);}(A)0 (B)1 (C)3 (D)不确定的值8.执行下面的程序段后,B的值为()。
int x=35;char z='A';int B;B=((x&15)&&(z<'a'));(A) 0 (B) 1 (C) 2 (D) 39.以下程序的输出结果为()。
c语言程序设计模拟题C语言程序设计模拟题(1)一、选择题(1)能将高级语言程序转换成目标语言程序的是__C____。
A)调试程序B)解释程序C)编译程序D)编辑程序(2)__A____是构成C语言程序的基本单位。
A)函数B)过程C)子程序D)子例程(3)可以在C语言中用做用户标识符的是__B___。
A)voidB)a_b3C)forD)2cdefine_123-abcDoWORDIfcaSIG(4)若有以下类型说明语句:charw;int某;floaty,z;则表达式w某某+z-y的结果为类型。
A)floatB)charC)intD)double(5)main(){float某=123.456;printf("%-5.2f\n",某);}以上程序输出的结果是_。
A)123.4B)123.5C)123.45D)123.46(6)下面语句的输出结果是___C___。
printf("%d\n",trlen("\t\"\065\某ff\n"));A)14B)8C)5D)输出项不合法,无正常输出(7)下列程序的输出结果是__B____。
main(){inta=0,b=0,c=0;if(++a>0|++b>0)++c;printf("\na=%d,b=%d,c=%d",a,b,c);}A)a=0,b=0,c=0B)a=1,b=1,c=1C)a=1,b=0,c=1D)a=0,b=1,c=1(8)下列程序的输出结果是__B____。
main(){inti;for(i=1;i+1;i++){if(i>4){printf("%d",i++);break;}}printf("%d",i++);}A)55B)56C)程序错误,没有输出D)循环条件永远为真,死循环(9)下列程序的输出结果是___A___。
模拟题一一、选择题1.下列说法正确的是()。
A)main函数必须放在C程序的开头B)main函数必须放在C程序的最后C)main函数可以放在C程序的中间部分,但在执行C程序时是从程序开头执行的D)main函数可以放在C程序的中间部分,但在执行C程序时是从main函数开始的2.C语言中不能用来表示整常数的进制是()。
A)十进制B)十六进制C)八进制D)二进制3.在下面几组数据类型中, 全为最常用的基本数据类型的是哪一组:()。
A)整型实型字符型B)整型数组指针C)数组结构体共用体D)指针逻辑型空类型4.C语言规定标识符由()等字符组成。
A)字母数字下划线B)中划线字母数字C)字母数字逗号D)字母下划线中划线5.若有说明语句:char c= ‘\64’ ; 则变量C包含()。
A)1个字符B)2个字符C)3个字符D)说明不合法,C值不确定6.若有如下定义:int a=2,b=3; float x=3.5,y=2.5; 则表达式:(float)(a+b)/2+(int)x%(int)y的值是()。
A)2.500000 B)3.500000 C)4.500000 D)5.0000007.设有如下定义和执行语句,其输出结果为()。
int a=3,b=3;a = --b + 1; printf(“%d %d”,a,b);A)3 2 B)4 2 C)2 2 D)2 38.以下表达式: 2+’a’+i*f, 其中i为整型变量,f为float型变量,则表达式的最终数据类型为()。
A)int B)float C)char D)double9.C语言中,运算对象必须是整型数的运算符是()。
A)%B)\C)% 和\D)**10.有如下语句:printf(“%s,%5.3s\n”,“COMPUTER”,“COMPUTER”);执行语句后的最终结果为()。
A)COMPUTER ,CMP . B)COMPUTER, CMP.C)COMPU, CMP. D)COMPU, CMP .11.能正确表示x的取值范围在[0,100]和[-10,-5]内的表达式是()。
C语言模拟题(一)一、选择题1、以下字符中不是转义字符的是( A)。
A '\c'B、'\b'C '\\'D '\a'2、设a=12,且a定义为整型变量。
执行语句a+=a-=a*=a;后a的值为(A)A 0B、144C 132D 123、已定义floatx=1.25,y=3.37;根据下面的输出结果,正确的输出语句是(C).y+x=4.62,y-x=2.12A printf("y+x=%6.2f,y-x=%6.2f\n",y+x,y-x);B、printf("y+x=%f,y-x=%f\n",y+x,y-x);,lC printf("y+x=%.2f,y-x=%.2f\n",y+x,y-x);D printf("y+x=%5.2f,y=%5.2f\n",y+x,y-x);4、执行下面程序段后,b的值为(A).ints=35;chart='A';intb;b=((s&&4)&&(tv'a'));B、3C 2D 05k是整型,则以下程序段的执行结果是:(B)k=-3;if(kv=O)printf("####") elseprintf("&&&&");A ####B、有语法错误,无结果C &&&&D ####&&&& 6设j和k都是int类型,则下面的for循环语句(D) for(j=0,k=0;jv=9&&k!=876;j++)scanf("%d",&k);A最多执行9次B、是无限循环C循环体一次也不执行D最多执行10次7以下正确的描述是(A).A、只能在循环体内和switch语句内使用break语句B、continue语句的作用是终止整个循环的执行C从多层嵌套的外层循环中退出时,只能使用goto语句D在循环体内使用break和continue语句的作用相同8以下能对一维数组a进行正确初始化的语句是(B)。
考试模拟题1及参考答案考试模拟题1一、单项选择题(共20题,每题1分,共20分。
)1. 以下叙述不正确的是。
A. 一个C源程序可由一个或多个函数组成B. 在C程序中注释说明只能位于一条语句的后面C. C程序的基本组成单位是函数D. 一个C源程序必须包含一个main函数2. 若变量已正确定义并赋值,表达式()不符合C语言语法。
A. 3%2.0B. a*b/cC. 2, bD. a/b/c3. 六种基本数据类型的长度排列正确的是()。
A. bool=char<int≤long=float<doubleB. char<bool=int≤long=float<doubleC. bool<char<int<long<float<doubleD. bool<char<int<long=float<double4. 下面程序段的运行结果是()。
char a[7]= "abcdef",b[4]= "ABC";strcpy(a,b);printf("%c",a[5]);A. 空格B. \0C. eD. f5. 设int a=9,b=8,c=7,x=1;则执行语句if(a>7) if(b>8) if(c>9)x=2;else x=3;后x的值是()。
A. 2B. 1C. 0D. 36. 对以下程序,当输入数据的形式为12a345b789↙,正确的输出结果为()。
int main(){char c1,c2;int a1,a2;c1=getchar(1); scanf("%2d",&a1);2c2=getchar(a); scanf("%3d",&a2);345printf("%d,%d,%c,%c\n",a1,a2,c1,c2); ,,,return 0;}A. 12,345,a,bB.C. 2a,45b,1,3D. 2,789,1,a7. 以下程序的输出结果是:()。
2018年计算机二级C语言模拟题1(总分:100.00,做题时间:120分钟)一、选择题(每题1分,共40分)(总题数:40,分数:40.00)1.程序流程图中带有箭头的线段表示的是()。
(分数:1.00)A.图元关系B.数据流C.控制流√D.调用关系解析:【解析】在数据流图中,用标有名字的带箭头线段表示数据流。
在程序流程图中,用标有名字的带箭头线段表示控制流,因此本题答案为C)。
2.结构化程序设计的基本原则不包括()。
(分数:1.00)A.多态性√B.自顶向下C.模块化D.逐步求精解析:结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用goto 语句,多态性是面向对象的程序设计的思想,因此本题答案为A)。
3.软件设计中模块划分应遵循的准则是()。
(分数:1.00)A.低内聚低耦合B.高内聚低耦合√C.低内聚高耦合D.高内聚高耦合解析:软件设计中,模块划分应遵循的准则是高内聚低耦合、模块大小规模适当、模块的依赖关系适当等。
模块的划分应遵循一定的准则,以保证模块划分合理,并进一步保证以此为依据开发出的软件系统可靠性高,易于理解和维护。
模块之间的耦合应尽可能地低,模块的内聚应尽可能地高,因此本题答案为B)。
4.算法的有穷性是指()。
(分数:1.00)A.算法程序的运行时间是有限的√B.算法程序所处理的数据量是有限的C.算法程序的长度是有限的D.算法只能被有限的用户使用解析:算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。
算法的有穷性是指算法程序的运行时间是有限的,因此本题答案为A)。
5.在软件开发中,需求分析阶段产生的主要文档是()。
(分数:1.00)A.可行性分析报告B.软件需求规格说明书√C.概要设计说明书D.集成测试计划解析:A )错误,可行性分析阶段产生可行性分析报告。
C )错误,总体设计阶段产生概要设计说明书。
D)错误,集成测试计划是在概要设计阶段编写的文档。
第一部分:选择题(40分,20小题/套)概述1、下面关于C语言的叙述中,正确的是(D)A. 每行只能写一条语句B. 程序中必须包含有输入语句C. main函数必须位于文件的开头D. 每条语句最后必须有一个分号2、下面关于C语言的叙述中,错误的是(B)A. 若一条语句较长,也可分写在下一行上B. 构成C语言源程序的基本单位是表达式C. C语言源程序中大、小写字母是有区别的D. 一个C语言源程序可由一个或多个函数组成3、关于C语言数据类型的叙述,正确的是()A. 枚举类型不是基本类型B. 数组不是构造类型C. 变量必须先定义后使用D. 不允许使用空类型4、C程序中main函数的位置(C)A. 必须在最开始B. 必须在系统库函数后面C. 可以在自定义函数后面D. 必须在最后5、C语言的函数体由(B)括起来A. ( )B. { }C. [ ]D. /* */6、关于C语言的叙述中,不正确的是(C)A. C程序可由一个或多个函数组成B. C程序必须包含一个main()函数C. C程序的基本组成单位是函数D. 注释说明只能位于一条语句的后面7、一个程序的执行是从(C)A. 本程序的第一个函数开始,到最后一个函数结束B. 本程序的main函数开始,到main函数结束C. 本程序的main函数开始,到最后一个函数结束D. 本程序的第一个函数开始,到main函数结束8、结构化程序设计的三种基本结构是(C)A. 函数结构、分支结构、判断结构B. 函数结构、嵌套结构、平行结构C. 顺序结构、分支结构、循环结构D. 分支结构、循环结构、嵌套结构9、调试程序是指对程序进行(C)A. 编辑B. 编译C. 查错和排错D. 连接10、C语言中,复合语句的构成是将一系列语句置于(C)A. begin与end之间B. 一对圆括号“()”之间C. 一对花括号“{ }”之间D. 一对方括号“[ ]”之间11、构成C语言源程序的基本单位是(D)A. 语句B. 过程C. 表达式D. 函数语法基础12、在C语言中,正确的用户标识符是(B)A. 3fB. _forC. structD. _f.513、C语言的基本数据类型包括(A)A. 整型、实型、字符型B. 整型、实型、字符型、逻辑型C. 整型、字符型、逻辑型D. 整型、实型、逻辑型14、以下(D)是正确的常量A. E-5B. 1E5.1C. ‘a12’D. 32766L15、以下(D)是正确的变量名A. a.beeB. –p11C. intD. p_1116、以下(C)是正确的字符常量A. “c”B. ‘//”C. ‘W’D. “\32a”17、以下(A)是不正确的字符串常量A. ‘abc’B. “12’12”C. “0”D. “ “18、C语言的整型数据在内存中的存储形式是(C)A. 原码B. 反码C. 补码D. ASCII码19、以下(B)是正确的浮点数( e后面的数必须为整数e前面必须要有数字A. e3B. .62C. 2e4.5D. 12320、下列不属于C语言关键字的是(D)A. continueB. integerC. staticD. signed21、C语言的字符型数据在内存中的存储形式是(D)A. 原码B. 补码C. 反码D. ASCII22、在C语言中,变量所分配的内存空间大小是(A)A. 由变量的类型决定B. 由用户自己决定C. 任意的D. 均为两个字节23、若有定义:int a=2;则正确的赋值表达式是(A)A. a-=(a*3)B. double(-1)C. a*3D. a*4=324、语句x=(a=3,b=++a);运行后,x、a、b的值依次为()A. 3,3,4B. 4,4,3C. 4,4,4D. 3,4,325、语句a=(3/4)+3%2;运行后,a的值为(B)A. 0B. 1C. 2D. 326、以下四项中,符合C语言语法的语句是(C)注意分号A. int a+b=c;B. int a=12:b=12:c=12;C. int a=12,b=12,c=12;D. int a,b=12,float c=2127、若有定义:int x,a;则语句x=(a=3,a+1);运行后,x、a的值依次为()A. 3,3B. 4,4C. 4,3D. 3,428、若变量已正确定义并赋值,符合C语言语法的表达式是()A. a=8+b+c,a++B. a=3aC. int(12.3%4)D. a=a+1=c+b29、若有定义:int a,b;double x;则以下不符合C语言语法的表达式是()A. x%(-3)B. a+=-1C. a=b=2D. x=a+b30、若有定义:int x=2,y=3;float i;则以下符合C语言语法的表达式是(B)A. x=x*3=2B. x=(y==1)C. i=float(x) ( 形式错误:正确的是:i=(float)x 是将数据类型括号起来)D. i%(-3)31、若有定义:int x;则语句x=(2*3)+6%5;运行后,x的值是()A. 8B. 7C. 6D. 532、下面关于C语言变量的叙述中,错误的是(C)A. 可以用const关键字定义变量B. 在C程序中,SUM和sum是不同的变量C. 变量名必须由字母或下划线组成(可是是字母和数字组合)D. 变量的类型确定了变量的取值范围33、若有定义:int x=5,y=6;则表达式x=(y= =6)的值为()A. 5B. 1C. 6D. 034、下面叙述正确的是(B)A. 2/3与2.0/3.0等价B. (int)2.0/3与2/3等价C. ++5与6等价D. ‘A’与”A”等价35、下面叙述中,错误的是(A)A. C语言基本的算术运算符不包含模运算符”%”B. 算术运算符的优先级高于关系运算符C. 自加和自减运算符的结合方向是”自右向左”D. C语言规定在表达式求值时,按其中运算符的优先级先高后低的次序进行36、下面叙述正确的是(A)A. 强制类型转换运算的优先级高于算术运算B. 若a和b是整型变量,(a+b)++是合法的(自加自减运算只能用于简单变量,不能用于表达式或常量)C. ‘A’*’B’是不合法的D. “A”+”B”是合法的只能字符间运算37、若有定义:int i=1,j=5;则表达式(++j)*(i--)的值为(C)A. 1B. 0C. 6D. 7 (i先运算再减减,加了括号也一样38、设整型变量a为5,使b不为2的表达式是(C)A. b=(++a)/3B. b=6-(--a)C. b=a%2D. b=a/239、若有定义:int a=1,b=2,c=3;则语句++a||++b&&++c;运行后b的值为(C)A. 1B. 0C. 2D. 3(&&的优先级高于|| ,即先进行++b&&++c运算,~,<< ,>>,&,^(异或),| 优先级依次降低)40、若有定义:int i,j;则表达式(i=2,j=5,i++,i+j++)的值是(B)A. 7B. 8C. 9D. 10 (i++要算完)41、若有定义:int a,b;则表达式(a=2,b=5,a*2,b++,a+b)的值是(B)A. 7B. 8C. 9D. 1042、若有定义:int i=2,j=5;则表达式(i+1,j+1,(++i+(j--))的值为(A)A. 8B. 6C. 7D. 5 红字部分先算43、若已定义:int i=3,k;则语句k=(i--)+(i--);运行后k的值为(C)A. 4B. 5C. 6D. 7 ( i先运算再--44、C语言的运算符按运算对象的个数可以分为(C)A. 单目运算符一种B. 单目和双目运算符C. 单目、双目和三目运算符D. 单目、双目、三目和四目运算符45、若已定义:float m;拟从键盘输入135.78这一数据给变量m,则应选用的语句是(D)A. scanf(“%5.2f”,&m);B. scanf(“%3.2f”,&m);C. scanf(“6.2f”,&m);D. scanf(“%6f”,&m);46、已知double a;使用scanf()函数输入一个数值给变量a,正确的函数调用是()A. scanf(“%l d”,&a);B. scanf(“%l f”,&a);C. scanf(“%c”,&a);D. scanf(“%u”,&a);47、已知char a;使用scanf()函数输入一个字符给变量a,不正确的函数调用是(B)A. scanf(“%d”,&a);B. scanf(“%l f”,&a);不可能是实数C. scanf(“%c”,&a);D. scanf(“%u”,&a);十进制无符号48、putchar()函数的功能是向终端输出(B)A. 多个字符B. 一个字符C. 一个实型变量值D. 一个整型变量表达式49、以下程序段运行后的输出结果是(C)int k=11;printf(“k=%d,k=%o,k=%x\n”,k,k,k);A. k=11,k=13,k=cB. k=11,k=12,k=13C. k=11,k=13,k=bD. k=11,k=13,k=a50、若有定义:int x=1234,y=123,z=12;则语句printf(“%4d+%3d+%2d”,x,y,z);运行后的输出结果为(D)A. B.C. 1234+1234+1234D. 1234+123+1251、已有如下定义和输入语句,int a;char c1,c2;scanf(“%d%c%c”,&a,&c1,&c2);若要求a、c1、c2的值分别为10、A和B,正确的数据输入是()A. 10ABB. 10 A BC. 10A BD. 10 AB52、以下程序段的运行结果是(A)int a=0,b=0,c=0;if(a&&++b) (因为a=0 又是与运算,故不进行&&后面的运算了)c++;printf(“%d,%d\n”,b,c);A. 0,0B. 1,2C. 2,2D. 1,053、以下程序的运行结果是()void main(){int a=65;c har c=’A’;printf(“%x,%d”,a ,c);}A. 65,aB. 41,aC. 65,65D. 41,6554、若已定义:int a=5;float b=63.72;以下语句中能输出正确值的是(B)A. printf(“%d%d”,a,b);B. printf(“%d%2f”,a,b);C. printf(“%2f%2f”,a,b);D. printf(“%2f%d”,a,b);55、运行以下程序段时编译出错,其原因是(A)char c1='8',c2='2008';printf("%c,%d\n",c1,c2);A. c2是字符变量,只能赋以字符常量,不能赋以字符串常量B. 字符串要用“2008“表示,而‘2008’不是字符串表示C. ‘2008’只能赋值给字符数组D. 字符变量不能用%d格式输出56、若已定义:int a=3,b=15,c;则语句c=a>b;运行后c的值为(B)A. 1B. 0C. tD. f57、在C语言中,判定逻辑值为“真“的最正确的叙述是(B)A. 1B. 非0的数C. 大于0的数D. 非0的整数58、若已定义:int a=-36,b=-30,c;则语句c=a<b;运行后c的值为(A)A. 1B. tC. 0D. f (有符号的比较,按负数进行比较)59、能正确表示数学关系式800>=y>=500的C语言表达式为(A)A. (y<=800)&&(y>=500)B. (y<=800)AND(y>=500)C. 800>=y>=500D. (y<=800)&(y>=500)60、若有定义:int x=3,y=4;则表达式!x||y的值为(A)(!,算术运算符,关系运算符,&&,|| ,赋值运算符优先级依次降低)注意:表达式的最后结果不是零就是一A. 1B. 0C. 3D. 461、若有定义:int i=7,j=8;则表达式i>=j||i<j的值为()A. 1B. 变量i的值C. 0D. 变量j的值62、若希望当a的值为奇数时,表达式的值为“真”,a的值为偶数时,表达式的值为”假”。
模拟题1一、单选题(本大题10小题,每题2分,共20分)1.C语言表达式a=15,a%6的值是_______AA.3B.5C.非法表达式D.152.循环语句中,continue语句的作用是______AA.结束本次循环B.跳出子函数C.从本循环体内跳出D.终止程序3.定义一个返回值为int 的无参函数cacul的正确语句是______CA.void cacul(void);B.void cacul(int);C.int cacul();D.int cacul;4.下面运算优先级按从高到低的排列正确的是_____AA.条件运算赋值运算逗号运算B.算术运算逻辑运算关系运算C.逻辑运算关系运算赋值运算D.位运算算术运算赋值运算5.以下叙述中,正确的是_____BA.C程序中,main函数必须位于程序最前面B.C语言本身没有输入和输出语句C.在对一个C程序进行编译的过程中发现注释中的拼写错误D.C程序中每行中只能写一个语句6.数组age[2][4]的非法引用是________AA.age[3][0]B.&age[0][0]C.age[0][1]D.age[1][1+1]7.变量定义int x, a=3, b=4;则语句x = ( a = 0 ) && ( b = 8 ); 执行之后各变量的值为______BA.x =0, a=3, b=4B.x =0, a=0, b=4C.x =0, a=3, b=8D.x =0, a=0, b=88.下列_________语句正确定义字符数组。
CA.char x[4]= "hello"B.char x[5]= "hello"C.char x[]= "hello"D.char x[4+1]= "hello"9.下面四个程序段中,不能输出23个*号的程序段是________DA.for(int i=0;i<23;i++) putchar(‘*’)B.for(int j=23;j>0;j--) putchar(‘*’)C.int k=23;while (k>0) {putchar(‘*’);k--}D.int i=0;while(i>23) {putchar(‘*’);i++;}10.若x是整型变量,y是单精度浮点型变量,值为10,表达式x = y/4 的值是_____C 。
嵌入式Linux C语言模拟题及答案一:选择题1.删除文件命令为( D )A.mkdirB.moveC.mvD.rm2.下面不是对Linux操作系统特点描述的是( B )。
[A] 良好的可移植性[B] 单用户[C] 多用户[D] 多任务3.任何时候用户需要回到用户主目录时可以使用命令 ( A ) 。
A. cdB. pwdC. pathD. cd .4.刷新文件时间戳可以使用的命令为( D )。
chmod B.more C.ls D.touch5.下列结构,属于线性结构的是(c)A.二叉树B.有向无环图C.循环队列D.霍夫曼树6.判断有头单链表head为空的条件是(b)A.Head == NULL;B.Head->next == NULL;C.Head->next != NULL;D.Head != NULL;7.二叉树的第k层最多有几个节点(d)A.2k-1B.2k+1C.2k+1D.2k-18.以读写方式打开一个已存在的标准I/O流时应指定哪个mode参数( B )[A] r [B] r+ [C] w+ [D] a+9.fork()的返回值不可能是( C )[A] -1 [B] 0 [C] 1 [D] 大于10000的正整数10.下列哪个函数无法传递进程结束时的状态( A )[A]close [B] exit [C] _exit [D] return11.下列对无名管道描述错误的是( C )[A] 半双工的通信模式[B]有固定的读端和写端[C]可以使用lseek函数[D] 只存在于内存中12.下列哪个是不带缓存的( C )[A] stdin [B] stdout [C] stderr [D]都不是13.默认情况下,不会终止进程的信号是( D )[A] SIGINT [B] SIGKILL [C] SIGALRM [D] SIGCHLD14.以下对早期ARPAnet的描述不正确的是 ( ) D[A] 使用NCP协议 [B] 不能互联不同类型的计算机[C] 没有纠错功能[D] 可以互联不同类型的操作系统15.将套接字和某个地址绑定可用下面那个函数()B[A] listen函数[B] bind 函数[C] accept函数[D] connect函数16.Socket API中,使用SOCK_STREAM,套接字是什么类型()(联发科)A[A] 流式套接字 [B] 数据报套接字 [C] 原始套接字 [D] 其他套接字17.I2C传输是____方式传输。
面试模拟题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。