文档库 最新最全的文档下载
当前位置:文档库 › 理工类C语言面试笔试

理工类C语言面试笔试

理工类C语言面试笔试
理工类C语言面试笔试

C语言复习指导

C语言基础一:

1.下列四组选项中,均不是C语言关健字的选项是( A )。

A) define B) gect C) include D) while

IF char scanf go

type printf case pow

C一共只有32个关键字: auto break case char const continue default do double else enum extern float for goto if int long register return short signed static sizeof struct switch typedef union unsigned void volatile while

2.下面四个选项中,均是合法整型常量的选项是( A )。

A)160 B)-0xcdf C) -01 D)-0x48a

-0xffff 01a 986,012 2e5

011 0xe 0668 0x

1.十进制整数。通常整数的写法,如0,123,-45,+25。

2 .八进制整数。以数字符0开头并由数字符0-7组成的数字符序列,为八进制整数。

3.十六进制整数。十六进制整数以OX(或OX)开头的整数。0-9,a-f

4 . -32768--32767

3.下面四个选项中,均是不合法的转义符的选项是( B )。

A) '\"' B) '\1011' C) '\011' D) '\abc'

'\\' '\' '\f' '\101'

'xf' '\A' '\}' 'x1f'

\a 响铃(BEL) 007

\b 退格(BS) 008

\f 换页(FF) 012

\n 换行(LF) 010

\r 回车(CR) 013

\t 水平制表(HT) 009

\v 垂直制表(VT) 011

\\ 反斜杠092

\? 问号字符063

\' 单引号字符039

\" 双引号字符034

\0 空字符(NULL) 000

\ddd 任意字符三位八进制

\xhh 任意字符二位十六进制

4.下面不正确的字符串常量是( A )。

A)'abc' B)"12'12" C)"0" D)" " 字符’ ‘ 字符串”“

5.以下选项中不合法的用户标识符是( A )。

A)abc.c B)file C)Main D)PRINT 字母数字下划线

6.C语言提供的合法关键字是( D )。

A) swith

B) cher

C) Case

D) Default——>第一题

7.下列标识符组中,合法的用户标识符为 A

A)_0123与ssiped

B)del-word与signed

C)list与*jer

D) keep%与wind——>第五题

8.在C语言中,逻辑值"真"的表示是用( C )。

A) true B) 整型值0 C)非零整型值D) T

9若有以下定义

char s='\092';

则该语句( B )if改为s=’\92’则选A

A)使s的值包含一个字符B)定义不合法,s的值不确定

C)使s的值包含4个字符D)使s的值包含3个字符

10设C语言中,int类型数据占2个字节,则float类型数据占(D )个字节。

A)1 B)2 C)8 D)4

11已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2='A'+'6'-'3'后,c2中的值为( A )。

A)D B)68 C)不确定的值D)C

12逻辑运算符两侧运算对象的数据类型是( D )。

A) 只是0或1 B) 只能是0或非0正数

C) 只能是整型或字符型数据D) 可以是任何合法的类型数据

13TURBO C中int类型变量所占字节数是( B )。Vc+为四个字节

A)1 B)2 C)3 D)4

14在C语言中,char型数据在内存中的存储形式是( D )。

A) 补码B) 反码C) 原码D) ASCII码

15若有以下定义,则能使值为3的表达式是( D )。

int k=7, x=12;

A)x%=(k%=5) B)x%=(k-k%5) C)x%=k-k%5 D)(x%=k)-(k%=5)

16判断char型变量c1是否为小写字母的正确表达式为( D )。

A) 'a'<=c1<='z' B) (c1>=A. &&(c1<='z')

C) ('a'>=c1)||('z'<=c1) D) (c1>='a')&&(c1<='z')

17 已知各变量的类型说明如下:

int k,a,b;

unsigned long w=5;

double x=1.42

则以下不符合C语言语法的表达式是( A )。

A)x%(-3) %两侧均为整形

B)w+=-2

C)k=(a=2,b=3,a+b)

D)a+=a-=(b=4)*(a=3)

若t为double类型,表达式t=1,t+5,t++的值是( D )。X++先用后加++x先加后用

A)1 B)6.0 C)2.0 D)1.0

设n=10,i=4,则赋值运算n%=i+1执行后,n的值是( A ).n=(n%(i+1))

A) 0

B) 3

C) 2

D) 1

设Int n=3;则有表达式++n,n的结果是( C )。

A)2 B)3 C)4 D)5

用十进制形式输入有符号整数时,在scanf函数语句里格式字符为( AB )。

A)d B)i C)n D)u无符号

在scanf函数语句中可用的修饰符有( ABCD )。

A)* B)h C)l D)宽度

1数据是操作的对象,操作的结果会改变数据的状况。对

2字符型变量用来存放字符常量,注意只能放2个字符。错一个字符

3C语言中可以把一个字符串赋给一个字符变量。错

4在C语言中的实型变量分为两种类型,它们是float(实型)和double(双精度实型)。错还有long double

5在C语言中,要求参加运算的数必须是整数的运算符是% . 对

6若有以下定义,则执行下面表达式y+=y-=m*=y后,y的值为-6。int m=5,y=2; 对

7输入语句的格式为:scanf("%d%d%d",&a,&b,&c);是正确的。对

8在scanf("%d,%d",&a,&b)函数中,可以使用一个或多个空格作为两个输入数之间的间隔。错9getchar函数的功能是接收从键盘输入的一串字符。错

getchar有一个int型的返回值.当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).当用户键入回车之后,getchar才开始从stdio流中每次读入一个字符.getchar函数的返回值是用户输入的第一个字符的ASCII码,如出错返回-1,且将用户输入的字符回显到屏幕.如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取.也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完为后,才等待用户按键.

10在变量说明中给变量赋初值的方法是:int a=b=c=10; 错

12printf函数是一个标准库函数,它的函数原型在头文件"stdio.h"中。对

13printf函数称为格式输入函数,它的函数原型在头文件"stdio.h"中。错

14在printf函数中,不同系统对输出表列的求值顺序不一定相同,TC是按从右到左进行的。对

15若int x=3; printf("%d",&x);则系统会报错,没有任何结果。错

16逻辑运算符的优先级别高于算术运算符错

1级优先级(左结合)

() 圆括号;[]下标运算符;->指向结构体成员运算符;. 结构体成员运算符。

2级优先级(右结合)

!逻辑非运算符;~按位取反运算符;++前缀增量运算符;--前缀减量运算符;+正号运算符;-负号运算符;(类型)类型转换运算符;*指针运算符;&地址运算符;sizeof长度运算符。

3级优先级(左结合)

*乘法运算符;/除法运算符;%取余运算符。

4级优先级(左结合)

+加法运算符;-减法运算符。

5级优先级(左结合)

<<左移运算符;>>右移运算符。

6级优先级(左结合)

<、<=、>、>=关系运算符。

7级优先级(左结合)

==等于运算符;!=不等于运算符。

8级优先级(左结合)

&按位与运算符。

9级优先级(左结合)

^按位异或运算符。

10级优先级(左结合)

|按位或运算符。

11级优先级(左结合)

&&逻辑与运算符。

12级优先级(左结合)

||逻辑或运算符。

13级优先级(右结合)

? :条件运算符。

14级优先级(右结合)

=、 +=、 -=、 *=、 /=、 %=、 &=、 ^=、 |=、 <<=、 >>=赋值运算符。

1在C语言中,表示逻辑"真"值用【1 】.

2表达式pow(2.8,sqrt(double(x)))值的数据类型为(doubt )。

3假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是【8 】。

4若x是int型变量,则执行下面表达式后,x的值为【12 】。x=(a=4,6*2)

5若k为int整型变量且赋值7,请写出赋值表达式k *= k + 3的运算结果【70 】。

6scanf函数是一个标准库函数,它的函数原型在头文件【stdio.h 】中。

7getchar函数可以接收【单】个字符,输入数字也按字符处理。

8在语句中,给变量赋值时,赋值语句必须以【分号】结尾。

9当a=3,b=2,c=1时,表达式f=a>b>c 的值是【0 】

10设x,y,z均为int型变量,请写出描述"x,y中有一个为负数"的表达式【x<0&&y>=0||y<0&&x>=0 】

11若a=6,b=4,c=3,则表达式a&&b||b-c的值是【1 】

12设x=3,y=-4,z=5,则表达式!(x>y)+(y!=z)||(x+y)&&(y=z)的值是【1 】

基础二

1下面四个选项中,均是非法常量的选项是( A )。

A)'as' B)'\\' C)-0x18 D)0xabc

-0fff '\01' 01177 '\0'

'\0a' 12,456 0xf "a"

2下面四个选项中,均是不合法整型常量的选项是( D )。

A)-0f1 B)-0xcdf C) -018 D)-0x48eg

-0xffff 017 999 -068

0011 12,456 5e2 03f

3下面正确的字符常量是( C )。

A) "c" B) '\\'' C) 'W' D) '

4以下每个选项都代表一个常量,其中正确的整型常量是( B )。

A)1.2 B)-20 C)1,000 D)4 5 6

5以下选项中不合法的用户标识符是( C )。

A)_123 B)Printf C)A$ D)Dim

6在下列C语言程序中,可以用做变量名的是( B )。

A) 1

B) a1

C) int

D) *p

7C语言提供的合法数据关键字是( A )。

A) float

B) Sagned

C) Integer

D) Char

8以下符号中不能用作用户标识符的符号是( B )。

A)_256 B)void

C)scanf D)Struct

9若k为int型变量,则以下语句( C )。

k=8567;

printf("|%-06d|\n",k);

A)输出格式描述不合法B)输出为|008567|

C)输出为|8567| D)输出为|-08567|

10sizeof(float)是( B )。

A)一个双精度表达式B)一个整型表达式

C)一种函数调用D)一个不合法的表达式

11在C语言中, int、char和short三种类型数据在内存中所占用的字节数( D )。

A)由用户自己定义B)均为2个字节

C)是任意的D)由所用机器的机器字长决定

12判断char型变量c1是否为小写字母的正确表达式为( D )。

A) 'a'<=c1<='z' B) (c1>=A. &&(c1<='z')

C) ('a'>=c1)||('z'<=c1) D) (c1>='a')&&(c1<='z')

13以下叙述中正确的是( B )。

A.a是实型变量,C语言允许进行以下赋值a=10,因此可以这样说:实型变量中允许存放整型值

B.在赋值表达式中,赋值号右边即可以是变量也可以是任意表达式

C.执行表达式a=b后,在内存中a和b存储单元中的原有值都将被改变,a的值已由原值改变为b的值,b的值由原值变为0

D.已有a=3,b=5当执行了表达式a=b,b=a之后,已使a中的值为5,b中的值为3

14表达式18/4*sqrt (4.0)/8值的数据类型为( C )。

A)int B)float C)double D)不确定

15下列运算符中,不属于关系运算符的是( C )。

A) < B) > = C) ! D) ! =

16若希望当A的值为奇数时,表达式的值为真,A的值为偶数时,表达式的值为假,则以下不能满足要求的表达式是( C )。

A) A%2= =1 B) !(A%2= =0) C) !(A%2) D) A%2

17已知各变量的类型说明如下:

int i=8,k,a,b;

unsigned long w=5;

double x=1.42,y=5.2;

则以下符合C语言语法的表达式是( A )。

A)a+=a-=(b=4)*(a=3)

B)a=a*3=2

C)x%(-3)

D)y=float(i)

18 若变量已正确定义并赋值,下面符合C语言语法的表达式是( B )。

A)a=a+7; B)a=7+b+c,a++ C)int 12.3%4 D)a=a+7=a+b

19逗号表达式(a=3*5,a*4),a+15的值为( C )。

A)15 B)60 C)30 D)不确定

20设Int n=3;则n++的结果是( B )。

A)2 B)3 C)4 D)5

1用小数或指数形式输入实数时,在scanf函数语句里格式字符为( BCD )。

A)i B)f C)e D)g

2可以使用( CD )输入字符型数据。

A)putchar(c); B)getchar(c); C)getchar(); D)scanf("%c",&c);

1C语言中数据有常量与变量之分。

2一般一个字符变量在内存中占一个字节。

3C语言规定,可以在定义变量时,同时使变量初始化。

4把k1、k2定义成基本整型变量,并赋初值0的定义语句是int k1=k2=0; 。错

5如果i的原值为3,则:j = ++ i,j的值为3。错

6凡是表达式都有一个值。

7输入语句的格式为:scanf("%d,%d,%d",a,b,c);是正确的。错

8在scanf("%d,%*d,%d",&a,&b)函数中,当输入为1,2,3时,将1赋给a,将2赋给b。错

9getchar函数的功能是接收从键盘输入的一个整数。错

10假定变量a,b,c在说明时已赋初值,则if ((a=b;)>0) c=a;是正确的。错

11

12printf函数是一个标准库函数,它的函数原型在头文件"string.h"中。错

13在printf函数中,格式字符d的意义是:以十进制形式输出带符号整数。

14 在printf函数中,输出表列的各输出项之间可用冒号分隔。错

15若int x=3; printf("%d",&x);则系统不会报错,会输出x的地址。

16int a=0,b=1,c=2;则表达式a||b+c&&b==c的值为0

1若有以下定义:char c='\010';则变量C中包含的字符个数为( 1 )。

2若有以下定义:int x=3,y=2;float a=2.5,b=3.5;则下面表达式的值为【1 】。(x+y)%2+(int)a/(int)b 3若a是int型变量、且a的初值为6,则执行下面表达式后,a的值为【60 】。a+=a-=a*a 4若x是int型变量,则执行下面表达式后,x的值为【4 】。x=a=4,6*2

5若a是int型变量,且a的初值为6,则计算表达式后a的值为【60 】。a+=a-=a*a

6scanf函数的地址表列中给出各变量的地址,地址是由【地址运算符"&" 】后跟变量名组成的。

7使用getchar函数接收字符,若输入多于一个字符时,只接收第【一】个字符。

8 C语言的格式输出函数是【printf() 】。

9当a=5,b=4,c=2时,表达式a>b!=c 的值是【1 】

10已知A=7.5,B=2,C=3.6,表达式A>B&&C>A || AB的值是【0 】

11若a=3,b=2,c=1,则表达式a-b

12有int a=0,b=4,c=5;则表达式a||b+c&&b!=c的值为【1 】

基础三

1下面四个选项中,均是不合法的用户标识符的选项是( C )。

A) A B) float C) b-a D) _123

p_0 lao goto temp

do _A int INT

2下面四个选项中,均是不合法浮点数的选项是( B )。

A) 160. B) 123 C) -018 D) -e3

0.12 2e4.2 123e4 .234

e3 .e5 0.0 1e3

3下面四个选项中,均是不正确的八进制或十六进制数的选项是( D )。

A)016 B)0abc C)010 D)0a12

0x8f 017 -0x11 7ff

018 0xa 0x16 -123

4以下每个选项都代表一个常量,其中不正确的实型常量是( B )。

A)2.607E-1 B)0.8103e 2 C)-77.77 D)45.6e-2

5可用作用户标识符的一组标识符是( B )。

A)void B)a3_b3 C)For D)2a

define _xyz -abc DO

WORD IF Case sigeof

6下列标识符组中,合法的用户标识符为( B )。

A) PAd与p#d

B) Scanf 与a10

C) void与max

D) A*与temp

7( B )是C语言提供的合法的数据类型关键字。

A)Float B)signed C)integer D)Char

8以下选项中正确的常量是( B )。

A) 012

B) -20

C) 1,000

D) 4 5 6

9现已定义整型变量int i=1;

执行循环语句while(i+ +<5);后,i的值为( B )。

A)1 B)5 C)6 D)以上三个答案均不正确

10设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为( C )。A)int B)float C)double D)不确定

11若有说明语句:char c='\72';则变量c ( C )。

A)包含1个字符B)包含2个字符

C)包含3个字符D)说明不合法,c的值不确定

12设X、Y、Z都是int整型变量,且x=2, y=3, z=4,则下面的表达式中,值为0的表

达式是( A )。

A) 'x'&&'z' B) (!y= =1)&&(!z= = 0)

C) (x

13以下叙述中正确的是( B )。

A) 在C程序中无论是整数还是实数,只要在允许的范围内都能准确无误的表示

B) 若在定义语句double a,b;之后,因为变量a,b已正确定义,因此立刻执行这样的表达式:a=b+9.381是正确的

C) 在C程序中,常量、变量、函数调用,都是表达式的一种

D) 在main函数中,变量一经定义,系统将自动赋予初始值

14设有说明:char w;int x;float y;double z;则表达式w*x+z-y值的数据类型为( C )。

A) float B) char C) int D) double

15设a=2,b=3,c=4,则表达式a+b>c&&b= =c&&a||b+c&&b+c的值为( D )。

A) 5 B) 8 C) 0 D) 1

16在C语言中,逻辑值"真"的表示是用( D )。

A) true B) 整型值0 C) 非另整型值D) T

17以下不正确的叙述是( C )。

A)在C程序中,逗号运算的优先级最低

B)在C程序中,APH和aph是两个不同的变量

C)若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变

D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值18以下结果为整型的表达式(设有int i; char c; float f;)是( D )。

A)i+f B)i*c C)c+f D)i+c+f

19设有逗号表达式(a=3*5,a*4),a+15,a的值为( B )。

A)60 B)30 C)15 D)90

20设Int n=3;则有表达式n++,n的结果是( C )。

A)2 B)3 C)4 D)5

1若在scanf函数语句中没有非格式字符作输入数据的间隔,则可用( ACD )。

作为输入数据的间隔。

A)空格B)逗号C)TAB D)回车

2使用scanf函数时,在源程序开头( ABC )。

A)书写#include "stdio.h" B)书写#include

C)不必写#include D)书写#include "scanf.h"

1C语言规定标识符只能由字母、数字和小数点三种字符组成。

2 C语言使字符型数据和整型数据之间可以通用。一个字符数据既可以以字符形式输出,也可以以整数形式输出。对

3 C语言中定义了一个变量,代表内存中的一个地址。对

4表达式3.5 + 1/2 + 56%10的计算结果是7.5 。

5 由赋值运算符将一个变量和一个表达式连接起来的式子称为"赋值表达式"。对

6设C语言中,一个int型数据在内存中占2个字节,则int数据的取值范围为-32768-32769。7在使用scanf函数之前应包含头文件"math.h"。

8在scanf("%c%c",&c1,&c2)函数中,当输入为字符a,b时,将a赋给c1,将b赋给c2。

9 scanf函数中,如果格式控制串中有普通字符则输入时也要输入该普通字符。

10 假定变量x,y,z在说明时已赋初值,则if ((x=y+5)>0) z=x; 是正确的

11printf函数中的格式字符,既可以是大写形式,也可以是小写形式。

12在printf函数中,格式字符"%5c"可用来输出5个字符。

13在printf函数中,格式字符s的意义是:输出单个字符。

14 在printf函数中,输出项可以是任意合法的表达式。

15 算术运算符的优先级别高于关系运算符

16 int a=0,b=1,c=2,x,y;,则!(x=a)&&(y=b)&&c的值为1

1若x和n均是int型变量,且x的初值为12,n的初值为5,则执行下面表达式后,x的值为(0 )。x%=(n%=2)

2假设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为【9 】。

3若a是int型变量,则执行下面表达式后,a的值为【2 】。a=25/3%3

4表达式1/3*3的计算结果是【0 】。

5若a是int型变量,则计算表达式后a的值为【2 】。a=25/3%3

6在输入字符数据时,若"格式控制字符串"中没有非格式字符,则认为所有输入的字符均为【有效】字符。

7在scanf函数中,【&a 】表示变量a的地址。

8以下程序的运行结果是【computer, com 】。

main()

{ printf("%s,%5.3s","computer","computer"); }

9在C语言中,表示逻辑"真"值用【非零数】

10若a=6,b=4,c=2,则表达式!(a-b)+c-1&&b/3+c/2的值是【1 】

11设a=-1,b=0,c=1,则表达式a||b+c&&b==c的值是【1 】

12有int a=3,b=4,c=5,x,y;,则以下表达式的值为【0 】

!(x=a)&&(y=b)&&c

基础四

1以下符号中不能用作用户标识符的符号是( )。

A)_256 B)void

C)scanf D)Struct

2下面四个选项中,均是合法浮点数的选项是( )。

A) +1e+1 B) -.60 C) 123e D) -e3

5e-9.4 12e-4 1.2e-.4 .8e-4

03e2 -8e5 +2e-1 5.e-0

3下面四个选项中,均是正确的八进制或十六进制数的选项是( )。

A) -1a B)0abc C)0010 D)0a12

0x8f -017 0x11 -0x123

-011 0xc 0xf1 -0xa

4以下选项中,为C语言合法的关键字是( )。

A)swicth B)cher C)Case D)default

5C语言提供的合法的数据类型关键字是( )。

A)Double B)short C)integer D)Char

6下列标识符组中,合法的用户标识符为( )。

A)b-b与abc

B)CCP与float

C)hiy与

D) isw与INT

7 属于合法的C 语言长整型常量的是( )。

A)5876273 B)0L C)2E10 D)(Long)5876273若int类型数据占两个字节,下8列程序的输出结果是()。

main()

{

int k=-1;

printf("%d,%u\n",k,k);

}

A)-1,-1 B)-1,32767 C)-1,32768 D)-1,65535

9设已定义x为double类型变量

x=213.82631;

printf("%-6.2e\n",x);

则以上语句( )。

A)输出格式描述符的域宽不够,不能输出B)输出为21.38e+01

C)输出为2.14e+02 D)输出为-2.14e2

10执行x=5>1+2&&2||2*4<4 - !0后,X的值为( )。

A) -1 B) 0 C) +1 D) 5

11设ch是字符变量,其值为A,且有下面的表达式ch=!(ch>='A'&&ch<='z')?ch:(ch+32)则表达式的值是( )

A) A B) a C) 2 D) z

12设ch是char型变量,其值为Z,且有下面的表达式,其值为( )。

ch=(ch>='A'&&ch<='Z')?(ch+32):ch

A) A B) a C) Z D) z

13以下的变量定义中,合法的是( )。

A)float 3_four = 3.4 ; B)int _abc_= 2 ;

C)double a = 1 + 4e2.0 D)short do =15;

14若有int k = 11;则表达式(k++ * 1/3)的值是( )。

A)0 B)3 C)11 D)12

15逻辑运算符两侧运算对象的数据类型是( )。

A) 只是0或1 B)只能是0或非0正数

C) 只能是整型或字符型数据D) 可以是任何类型数据

16下列表达式的值,那一个等于0 ( )。

A) 5%6 B) 5/6 C) 5/6.0 D) 5 - 6

17以下正确的叙述是( )。

A)在C程序中,每行只能写一条语句

B)若a 是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数

C)在C程序中,无论是整数还是实数,都能被准确无误地表示

D)在C程序中,%是只能用于整数运算的运算符

18以下不正确的语句(设有int p,q)是( )。

A)p*=3; B)p/=q; C)p+=3; D)p&&=q;

19如果a=1,b=2,c=3,d=4,则条件表达式a

A)1 B)2 C)3 D)4

20设Int n=2;则++n+1= =4的结果是( )。

A)true B)false C)1 D)0

1若输入4位整数到整型变量a中,可用( )。

A)scanf("%4d"); B)scanf("%4d",&a);

C)scanf("%4d",a); D)scanf("%d",&a);

2对于scanf("a=%d",&a),设a为整型变量,输入5,其输出可为( )。

A)a=5 B)5 C)a= 5 D)a=a=5

1在C语言中,要求对所有用到的变量先定义,然后才能使用。

2C语言中,字符数据与整型数据可以互相赋值。

3C实型变量分为单精度和双精度两种。

4a1、a2定义成单精度实型变量,并赋初值1的定义语句是float a1=1; a2=1; 。

5C语言中逗号运算符又称为"顺序求值运算符"。

6C提供的三种逻辑运算符是!, &&, >= .

7在使用scanf函数之前可以不包含头文件"stdio.h"。

8在scanf("%4d",&i)函数中,输入123456789,只把123456赋予变量i 。

9a=b=c=d=10;是一个合法的赋值语句。

10C语言的格式输出函数是scanf().

12使用printf函数时,格式控制字符串和各输出项应一一对应。

13在printf函数中,格式字符f的意义是:以小数形式输出单精度实数。

14在printf函数中,转义字符\b的作用是退格。

15算术运算符的优先级别高于逻辑运算符

16int a=1,b=0,c=1;,则!(a+b)+c-0&&b+c/2的值为1

1经过下述赋值后,变量x的数据类型是()。

int x=2;

double y;

y=(int)(float)x;

2已知字母a的ASCII码的十进制代码为97,且设ch为字符型变量,则表达式ch='a'+'8'-'3'的值为【】。

3若s是int型变量,且s=6,则下面表达式的值为【】。

s%2+(s+1)%2

4表达式1.0/2*3的计算结果是【】。

5当a=3,b=2,c=1时,表达式f=a>b>c的值是【】.

6getchar函数是【】函数。

7赋值语句是由赋值表达式加上【】构成的。

8在TC中,printf()函数输出表列的求值顺序是【】。

9设y为int型变量,请写出描述"y是奇数"的表达式【】

10若a=2,b=4,则表达式!(x=a)|| (y=b)&&0的值是【】

11条件"0

12有int a=3,b=4,c=5;,则以下表达式的值为【】

!(a+b)+c-1&&b+c/2

基础五

1C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符( )。

A)必须为大写

B)必须为下划线

C)必须为字母或下划线

D)可以是字母、数字和下划线中的任一种字符

2下面四个选项,均是合法转义字符的选项是( )。

A) '\'' B) '\' C)'\018' D) '\\0''

'\\' '\017' '\f' '\101'

'\n' '\"' 'xab' 'x1f'

3下面四个选项中,均是正确的数值常量或字符常量的选项是( )。

A)0.0 B)"a" C)'3' D)+001

0f 3.9E-2.5 011 0xabcd

8.9e 1e1 0xFF00 2e2

'&' '\"' 0a 50

4以下符号中不能用作用户标识符的是( )。

A)IF B)Switch C)gets D)case

5在C语言中,下列哪个字符为合法的字符常量( )。

A)'\084′

B)'\x43′

C)'ab′

D)'\0′

6下列四个选项中,均是C语言关健字的选项是( )。

A) auto B) switch C) signed D) if

enum typedef union struct

include continue scanf type

7不合法的常量是( )。

A)'\2' B)'"' C)" D)"\483"

8若a为整型变量,则以下语句()。

a=-2L;

printf("%d\n",a);

A)赋值不合法B)输出值为-2 C)输出为不确定值D)输出值为2

9已定义x为float型变量

x=213.82631;

printf("%-4.2f\n",x);

则以上语句

A)输出格式描述符的域宽不够,不能输出B)输出为213.83

C)输出为213.82 D)输出为-213.82

10用getchar函数可以从键盘读入一个( )

A) 整型变量表达式值B) 实型变量值

C)字符串D) 字符或字符型变量值

11已知int x,y,z;执行语句x=(y=(z=10)+5)-5;后x、y、z的值是( )。

A) x=10 B) x=10 C) x=10 D) x=10

y=15 y=10 y=10 y=5

z=10 z=10 z=15 z=10

12 设a为整型变量,初值为12,执行完语句a+=a-=a*a后,a的值是( )。

A) 552 B) 144 C) 264 D) -264

13设x为int型变量,则执行以下语句段后,x的值为( )。

A)10 B)20 C)40 D)30

x = 10 ;

x += x -= x - x;

14若有定义,int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是( )。

A) 2.500000 B) 2.750000 C) 3.500000 D) 0.000000

15下列运算符中优先级最高的是( )。

A) < B) + C) && D) !=

16设以下变量均为int 类型,则值不等于7的表达式是( )。

A)(x=y=6,x+y,x+1) B)(x=y=6,x+y,y+1)

C)(x=6,x+1,y=6,x+y) D)(y=6,y+1,x=y,x+1)

17以下符合C语言语法的,赋值表达式是( )。

A) d=9+e+f=d+9

B) d=9+e,f=d+9

C) d=9+e,e++,d+9

D) d=9+e++=d+7

18以下使i的运算结果为4的表达式是( )。

A) int i=0,j=0;

(i=3,(j++)+i);

B) int i=1,j=0;

j=i=((i=3)*2);

C) int i=0,j=1;

(j= =1)?(i=1):(i=3);

D) int i=1,j=1;

i+=j+=2;

19设Int n=3;则++n的结果是( )。

A)2 B)3 C)4 D)5

20设Int n=2;则有表达式++n+1= =4,n的结果是( )。

A)1 B)2 C)3 D)4

1下列能正确输入字符数组a 的语句是( )

A)scanf("%s",a); B)scanf("%s",&a);

C)scanf("%c",a); D)循环执行scanf("%c",&a[i]);

2在输入时,字符变量的值不用空格间隔,其输入函数可为( )。

A)scanf("%c %c %c",&a,&b,&c); B)scanf("%c%c%c",&a,&b,&c);

C)scanf("%3c",&a,&b,&c); D)循环执行getchar()

1C的字符常量是用双引号括起来的一个字符。

2字符串常量是一对单引号括起来的字符序列。

3设C语言中,一个int型数据在内存中占2个字节,则int型数据的取值范围为-32768-+32767。4在C语言中的实型变量分为两种类型,它们是float和double。

5 若有以下定义:int a=2,b=3;float x=3.5,y=2.5;则下面表达式的值为3.500000。

(float)(a+b)/2+(int)x%(int)y

6输入语句的格式为:scanf("%d,%d,%d",&a;&b;&c); 是正确的。

7getchar()函数得到的字符可以不赋给任何变量,而作为表达式的一部分。

8scanf函数中无精度控制。

9a+==a=2; 是一个合法的赋值语句,赋值后a的值为:2。

10在TC中,printf()函数输出表列的求值顺序是从右到左。

11在printf函数中,"%ld"表示按十进制正整数输出。

12printf是C语言的输出语句。

13在printf函数中,格式字符c的意义是:输出单个字符。

14在printf函数中,不能使用转义字符。

15关系运算符的优先级别高于逻辑运算符

16C语言中没有逻辑型数据

1表达式8/4*(int)2.5/(int(1.25*(3.7+2.3))值的数据类型为()。

2若x、i、j和k都是int型变量,则计算下面表达式后,x的值为【】。

x=(i=4,j=16,k=32)

3若a是int型变量,则下面表达式的值为【】。

(a=4*5,a*2),a+6

4若k为int 整型变量且赋值7,x为double型变量且赋值8.4,赋值表达式x = k的运算结果是【】。

5若a=1, b=4, c=3, 则表达式!(a

6使用getchar函数前必须包含头文件【】。

7在变量说明中给同类变量赋初值时,各变量之间用【】隔开。

8以下程序的运行结果是【】。

main()

{int i=5; printf("%d,%d\n",++i,i++); }

9设x,y,z均为int型变量,请写出描述"x或y中有一个小于z"的表达式【】10若a=1,b=4,c=3,则表达式!(a

11有int x,y,z;且x=3,y=-4,z=5,则表达式(x&&y)==(x||z)的值为【】

12若a=1,b=2,则表达式a

C语言(分支和循环结构)一

1.以下程序输出结果是( )

main()

{ int m=5;

if(m++>5) printf("%d\n",m);

else printf("%d\n",m--);

A)7 B)6 C)5 D)4

2以下程序的输出结果为( )

# include

main ( )

{ int i=0, j=0, a=6;

if ((++i>0)&&(++j>0)) a++;

printf ("i=%d, j=%d, a=%d\n", i,j,a);}

A) i=0, j=0, a=6 B) i=1, j=1, a=7

C) i=1, j=0, a=7 D) i=0, j=1, a=7

3有如下程序

main()

{ int a=2,b=-1,c=2;

if(a

if(b<0) c=0;

else c++;

printf("%d\n",c);

}

该程序的输出结果是( )

A) 0 B) 1 C) 2 D) 3

4若i为int型,且有程序如下,则输出结果是( )

i=111;

if(i%3==0)

printf("####");

printf("****");

A) #### B) **** C) ####**** D) 无输出结果

5若运行时x=12,则运行结果为( )

scanf("%d", &x);

y=x>12 ? x+10:x-12;

printf("%d\n", y);}

A) 0 B) 22 C) 12 D) 10

6以下程序的输出结果是( )

main()

{ int i=0, j=0, k=6;

if ((++i>0)||(++j>0)) k++;

printf("%d, %d, %d\n", i, j, k);

}

A) 0, 0, 6 B) 1, 0, 7 C) 1, 1, 7 D) 0, 1, 7

7若变量都已正确说明,则以下程序段输出为( )

int a=1,b=2,c=3;

if(a>b)

a=b;

b=c;

c=a;

printf("a=%d b=%d c=%d\n",a,b,c);

A)a=1 b=2 c=1 B)a=1 b=2 c=3

C)a=1 b=3 c=1 D)a=2 b=3 c=2

8当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是( ) if(a

if(c

else

if(a

if(b

else x=3;

else x=6;

else x=7;

A) 1 B)2 C)3 D)6

9以下不正确的语句为( )

A)if(x>y);

B)if(x==y)&&(x!=0)x+=y;

C)if(x!=y)scanf("%d",&x);else scanf("%d",&y);

D)if(x

10有以下程序:

#include"stdio.h"

main( )

for (; (i=getchar ())!='\n';)

{switch (i-'a')

{case 0: putchar (i);

case 1: putchar (i+1);break;

case 2: putchar (i+2);

case 3: break;

default: putchar (i);break;

}

}

printf ("\n");

}

输入下列数据后,程序的输出结果是( )

abcde

A) abcde B) abcee

C) abbde D) abccdd

11若a、b、c1、c2、x、y、均是整型变量,正确的switch语句是( )

A) switch(a+b); B) switch(a*a+b*b)

{ case 1:y=a+b; break; {case 3:

case 0:y=a-b; break; case 1:y=a+b;break;

} case 3:y=b-a,break;

}

C) switch a D) switch(a-b)

{ case 1 :y=a-b; break {

case 2: x=a*d; break case c1:case 4:x=a+b;break;

default:x=a+b; case c2:case 11:y=a-b;break;

} default:y=a*b;break;

}

12写出下面程序输出结果( )

{int x=1, y=0, a=0, b=0;

switch(x)

{case 1:

switch(y)

{case 0: a++;

case 1: b++; }

case 2: a++; b++;

}

printf("a=%d, b=%d\n", a, b) ;

}

A) a=2, b=1 B) a=1, b=1 C) a=1, b=0 D) a=2, b=2

13C语言的for语句中的表达式可以部分或全部省略,但两个( )不可省略。但当三个表达

均省略后,因缺少判断条件,循环会无限制地进行下去,形成死循环。

A) < B) ++ C) ; D) ,

14下面有关for循环的正确描述是( )。

A) for循环只能用于循环次数已经确定的情况

B) for循环是先执行循环体语句,后判定表达式

C) 在for循环中,不能用break语句跳出循环体

D) for循环体语句中,可以包含多条语句,但要用花括号括起来

15以下程序段( )。

x=-1;

do

{ x=x*x;}

while(!x)

A) 是死循环B) 循环执行2次C) 循环执行一次D) 有语法错误16如下的数组中,数组array占用的内存空间是( )个字节。

char array[]={'c','h','i','n','a'};

A. 1

B. 5

C. 6

D. 不确定

17设有程序段

int k=10;

while(k=0) k=k-1;

则下面描述正确的是( )。

A) while 循环执行10次B) 循环是无限循环

C) 循环体语句一次也不执行D) 循环体语句执行一次

18下列程序段的运行结果是( )

int n=0;

while(n++<3);

printf("%d",n)

A. 2

B. 3

C. 4

D. 以上都不对

19设有程序段

t=0;

while(printf("*"));

{ t++;

if (t<3) break;

}

下面描述正确的是( )。

A) 其中循环控制表达式与0等价B) 其中循环控制表达式与'0'等价C) 其中循环控制表达式是不合法的D) 以上说法都不对

20下面程序的运行结果是( )。

#include

main()

{ int y=10;

do { y--;} while(--y);

printf("%d\n",y--);

}

A) -1 B) 1 C) 8 D) 0

21以下程序段的输出结果是( ).

main()

{ int i=5;

for ( ;i<=15; )

{ i++;

if (i%4==0) printf("%d ",i);

else continue;}

}

A. 8 12 16

B. 8 12

C. 12 16

D. 8 22以下不是无限循环的语句为( )。

A) for(y=0,x=1;x>++y;x=i++) i=x;

B) for( ; ;x++=i);

C) while(1){x++;}

D) for(i=10; ; i--) sum+=i;

23有如下语句

int x=3;

do

{ printf("%d\n",x-=2);} while(!(--x));

则上面程序段( )

A. 输出的是1

B. 输出的是1和-2

C. 输出的是3和0

D. 是死循环

24以下不是无限循环的是( )

A. for(y=0,x=1;x>++y;x=i++) i=x;

B. for( ; ;x++=i);

C. while(1) x++;

D. for(i=10; ;i--) s+=i;

25以下正确的描述是( )。

A) continue语句的作用是结束整个循环的执行

B) 只能在循环体内和switch语句内使用break语句

C) 在循环体内使用break语句或continue语句的作用相同

D) 从多层循环嵌套中退出时,只能使用goto语句

26以下程序输出结果为( )

#include "stdio.h"

main()

{int i,b,k=0;

for(i=1;i<=5;i++)

{ b=i%2;

while (b-->=0) k++;}

printf("%d,%d\n",k,b);

}

A. 3,-1

B. 8,-1

C. 3,0

D. 8,-2 27以下程序段中循环体总的执行次数是( )

int i,j;

for(i=7;i;i--)

for(j=0;j<6;j++)

{......}

A) 42 B) 21 C) 13 D) 36

28以下不正确的描述是( )

A. break 语句不能用于循环语句和switch语句外的任何其他语句

B. 在switch语句中使用break语句或continue语句的作用相同

C. 在循环语句中使用continue语句是为了结束本次循环,而不是终止整个循环的执行

D. 在循环语句中使用break语句是为了使流程跳出循环体,提前结束循环

1else语句总是和靠它最近的if匹配。

2switch语句中一定有default分支

3case后只能跟常量,不能跟变量

4break语句的作用就是结束本层循环。

5do-while语句构成的循环不能用其它语句构成的循环来代替。

6用do-while语句构成循环时,只要while后的表达式为0时就结束循环。

7for(表达式1;表达式2;表达式3)中,表达式1和表达式3不能同时都是逗号表达式。8for循环中,如果表达式2为空,则该循环一定是死循环。

9while循环的while()后没有分号,而do-while循环的while()后一定要有一个分号。

10for(i=0,j=10;i<=j;i++,j--) k=i+j;执行完后,k的值为50。

1若a、b均为int型变量,且a=100,则以下的for循环是死循环.

for (b=100;a!=b;++a,b++) printf("----\n");

执行语句:for(i=1;i++<4;++i);后;变量i的值是5。

2以下程序的运行结果是【】

main()

{int x,y,z;

x=1;y=2;z=3;

x=y--<=x||x+y!=z;

printf("%d,%d",x,y);

}

3以下程序的运行结果是【】

main()

{int x,y,z;

x=1;y=1;z=0;

x=x||y&&z;

printf("%d,%d",x,x&&!y||z);

}

4以下程序的运行结果是【】

main()

{int a,b,c;

int s,w=0,t;

a=-1;b=3;c=3;

if(c>0)s=a+b;

if(a<=0)

{if(b>0)

嵌入式C语言经典笔试题目

嵌入式c语言经典笔试题目 1 .用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1) #define语法的基本知识(例如:不能以分号结束,括号的使用,等等) 2)懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。 3)意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。 4)如果你在你的表达式中用到UL(表示无符号长整型),那么你有了一个好的起点。记住,第一印象很重要。 2 .写一个"标准"宏MIN,这个宏输入两个参数并返回较小的一个。 #define MIN(A,B)((A)<= (B) ? (A) : (B)) 这个测试是为下面的目的而设的: 1)标识#define在宏中应用的基本知识。这是很重要的。因为在嵌入(inline)操作符变为标准C的一部分之前,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。 2)三重条件操作符的知识。这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优化的代码,了解这个用法是很重要的。 3)懂得在宏中小心地把参数用括号括起来 4)我也用这个问题开始讨论宏的副作用,例如:当你写下面的代码时会发生什么事? least = MIN(*p++, b); 3.预处理器标识#error的目的是什么? 如果你不知道答案,请看参考文献1。这问题对区分一个正常的伙计和一个书呆子是很有用的。只有书呆子才会读C语言课本的附录去找出象这种问题的答案。当然如果你不是在找一个书呆子,那么应试者最好希望自己不要知道答案。 死循环(Infinite loops) 4.嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢? 这个问题用几个解决方案。我首选的方案是: while(1) { } 一些程序员更喜欢如下方案: for(;;) { } 这个实现方式让我为难,因为这个语法没有确切表达到底怎么回事。如果一个应试者给出这个作为方案,

c语言笔试题目及答案

c语言笔试题目及答案 C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。下面是c语言笔试题目及答案,请参考。 c语言笔试题目及答案 一、选择题((1)~(10)每小题2分,(11)~(50)每小题1分,共60分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选 项涂写在答题卡相应位置上,答在试卷上不得分。 (1)数据的存储结构是指________。 A)存储在外存中的数据 B)数据所占的存储空间量 C)数据在计算机中的顺序存储方式 D)数据的逻辑结构在计算机中的表示 答案:D 评析:数据的逻辑结构在计算机存储空间中的存放形式形式称为数据的存储结构(也称数据的物理结构)。 (2)下列关于栈的描述中错误的是________。 A)栈是先进后出的线性表

B)栈只能顺序存储 C)栈具有记忆作用 D)对栈的插入与删除操作中,不需要改变栈底指针 答案:B 评析:栈是一种特殊的线性表,又称先进后出表(FILO—First In Last Out)。 (3)对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是 ________。 A)冒泡排序为n2 B)冒泡排序为n C)快速排序为n D)快速排序为n(n一1)/2 答案:D 评析:假设线性表的长度为n,则在最坏情况下,冒泡排序需要经过n/2遍的从前往后扫描和n/2遍的从后往前扫描,需要比较次数为n(n-1)/2。快速排序法的最坏情况比较次数也是n(n-1)/2。 (4)对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为________。 A)log2n B)n/2 C)n D)n+l 答案:C 评析:顺序查找过程中,如果被查找的元素是线性表中的最后一个元素,或者元素不在线性表中,则需要与线性表中所有的元素进行比较。对长度为n的线性表进行顺序查找,在最坏情况下需要比较

c语言经典面试题

C语言面试题大汇总之华为面试题 1、局部变量能否和全局变量重名? 答:能,局部会屏蔽全局。要用全局变量,需要使用"::" ;局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。 2、如何引用一个已经定义过的全局变量? 答:extern 可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个编写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。 3、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?答:可以,在不同的C文件中以static形式来声明同名全局变量。 可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错. 4、请写出下列代码的输出内容 #include int main(void) { int a,b,c,d; a=10;

c=++a; d=10*a++; printf("b,c,d:%d,%d,%d",b,c,d); return 0; } 答:10,12,120 5、static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别? 答: 1) 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。 2) 从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。3) static函数与普通函数作用域不同,仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对

嵌入式C语言面试题汇总(超经典)

第一部分:基本概念及其它问答题 1、关键字static的作用是什么? 这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用: 1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 2). 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。 3). 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。 大多数应试者能正确回答第一部分,一部分能正确回答第二部分,同是很少的人能懂得第三部分。这是一个应试者的严重的缺点,因为他显然不懂得本地化数据和代码范围的好处和重要性。 2、“引用”与指针的区别是什么? 答、1) 引用必须被初始化,指针不必。 2) 引用初始化以后不能被改变,指针可以改变所指的对象。 3) 不存在指向空值的引用,但是存在指向空值的指针。 指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。程序中使用指针,程序的可读性差;而引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。 流操作符<<和>>、赋值操作符=的返回值、拷贝构造函数的参数、赋值操作符=的参数、其它情况都推荐使用引用。 3、.h头文件中的ifndef/define/endif 的作用? 答:防止该头文件被重复引用。 4、#include 与#include “file.h”的区别? 答:前者是从Standard Library的路径寻找和引用file.h,而后者是从当前工作路径搜寻并引用file.h。 5、描述实时系统的基本特性 答:在特定时间内完成特定的任务,实时性与可靠性。 6、全局变量和局部变量在内存中是否有区别?如果有,是什么区别? 答:全局变量储存在静态数据区,局部变量在堆栈中。 7、什么是平衡二叉树? 答:左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于1。 8、堆栈溢出一般是由什么原因导致的? 答:1.没有回收垃圾资源 2.层次太深的递归调用

C语言面试题大汇总,个人觉得还是比较全

4. static有什么用途?(请至少说明两种) 1.限制变量的作用域 2.设置变量的存储域 7. 引用与指针有什么区别? 1) 引用必须被初始化,指针不必。 2) 引用初始化以后不能被改变,指针可以改变所指的对象。 2) 不存在指向空值的引用,但是存在指向空值的指针。 8. 描述实时系统的基本特性 在特定时间内完成特定的任务,实时性与可靠性 9. 全局变量和局部变量在内存中是否有区别?如果有,是什么区别? 全局变量储存在静态数据库,局部变量在堆栈 10. 什么是平衡二叉树? 左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于1 11. 堆栈溢出一般是由什么原因导致的? 没有回收垃圾资源 12. 什么函数不能声明为虚函数? constructor 13. 冒泡排序算法的时间复杂度是什么? O(n^2) 14. 写出float x 与“零值”比较的if语句。 if(x>0.000001&&x<-0.000001) 16. Internet采用哪种网络协议?该协议的主要层次结构? tcp/ip 应用层/传输层/网络层/数据链路层/物理层 17. Internet物理地址和IP地址转换采用什么协议? ARP (Address Resolution Protocol)(地址解析協議) 18.IP地址的编码分为哪俩部分? IP地址由两部分组成,网络号和主机号。不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。 2.用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出 C程序。 循环链表,用取余操作做 3.不能做switch()的参数类型是: switch的参数不能为实型。 華為 1、局部变量能否和全局变量重名? 答:能,局部会屏蔽全局。要用全局变量,需要使用"::" 局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内

C语言经典面试题目集锦

1.前言 2.声明和初始化 2.1我如何决定使用那种整数类型? 2.264位机上的64位类型是什么样的? 2.3怎样定义和声明全局变量和函数最好? 2.4extern在函数声明中是什么意思? 2.5关键字auto到底有什么用途? 2.6我似乎不能成功定义一个链表。我试过typedef struct{char*item;NODEPTR next;}*NODEPTR;但是编译器报了错误信息。难道在C语言中一个结构不能包含指向自己的指针吗? 2.7怎样建立和理解非常复杂的声明?例如定义一个包含N个指向返回指向字符的指针的函数的指针的数组? 2.8函数只定义了一次,调用了一次,但编译器提示非法重定义了。 2.9main()的正确定义是什么?void main()正确吗? 2.10对于没有初始化的变量的初始值可以作怎样的假定?如果一个全局变量初始值为``零",它可否作为空指针或浮点零? 2.11代码int f(){char a[]="Hello,world!";}不能编译。 2.12这样的初始化有什么问题?char*p=malloc(10);编译器提示``非法初始式"云云。 2.13以下的初始化有什么区别?char a[]="string literal";char*p="string literal";当我向p[i]赋值的时候,我的程序崩溃了。 2.14我总算弄清除函数指针的声明方法了,但怎样才能初始化呢? 3.结构、联合和枚举 3.1声明struct x1{...};和typedef struct{...}x2;有什么不同? 3.2为什么struct x{...};x thestruct;不对? 3.3一个结构可以包含指向自己的指针吗? 3.4在C语言中实现抽象数据类型什么方法最好? 3.5在C中是否有模拟继承等面向对象程序设计特性的好方法? 3.6我遇到这样声明结构的代码:struct name{int namelen;char namestr[1];};然后又使用一些内存分配技巧使namestr数组用起来好像有多个元素。这样合法和可移植吗? 3.7是否有自动比较结构的方法? 3.8如何向接受结构参数的函数传入常数值? 3.9怎样从/向数据文件读/写结构? 3.10我的编译器在结构中留下了空洞,这导致空间浪费而且无法与外部数据文件进行"二进制"读写。能否关掉填充,或者控制结构域的对齐方式? 3.11为什么sizeof返回的值大于结构的期望值,是不是尾部有填充? 3.12如何确定域在结构中的字节偏移? 3.13怎样在运行时用名字访问结构中的域? 3.14程序运行正确,但退出时却``core dump''了,怎么回事? 3.15可以初始化一个联合吗?

C语言笔试题大全

C语言笔试题大全 4. static有什么用途?(请至少说明两种) 1.限制变量的作用域 2.设置变量的存储域 7. 引用与指针有什么区别? 1) 引用必须被初始化,指针不必。 2) 引用初始化以后不能被改变,指针可以改变所指的对象。 2) 不存在指向空值的引用,但是存在指向空值的指针。 8. 描述实时系统的基本特性 在特定时间内完成特定的任务,实时性与可靠性 9. 全局变量和局部变量在内存中是否有区别?如果有,是什么区别? 全局变量储存在静态数据库,局部变量在堆栈 10. 什么是平衡二叉树? 左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于1 11. 堆栈溢出一般是由什么原因导致的? 没有回收垃圾资源 12. 什么函数不能声明为虚函数? constructor 13. 冒泡排序算法的时间复杂度是什么? O(n^2) 14. 写出float x 与“零值”比较的if语句。 if(x>0.000001&&x<-0.000001) 16. Internet采用哪种网络协议?该协议的主要层次结构? tcp/ip 应用层/传输层/网络层/数据链路层/物理层 17. Internet物理地址和IP地址转换采用什么协议? ARP (Address Resolution Protocol)(地址解析協議) 18.IP地址的编码分为哪俩部分? IP地址由两部分组成,网络号和主机号。不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。 2.用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序。 循环链表,用取余操作做 3.不能做switch()的参数类型是: switch的参数不能为实型。 華為 1、局部变量能否和全局变量重名? 答:能,局部会屏蔽全局。要用全局变量,需要使用"::" 局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如

c语言面试大全

一、选择题 下列各题ABCD四个选项中,只有一个选项是正确的,请将正确选项涂在答题卡的相应位置上,答在试卷上不得分。 1、不合法的整数是( B)。 A)0×35 B)43.6 C)0532 D)-346 2、下列合法的字符常量是( D )。 A)“f” B)x C)65 D)‘\Xab’ 3、设有整型变量x,单精度变量y=5.5,表达式x=float(y*3+((int)y%4))执行后,x的值为( A )。 A)17 B)17.500000 C)17.5 D)1.5 4、在C语言中,负整数在内存中以( A )形式释放。 A)补码 B)BCD码 C)反码 D)十进制数 5、在C语言中,要求参加运算的数必须是整数的运算符是( C )。 A)/ B)! C)% D)= = 6、(D )是C语言中非法的数据类型关键字。 A)float B)singed C)integer D)Char 7、现已定义整形变量int i=1;执行循环语句while(i++<5);后i的值为( C )。 A)1 B)5 C)6 D)以上三个答案都不正确 8、下列语句的输出结果是( D )。 printf(“%f\n”,(float)(2+4)/2); A)有语法错误不能通过编译 B)3 C)3.0 D)3.000000 9、C语言中,整数-8在内存中的存储形式是( A )。 A)1111,1111,1111,1000 B)1000,0000,0000,1000

C)0000,0000,0000,1000 D)1111,1111,1111,0111 10、设C语言中,int类型数据占2个字节,则long类型数据占( D )个字节。 A)1 B)2 C)8 D)4 11、若变量a已说明为float类型,则能实现将a中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是( C )。 A)a=(a*100+0.5)/100.0 B)a=(a*100+0.5)/100 C)a=(int)(a*100+0.5)/100.0 D)a=(a/100+0.5)*100.0 12、定义a为整型,下列表达式a=3>6的运行后,a的值为( A )。 A)0 B)1 C)3 D)表达式错误 13、如果a=1,b=2,c=3,d=4,则条件表达式a>b?a:c>d?c:d的值为( D )。 A)1 B)2 C)3 D)4 14、对于条件表达式(M)?(a++):(a–),其中的表达式M等价于( C )。 A)M= =0 B)M= =1 C)M!=0 D)M!=1 15、在x值处于-2到2,4到8时值为“真”,否则为“假”的表达式是(D )。 A)(2>x>-2)||(4>x>8) B)((x<=-2)||(x>=2)||((x>4)||(x>=8)) C)(x<2)&&(x>=-2)&&(x>4)&&(x<8) D)(x>-2)&&(x>4)||(x<8)&&(x<2) 16、已知字母a的ASC||的十进制代码为97,则执行下列语句后输出为( C )。 Char a=‘a’; a–; printf(“%d,%c\n”,a+‘2’-‘0’,a+‘3’-‘0’); A)a,c B)a—运算不合法,故有语法错误 C)98,c D)格式描述和输出项不匹配,输出无定值 17、下列语句中错误的是( B )。

C语言面试题(经典全)

1.static有什么用途?(请至少说明两种) 1)限制变量的作用域 2)设置变量的存储域(堆,主动分配内存也是堆) 1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。 3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。 4.全局变量和局部变量在内存中是否有区别?如果有,是什么区别? 全局变量储存在静态数据库,局部变量在栈 6.堆栈溢出一般是由什么原因导致的? 堆栈溢出一般是循环的递归调用导致的,如果使用的大数据结构的局部变量,也可能导致堆栈溢出。没有回收垃圾资源导致的是内存泄露最后内存耗尽。 20.不能做switch()的参数类型是: switch的参数不能为实型。(只能是int char) 9.写出float x 与“零值”比较的if语句。 if(x<0.000001&&x>-0.000001)

3.在c语言库函数中将一个字符转换成整型的函数是atol()吗,这个函数的原型是什么? 函数名: atol 功能: 把字符串转换成长整型数 函数的原型: long atol(const char *nptr); 程序例: #include #include int main(void) { long l; char *str = "98765432"; l = atol(lstr); printf("string = %s integer = %ld\n", str, l); return(0); } 1.对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现? c用宏定义,c++用inline

C语言面试题和答案

1.什么是编辑器,编译器,源代码,目标代码? 略 2.编写一个最简单的程序。 答案:void main(void) {} 或 void main(void) { } 3.C语言有哪两种存储数值的方式? 答案:变量和常量 4.请写出下列代码的输出内容 #include int main(void) { int a,b,c,d; a=10; b=a++; c=++a; d=10*a++; printf("b,c,d:%d,%d,%d",b,c,d); return 0; } 答:10,12,120 5. 请写出下列代码的输出内容 #include int a,b; int main(void) { a = b = 5;

/* Print them, decrementing each time. */ /* Use prefix mode for b, postfix mode for a */ printf("\nPost Pre"); printf("\n%d %d",a--,--b); printf("\n%d %d",a--,--b); printf("\n%d %d",a--,--b); printf("\n%d %d",a--,--b); printf("\n%d %d\n",a--,--b); system("PAUSE"); return 0; } 答案:5 4 4 3 3 2 2 1 1 0 6.请写出下列代码的输出内容 #include /* Initialize variables. Note that c is not less than d, */ /* which is one of the conditions to test for. */ /* Therefore, the entire expression should evaluate as false.*/ int a = 5, b = 6, c = 5, d = 1; int x; int main( void ) { /* Evaluate the expression without parentheses */ x = a < b || a < c && c < d; printf("\nWithout parentheses the expression evaluates as %d", x); /* Evaluate the expression with parentheses */ x = (a < b || a < c) && c < d; printf("\nWith parentheses the expression evaluates as %d\n", x); return 0; } 答案:Without parentheses the expression evaluates as 1 With parentheses the expression evaluates as 0 7.下面表达式的值是多少?

100条经典C语言笔试题目(全)

100条经典C语言笔试题目 1、请填写bool,float,指针变量与“零值”比较的if语句。 提示:这里“零值”可以是0,0.0,FALSE 或者“空指针”。例如int变量n与“零值” 比较的if语句为: if ( n == 0 ) if ( n != 0 ) 以此类推。 (1)请写出 bool flag 与“零值”比较的 if 语句: 【标准答案】if ( flag ) if ( !flag ) (2)请写出 float x 与“零值”比较的 if 语句: 【标准答案】 const float EPSINON = 0.00001; if ((x >= - EPSINON) && (x <= EPSINON) 不可将浮点变量用“==”或“!=”与数字比较,应该设法转化成 “>=”或“<=”此类形式。 (3)请写出 char *p 与“零值”比较的 if 语句 【标准答案】 if (p == NULL) if (p != NULL) 2、以下为 Linux下的 32 位 C程序,请计算 sizeof 的值。 char str[] = “Hello” ; char *p = str ; int n = 10; 请计算(1)sizeof (str ) = (2)sizeof ( p ) = (3)sizeof ( n ) = 【标准答案】(1)6、(2)4、(3)4 (4)void Func ( char str[100]) { ……; } 请计算 sizeof( str ) = (5)void *p = malloc( 100 ); 请计算sizeof ( p ) = 【标准答案】(4)4、(5)4 3、 long a=0x801010; a+5=? 【标准答案】0x801010用二进制表示为:“1000 0000 0001 0000 0001 0000”,十 进制的值为8392720,再加上5就是8392725。 4、用变量a给出下面的定义

试题题库-—嵌入式开发c语言面试题全套

嵌入式开发.C语言面试题 预处理器(Preprocessor) 1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等) 2). 懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多 少 秒而不是计算出实际的值,是更清晰而没有代价的。 3). 意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器 这个常数是的长整型数。 4). 如果你在你的表达式中用到UL(表示无符号长整型),那么你有了一个好的起点。记 住 ,第一印象很重要。 2. 写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。 #define MIN(A,B) ((A) <= (B) (A) : )) C\C++试题集C\C++ Development这个测试是为下面的目的而设的: 1). 标识#define在宏中应用的基本知识。这是很重要的,因为直到嵌入(inline)操作符变 为标准C的一部分,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到 要求的性能,嵌入代码经常是必须的方法。 2). 三重条件操作符的知识。这个操作符存在C语言中的原因是它使得编译器能产生比 if-then-else更优化的代码,了解这个用法是很重要的。 3). 懂得在宏中小心地把参数用括号括起来 4). 我也用这个问题开始讨论宏的副作用,例如:当你写下面的代码时会发生什么事?Least = MIN(*p++, b); 3. 预处理器标识#error的目的是什么? 如果你不知道答案,请看参考文献1。这问题对区分一个正常的伙计和一个书呆子是很有用 的。只有书呆子才会读C语言课本的附录去找出象这种 问题的答案。当然如果你不是在找一个书呆子,那么应试者最好希望自己不要知道答案。 死循环(Infinite loops) 4. 嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢? 这个问题用几个解决方案。我首选的方案是:

C语言面试题.pdf

一、 C语言面试题: 1、问:在嵌入式开发中,为什么能通过C语言直接操作硬件? 答:因为C有指针,它是C语言的灵魂,它可以直接访问内存。 2、问:链表的作用?(这是上一个问题的延申,学员一般会举一堆例子来说 明它的作用,但这都不是重点,没有抓住主要矛盾) 答:链表用于内存管理,链表节点中的指针域可以将不连续的内存彼此关 联起来,实现内存的动态管理。 3、问:什么变量不能用指针指向? 答:寄存器变量(register 修饰),因为这个变量会优先选择存放到CPU 寄存器中,而指针只能指向内存的任务区域,但不能指向寄存器。 4、问:有符号字符型和无符号字符型变量的最大值和最小值分别是多少(十 六进制多少),为什么? 答:有符号(-128—127,-0X80—0X7F),无符号(0-255,0X00—0XFF)。 5、问:林锐面试题中四个有关内存操作的问题: 第一题、运行会出现段错误(崩溃): 答:因为参数是值传递,所以主调函数中的str指针已然指向空,不能向 里面拷数据,除非加上取地址,采用二维指针接收才能传递动态内存; 第二题:乱码: 答:实际上可能是乱码,也可能显示出一部分内容,显示乱码是因为刚才 那段栈内存空间全部被覆盖,如果未完全覆盖则显示一部分内容; 第三题:能够输出hello 答:但由于没有在同一层释放内存,容易导致内存泄露; 第四题:对已经释放的内存进行操作 答:会破坏其它有用数据,后果难以预料,通常提示出现段错误。 6、问:哪些地方可以用到const?const变量和函数输入参数用const修饰有 哪些作用? 答:1、定义常量 (1)const修饰变量,const TYPE ValueName=value;value是不可变的。 (2)将const 改为外部链接,作用于扩大至全局,编译时分配内存,并且可以不进行初始化,仅仅作为声明,编译器认为在在程序其他 地方进行了定义; Extend const int ValueName = value; 2、指针使用CONST (1)指针本身是常量不可变 (char *)const pContent; Const (char*)pContent; (2)指针指向的内容是常量不可变 Const char *pContent; Char const *pContent; (3)两者都不可变 Const char *const pConten 3、函数中使用CONST (1)const修饰函数的参数

有趣的C语言笔试题

有趣的C语言笔试题 1.gets()函数 问:请找出下面代码里的问题: #include int main(void) { char buff[10]; memset(buff,0,sizeof(buff)); gets(buff); printf(" The buffer entered is[%s] ",buff); return 0; } 答:上面代码里的问题在于函数gets()的使用,这个函数从stdin接收一个字符串而不检查它所复制的缓存的容积,这可能会导致缓存溢出。这里推荐使用标准函数fgets()代替。 2.strcpy()函数 问:下面是一个简单的密码保护功能,你能在不知道密码的情况下将其破解吗? #include int main(int argc,char*argv[]) { int flag=0; char passwd[10]; memset(passwd,0,sizeof(passwd)); strcpy(passwd,argv[1]); if(0==strcmp("LinuxGeek",passwd)) { flag=1; }

if(flag) { printf(" Password cracked "); } else { printf(" Incorrect passwd "); } return 0; } 答:破解上述加密的关键在于利用攻破strcpy()函数的漏洞。所以用户在向“passwd”缓存输入随机密码的时候并没有提前检查“passwd”的容量是否足够。所以,如果用户输入一个足够造成缓存溢出并且重写“flag”变量默认值所存在位置的内存的长“密码”,即使这个密码无法通过验证,flag验证位也变成了非零,也就可以获得被保护的数据了。例如: $./psswd aaaaaaaaaaaaa Password cracked 虽然上面的密码并不正确,但我们仍然可以通过缓存溢出绕开密码安全保护。 要避免这样的问题,建议使用strncpy()函数。 作者注:最近的编译器会在内部检测栈溢出的可能,所以这样往栈里存储变量很难出现栈溢出。在我的gcc里默认就是这样,所以我不得不使用编译命令‘-fno-stack-protector’来实现上述方案。 3.main()的返回类型 问:下面的代码能编译通过吗?如果能,它有什么潜在的问题吗? #include void main(void) { char*ptr=(char*)malloc(10); if(NULL==ptr) {

c语言笔试题(答案)

笔试题 一、填空题(每个空4分,共28分) 1)struct tagABC { char name[10]; char sex; long sno; float score[4]; }*pAbc;(四字节对齐) pAbc=NULL; 那么,执行pAbc+=2;之后pAbc的值为(64 ) 2)如下代码,最终value的值是(8) int *p1,*p2; int value; p1=(int*)0×400; p2=(int*)0×408; value = p2-p1; 3)如下代码,printf的结果为(2) #include〈stdio.h〉 #include〈string.h〉 void main(void) { char acNew[20]= “\\0\0”; printf(“%d\n”,strlen(acNew)); } 4) 有如下程序段,运行该程序的输出结果是(33) main () { int y=3,x=3,z=1; printf(“%d%d\n”,(++x,y++),z+2); } 5)设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后,n的值为(2)6)struct tagAAA { Unsigned char ucId:1; Unsigned char ucPara0:2; Unsigned char ucState:6; Unsigned char ucTail:4; Unsigned char ucAvail; Unsigned char unTail2:4;

Unsigned long ulData; }AAA_S 问:AAA_S在字节对齐分别为1,4情况下,占用的空间大小分别是多少?( 9)(12 ) 二、选择题(每题2分,共34分) 1)若有说明int(*p)[3];以下叙述正确的是( D ) A:p是指针数组 B:(*p)[3]和*p[3]等价 C:p是指向一维数组中任何一个元素的指针 D:p是指向含有3个整型元素的一维数组的指针 2)以下关于单元测试的描述,哪些是对的?(D) A:黑盒测试针对软件的功能,不考虑功能的实现细节; B:白盒测试针对源代码的测试,从程序功能的具体实现上找错; C:路径覆盖是黑盒测试的一种方法,编写测试用例使程序的每条语句都能走到; D:条件覆盖是百盒测试的一种方法, 编写测试用例使程序的每个判断的各种情况都能到3)以下可以用于任务间通信的有(ABCD) A:共享存 B:信号量 C:消息队列和管道 D:socket调用 4)有关结构,以下哪些描述是对的?(BC) A:为了测试方便,尽量把一个结构的功能设计得多一些 B:不同结构间的关系不要过于复杂 C:结构中的各元素应代表同一事务的不同侧面,而不应把描述没有关系或关系很弱的不同事务的元素放到同一结构中 D:结构中元素的布局与排列顺序可以随意设计 5)关于强制类型转化,下面说确的是(ABCD) A:当目的结构的空间大于源结构的空间时,要重点关注存访问超过源结构围的情形,可能越界; B:当目的结构的空间小于源结构的空间时,要重点关注对目的结构赋值不能完全覆盖源结构围的情形,可能遗漏; C:结构体之间的强制类型转换时,其成员字段的数据类型的差异也是要格外小心的; D:与结构体之间的强制类型转换相比,基本数据结构的强制类型转换更容易出现上面描述的情况,使用的时候,一定要慎之又慎; 6)正确的使用assert,软件系统不会对人为原因造成的错误进行处理。它有利于(A BCD) A:缺陷及早暴露,加快定位进程; B:明确表示函数接口或算法逻辑的校验关系,增强软件代码的可读性; C:去除不必要的容错处理,简化代码处理流程,降低软件处理复杂度; D:强化编程接口之间的契约,增强软件的可维护性; 7)对于循环体的执行效率,下述说确的是(ABCD ) A:循环体工作量最小化 B:在多重循环中,应将最忙的循环放在最层 C:尽量减少循环的嵌套层次 D:避免在循环体做无谓的判断语句,将循环语句置于判读语句的代码块之中 8)设数组a[5]={10,20,30,40,50};已知指针p指向a[1];则表达式*++p的值是(A)

嵌入式Linux C语言面试试题

基础试题(C语言) 一、ANSI C/C++方面的知识 一.1、简答题。下面的题目必须全部答对才给分(20分): 1、如何在C中初始化一个字符数组。 2、如何在C中为一个数组分配空间。 3、如何初始化一个指针数组。 4、如何定义一个有10个元素的整数型指针数组。 5、s[10]的另外一种表达方式是什么。 6、GCC3.2.2版本中支持哪几种编程语言。 7、要使用CHAR_BIT需要包含哪个头文件。 8、对(-1.2345)取整是多少? 9、如何让局部变量具有全局生命期。 10、C中的常量字符串应在何时定义? 11、如何在两个.c文件中引用对方的变量。 12、使用malloc之前需要做什么准备工作。 13、realloc函数在使用上要注意什么问题。 14、strtok函数在使用上要注意什么问题。 15、gets函数在使用上要注意什么问题。 16、C语言的词法分析在长度规则方面采用的是什么策略? 17、a+++++b所表示的是什么意思?有什么问题? 18、如何定义Bool变量的TRUE和FALSE的值。 19、C语言的const的含义是什么。在定义常量时,为什么推荐使用const,而不是#defin e。 20、C语言的volatile的含义是什么。使用时会对编译器有什么暗示。 一.2、问答题。 1、----------------------------------------------------------- "匈牙利命名法"有什么优缺点?(2分) 2、----------------------------------------------------------- 下面x, y, *p的值是多少,有什么问题?(2分) int x, y, z = 2; int *p=&z; x=sizeof*p; y=x/*p; /* x=?, *p=?, y=?, 有什么问题?*/ 3、----------------------------------------------------------- 下面的语句是什么意思?如何声明或定义才使它们更易懂?(10分)

c语言常见面试题

C/C++程序员面试重点以及应对方法: 非技术方面: 1. 仪表 2. 礼仪 3. 个人素养 技术部分: 基础: 一.C语言基础语法 1.进程中的内存布局 2.指针相关(野指针、数组越界)、数组与指针、二位指针3.数组与二维数组 4.动态内存分配(内存泄漏) 5.预编译与有参宏 6.Static与const 7.结构体、共用体以及结构体空洞 8.位运算 9.Sizeof与strlen 二.C++基础语法 见C/C++求职就业手册 重点: 1.Inline函数

2.指针与引用 3.Const 、static、sizeof 4.Class与struct的区别 5.构造函数与析构函数 6.继承与多态 三.数据结构(计算机专业需要全部掌握) 1.单链表(非计算机专业必须掌握) 2.循环链表 3.双向链表 4.队列 5.栈 6.二叉树 四.各种排序 非计算专业需掌握冒泡与选择排序 计算机专业需要掌握5种常见的排序方法 五.常见Linux命令 六.Linux系统编程 1.不带缓冲的文件操作(堵塞与非堵塞) 2. 带缓冲的文件操作(行缓冲、全缓冲、不缓冲) 3. 进程的概念(fork、进程的五种状态与状态切换) 4. IPC 5. 线程(线程与进程的区别)

6. 线程间同步(互斥锁与信号量) 7.网络编程(TCP/IP四层、三次握手、TCP与UDP) 8.Shell脚本编程 七.数据库编程 数据库的基本概念与SQL语句 SQLite的用法 八.QT编程与GUI的概念 九.智力测验题(一般公司不会考,比较大的公司及校园招聘会往往会考到) 项目经验: 1. 做过的项目 2. 如何与别人交流沟通与协助 3. 思考问题的方法 附:常见C语言笔试题 1.用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 2.写一个“标准”宏MIN ,这个宏输入两个参数并返回较小的一个。 #define MIN(A,B) ((A)<= (B) ? (A) : (B)) 3.用变量a给出下面的定义 a) 一个整型数(An integer)

C语言笔试面试题附答案

C言面试笔试题(附答案) Question 1. (单选) 在顺序表(3,6,8,10,12,15,16,18,21,25,30)中,用二分法查找关键码值11,所需的关键码比 较次数为(3) 1. 2 2. 3 3. 4 4. 5 Question 2. (单选) 设散列表的存储空间大小为19,所用散列函数为h(key)=key mod 19,用开地址线性探查法解决碰撞。散列表的当前 状态如下:0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 190 194 768 559 582 39 3 208.现要将关键码 值75插入到该散列表中,其地址应为 (1) 1. 1 2. 11 3. 5 4. 15 Question 3. (单选) 作业管理的主要任务包括作业输入、作业处理和作业输出。其中作业处理的工作是Ⅰ.作业调度Ⅱ.作业控制Ⅲ. 作业后备 (3) 1. 只有Ⅰ 2. 只有Ⅱ 3. Ⅰ和Ⅱ 4. 都是 Question 4. (单选) 系统为了管理文件,设置了专门的数据结构----文件控制块(FC。FCB是在执行下列哪一个系统调用时建立的? (1) 1. create 2. open 3. read 4. write Question 5. (单选) 下面关于通道的叙述中,正确的是Ⅰ.通道相当于一个功能简单的处理机Ⅱ.通道完成数据输入输出工作Ⅲ.通道与 CPU共用一个内存 (4) 1. Ⅰ和Ⅱ

3. Ⅱ和Ⅲ 4. 都是 Question 6. (单选) 互操作性是指在不同环境下的应用程序可以相互操作,交换信息。要使采用不同数据格式的各种计算机之间能够相 互理解,这一功能是由下面哪一层来实现的? (2) 1. 应用层 2. 表示层 3. 会话层 4. 传输层 Question 7. (单选) 在UNIX的Shell程序中,可以使用位置变量。若要指明Shell引用的最近后台进程的号码,可 以使用位置变量 (2) 1. $$ 2. $! 3. $# 4. $- Question 8. (单选) 设二叉树根结点的层次为0,一棵深度(高度)为k的满二叉树和同样深度的完全二叉树各有f个结点和c个结点,下列 关系式不正确的是: (2) 1. f>=c 2. c>f 3. f=2k+1-1 4. C>2k-1 Question 9. (单选) 单链表的每个结点中包括一个指针link,它指向该结点的后继结点。现要将指针q指向的新 结点插入到指针p指向的 单链表结点之后,下面的操作序列中哪一个是正确的? (3) 1. q:=p^.link; p^.link:=q^.link 2. p^.link:=q^.link; q:=P^.link 3. q^.link:=p^.link; p^.link:=q; 4. p^.link:=q; q^.link:=p^,link Question 10. (单选) 某二叉树结点的对称序序列为A、B、C、D、E、F、G,后序序列为B、D、C、A、F、G、E。该二叉树结点的前序序

相关文档
相关文档 最新文档