文档库 最新最全的文档下载
当前位置:文档库 › C面试题精选

C面试题精选

C面试题精选
C面试题精选

试卷总分:100

出卷时间:2014-07-11 11:24

答题时间:120分钟

一单选题

1.要把高级语言编写的源程序转换为目标程序,需要使用( D )[2分]

A.编辑程序

B.驱动程序

C.诊断程序

D.编译程序

2.以下叙述中正确的是( C )[2分]

A.C语言程序将从源程序中第一个函数开始执行

B.可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行

C.C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束

D.main可作为用户标识符,用以命名任意一个函数作为主函数

3.若变量a是int类型,并执行了语句:a=‘A'+1.6;,则正确的叙述是 ( D )[2分]

A.a的值是字符B

B.a的值是浮点型

C.不允许字符型和浮点型相加

D.a的值是字符‘A’的ASCII值加上2

4.若变量已正确定义并赋值,以下符合C语言语法的表达式是

( B )[2分]

A.a:=b+1

B.a=b=c+2

C.int 18.5%3

D.a=a+7=c+b

5.下列可用于C语言用户标识符的一组是( )[2分]

A.void, define, WORD

B.a3_b3, _123,car

C.For, -abc, IF Case

D.2a, DO, sizeof

6.若在定义语句:int a,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是( )[2分]

A.scanf("%d",a,b,c);

B.scanf("%d%d%d",a,b,c);

C.scanf("%d",p);

D. scanf("%d",&p);

7.以下关于long、int和short类型数据占用内存大小的叙述中正确的是( )[2分]

A.均占4个字节

B.根据数据的大小来决定所占内存的字节数

C.由用户自己定义

D.由C语言编译系统决定

8.若变量已正确定义,有以下程序段

i=0;

do

{

printf("%d,",i);

}while(i++);

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

其输出结果是( )[2分]

A. 0,0

B. 0,1

C. 1,1

D. 程序进入无限循环

9.有以下计算公式

若程序前面已在命令中包含math.h文件,不能够正确计算上述公式的程序段是( )[2分]

A. if(x>=0) y=sqrt(x); else y=sqrt(-x);

B. y=sqrt(x)if(x<0) y=sqrt(-x);

C. if(x>=0)y=sqrt(x); if(x<0)y=sqrt(-x);

D. y=sqrt(x>=0?x:-x);

10.设有条件表达式:(EXP)?i++;j--,则以下表达式中(EXP)完全等价的是( )[2分]

A.(EXP==0)

B.(EXP!=0)

C.(EXP==1)

D.(EXP!=1)

11.有以下程序

#include

int main(void)

{

int y=9;

for( ; y>0;y--)

{

if(y%3= =0)

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

}

}

程序的运行结果是( )[2分]

A.741

B.963

C.852

D.875421

12.若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是( )[2分]

A.函数的实参和其对应的形参共占同一存储单元

B.形参只是形式上的存在,不占用具体存储单元

C.同名的实参和形参占同一存储单元

D.函数的形参和实参分别占用不同的存储单元

13.已知字符'A'的ASCⅡ代码值是65,字符变量c1的值是'A',c2的值是'D'。执行语句printf("%d,%d",c1,c2-2);后,输出结果是( )[2分]

A.A,B

B.A,68

C.65,66

D.65,68

14.以下叙述中错误的是( )[2分]

A.改变函数形参的值,不会改变对应实参的值

B.函数可以返回地址值

C.可以给指针变量赋一个整数作为地址值

D.当在程序的开头包含文件stdio.h时,可以给指针变量赋NULL

15.以下正确的字符串常量是( )[2分]

A."\\\"

B.'abc'

C.Olympic Games

D." "

16.设有定义:char p[]={’1’,’2’,’3’},*q=p; ,以下不能计算出一个char型数据所占字节数的表达式是( )[2分]

A.sizeof(p)

B.sizeof(char)

C.sizeof(*q)

D.sizeof(p[0])

17.有以下函数

int func(char *s)

{

char *t=s;

while(*t++);

t--;

return(t-s);

}

以下关于func函数的功能叙述正确的是( )[2分]

A.求字符串s的长度

B.比较两个串的大小

C.将串s复制到串t

D.求字符串s所占字节数

18.若有定义语句:int a[3][6]; ,按在内存中的存放顺序,a数组的第10个元素是( )[2分]

A.a[0][4]

B.a[1][3]

C.a[0][3]

D.a[1][4]

19.有以下程序

#include

void fun(char **p)

{

++p;

printf("%s\n",*p);

}

int main(void)

{

char

*a[ ]={"Morning","Afternoon","Evening","Night"};

fun(a);

}

程序的运行结果是( )[2分]

A.Afternoon

B.fternoon

C.Morning

D. orning

20.若有定义语句:int a[2][3],*p[3]; ,则以下语句中正确的是( )[2分]

A.p=a;

B.p[0]=a;

C.p[0]=&a[1][2];

D. p[1]=&a;

21.有以下程序

#include

int fun(char s[ ])

{

int n=0;

while(*s<=’9’&&*s>=’0’)

{

n=10*n+*s-’0’;

s++;

}

return(n);

}

int main(void)

{

char s[10]={’6’,’1’,’*’,’4’,’*’,’9’,’*’,’0’,’*’};

printf("%d\n",fun(s));

}

程序运行的结果是( )[2分]

A.9

B.61490

C.61

D.5

22.以下能正确定义一维数组的选项是( )[2分]

A.int a[5]={0,1,2,3,4,5};

B.char a[ ]={0,1,2,3,4,5};

C.char a={’A’,’B’,’C’};

D.int a[5]="0123";

23.以下叙述中正确的是( ) [2分]

A.预处理命令行必须位于源文件的开头

B.在源文件的一行上可以有多条预处理命令

C.宏名必须用大写字母表示

D.宏替换不占用程序的运行时间

24.若有以下说明和定义( )

union dt

{

int a;

char b;

double c;

}data;

以下叙述中错误的是[[2分]

A.data的每个成员起始地址都相同

B.变量data所占的内存字节数与成员c所占字节数相等

C.程序段:data.a=5;printf("%f\n",data.c);输出结果为5.000000

D. data可以作为函数的实参

25.以下语句或语句组中,能正确进行字符串赋值的是 ( ) [2分]

A.char *sp;*sp="right!";

B.char s[10];s="right!";

C.char s[10];*s="right!";

D.char *sp="right!";

二填空题

1.以下程序的功能是:输出a、b、c三个变量中的最小值.请填空。#include

int main(void)

{

int a,b,c,t1,t2;

scanf("%d%d%d",&a,&b,&c);

t1=a

t2=c

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

}[每空2分]

2.以下程序的输出结果

是.

#include

int main(void)

{

int n=12345, d;

while(n!=0)

{

d=n%10;

printf("%d",d);

n/=10;

}

}[每空4分]

3.已有定义如下:

struct node

{

int data;

struct node *next;

} *p;

以下语句调用malloc函数,使指针p指向一个具有struct node类型的动态存储空间。

p = (struct node *)malloc(

);[每空4分]

4.表达式(int)((double)5/2+2.5)的值

是:[每空4分]

5.写出以下两段程序的执行结果。如果程序无法编译,请指出出错

部分并写明原因;如果程序陷入死循环,请回答“死循环”。如果执行结果出现内存错误,请指出出错部分并写明原因。

int main(void)

{

char s[ ]="man";

int i;

for(i=0;s[ i ];i++)

printf("\n%c%c%c%c",s[ i ], *(s+i), *(i+s), i[s]);

return 0;

int main(void)

{

char *cptr,c;

void *vptr,v;

c=10; v=0;

cptr=&c;

vptr=&v;

return 0;

}

[每空2分]

6.对下面的代码进行解释:

typedef void (*lpFunction)(void);

lpFunction lpReset = (lpFunction)0xF000FFF0; lpReset();

[4分]

7.

指出下面代码的不妥之处(不需要修改):

void GetMemory(T_S8 *p, T_S16 nNum)

{

p = (T_S8 *)malloc(sizeof(T_S8) * nNum);

}

void Test(void)

{

T_S8 *str = NULL;

GetMemory(str, 100);

strcpy(str, "hello");

}

[每空4分]

8.Test函数的运行结果如何?原因?

char *GetMemory(void)

{

char p[] = "hello world";

return p;

}

void Test(void)

{

char *str = NULL;

str = GetMemory();

printf("%s\n", str);

}

[每空4分]

9.Test函数的运行结果如何?原因?

Void GetMemory2(char **p, int num)

{

*p = (char *)malloc(num);

}

void Test(void)

{

char *str = NULL;

GetMemory(&str, 100);

strcpy(str, "hello");

printf("%s\n", str);

}

[每空4分]

10. Test函数的运行结果如何?原因?

void Test(void)

{

char *str = (char *) malloc(100);

strcpy(str, “hello”);

free(str);

if(str != NULL)

{

strcpy(str, “world”);

printf("%s\n", str);

}

}

[每空4分]

三编程题

1.请编写一个函数func, 用来删除字符串中的所有空格。

例如,传入字符串“asd af aa z67”, 则返回为字符串“asdafaaz67”。[10分]

============ 本试卷共计36题,此处为结束标志。考试酷examcoo ============

(注:可编辑下载,若有不当之处,请指正,谢谢!)

相关文档