C面试题精选.docx
《C面试题精选.docx》由会员分享,可在线阅读,更多相关《C面试题精选.docx(13页珍藏版)》请在冰豆网上搜索。
C面试题精选
试卷总分:
100
出卷时间:
2014-07-1111:
24
答题时间:
120分钟
一单选题
1.要把高级语言编写的源程序转换为目标程序,需要使用(D)[2分]
A.编辑程序
B.驱动程序
C.诊断程序
D.编译程序
2.以下叙述中正确的是( C)[2分]
语言程序将从源程序中第一个函数开始执行
B.可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行
语言规定必须用main作为主函数名,程序将从此开始执行,在此结束
可作为用户标识符,用以命名任意一个函数作为主函数
3.若变量a是int类型,并执行了语句:
a=‘A'+;,则正确的叙述是( D)[2分]
的值是字符B
的值是浮点型
C.不允许字符型和浮点型相加
的值是字符‘A’的ASCII值加上2
4.若变量已正确定义并赋值,以下符合C语言语法的表达式是( B)[2分]
:
=b+1
=b=c+2
%3
=a+7=c+b
5.下列可用于C语言用户标识符的一组是( )[2分]
define,WORD
_123,car
-abc,IFCase
DO,sizeof
6.若在定义语句:
inta,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是( )[2分]
("%d",a,b,c);
("%d%d%d",a,b,c);
("%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.有以下计算公式
若程序前面已在命令中包含文件,不能够正确计算上述公式的程序段是( )[2分]
A. if(x>=0)y=sqrt(x); elsey=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>=0x:
-x);
10.设有条件表达式:
(EXP)i++;j--,则以下表达式中(EXP)完全等价的是( )[2分]
A.(EXP==0)
B.(EXP!
=0)
C.(EXP==1)
D.(EXP!
=1)
11.有以下程序
#include<>
intmain(void)
{
inty=9;
for(;y>0;y--)
{
if(y%3==0)
printf("%d",--y);
}
}
程序的运行结果是( )[2分]
12.若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是( )[2分]
A.函数的实参和其对应的形参共占同一存储单元
B.形参只是形式上的存在,不占用具体存储单元
C.同名的实参和形参占同一存储单元
D.函数的形参和实参分别占用不同的存储单元
13.已知字符'A'的ASCⅡ代码值是65,字符变量c1的值是'A',c2的值是'D'。
执行语句printf("%d,%d",c1,c2-2);后,输出结果是( )[2分]
,B
,68
,66
,68
14.以下叙述中错误的是( )[2分]
A.改变函数形参的值,不会改变对应实参的值
B.函数可以返回地址值
C.可以给指针变量赋一个整数作为地址值
D.当在程序的开头包含文件时,可以给指针变量赋NULL
15.以下正确的字符串常量是( )[2分]
A."\\\"
B.'abc'
Games
D.""
16.设有定义:
charp[]={’1’,’2’,’3’},*q=p;,以下不能计算出一个char型数据所占字节数的表达式是( )[2分]
(p)
(char)
(*q)
(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.若有定义语句:
inta[3][6];,按在内存中的存放顺序,a数组的第10个元素是( )[2分]
[0][4]
[1][3]
[0][3]
[1][4]
19.有以下程序
#include<>
voidfun(char**p)
{
++p;
printf("%s\n",*p);
}
intmain(void)
{
char*a[]={"Morning","Afternoon","Evening","Night"};
fun(a);
}
程序的运行结果是( )[2分]
D. orning
20.若有定义语句:
inta[2][3],*p[3];,则以下语句中正确的是( )[2分]
=a;
[0]=a;
[0]=&a[1][2];
D. p[1]=&a;
21.有以下程序
#include<>
int fun(chars[])
{
intn=0;
while(*s<=’9’&&*s>=’0’)
{
n=10*n+*s-’0’;
s++;
}
return(n);
}
intmain(void)
{
chars[10]={’6’,’1’,’*’,’4’,’*’,’9’,’*’,’0’,’*’};
printf("%d\n",fun(s));
}
程序运行的结果是( )[2分]
22.以下能正确定义一维数组的选项是( )[2分]
a[5]={0,1,2,3,4,5};
a[]={0,1,2,3,4,5};
a={’A’,’B’,’C’};
a[5]="0123";
23.以下叙述中正确的是( ) [2分]
A.预处理命令行必须位于源文件的开头
B.在源文件的一行上可以有多条预处理命令
C.宏名必须用大写字母表示
D.宏替换不占用程序的运行时间
24.若有以下说明和定义( )
uniondt
{
inta;
charb;
doublec;
}data;
以下叙述中错误的是[[2分]
的每个成员起始地址都相同
B.变量data所占的内存字节数与成员c所占字节数相等
C.程序段:
=5;printf("%f\n",;输出结果为
D. data可以作为函数的实参
25.以下语句或语句组中,能正确进行字符串赋值的是( ) [2分]
*sp;*sp="right!
";
s[10];s="right!
";
s[10];*s="right!
";
*sp="right!
";
二填空题
1.以下程序的功能是:
输出a、b、c三个变量中的最小值.请填空。
#include<>
int main(void)
{
inta,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.已有定义如下:
structnode
{
intdata;
structnode*next;
}*p;
以下语句调用malloc函数,使指针p指向一个具有structnode类型的动态存储空间。
p=(structnode*)malloc( );[每空4分]
4.表达式(int)((double)5/2+的值是:
[每空4分]
5.写出以下两段程序的执行结果。
如果程序无法编译,请指出出错部分并写明原因;如果程序陷入死循环,请回答“死循环”。
如果执行结果出现内存错误,请指出出错部分并写明原因。
int main(void)
{
chars[]="man";
inti;
for(i=0;s[i];i++)
printf("\n%c%c%c%c",s[i],*(s+i),*(i+s),i[s]);
return0;
}
int main(void)
{
char*cptr,c;
void*vptr,v;
c=10; v=0;
cptr=&c;
vptr=&v;
return0;
}
[每空2分]
6.对下面的代码进行解释:
typedef void (*lpFunction)(void);
lpFunction lpReset = (lpFunction)0xF000FFF0;
lpReset();
[4分]
7.
指出下面代码的不妥之处(不需要修改):
voidGetMemory(T_S8*p,T_S16nNum)
{
p=(T_S8*)malloc(sizeof(T_S8)*nNum);
}
voidTest(void)
{
T_S8*str=NULL;
GetMemory(str,100);
strcpy(str,"hello");
}
[每空4分]
函数的运行结果如何原因?
char*GetMemory(void)
{
charp[]="helloworld";
returnp;
}
voidTest(void)
{
char*str=NULL;
str=GetMemory();
printf("%s\n",str);
}
[每空4分]
函数的运行结果如何原因?
VoidGetMemory2(char**p,intnum)
{
*p=(char*)malloc(num);
}
voidTest(void)
{
char*str=NULL;
GetMemory(&str,100);
strcpy(str,"hello");
printf("%s\n",str);
}
[每空4分]
10. Test函数的运行结果如何原因?
voidTest(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============