高级C语言程序员测试.docx
《高级C语言程序员测试.docx》由会员分享,可在线阅读,更多相关《高级C语言程序员测试.docx(18页珍藏版)》请在冰点文库上搜索。
高级C语言程序员测试
高级C语言程序员测试
1.
#include
voidfun1()
{
staticjmp_bufbuf;
volatileintb;
b=3;
if(setjmp(buf)!
=0){
printf("%d\n",b);
return;
}
b=5;
longjmp(buf,1);
}
程序运行结果是:
A3,B5,C0,D以上都不对。
2.
voidfun2()
{
structnode{
inta;
intb;
intc;
};
structnodes={3,5,6};
structnode*pt=&s;
printf("%d\n",*(int*)pt);
}
程序运行结果是:
A3,B5,C6,D7。
3.
intfoo3(intx,inty)
{
intval;
val=1;
if(y>0){
if(n%2==1)val=val*x;
val=val*foo3(x*x,y/2);
}
returnval;
}
该函数功能:
Ax的y次方,
By的x次方,
Cx的2y次方,
D以上都不对。
4.
voidfun4()
{
inta[5]={1,2,3,4,5};
int*ptr=(int*)(&a+1);
printf("%d,%d\n",*(a+1),*(ptr-1));
}
程序运行结果是:
A2,2,B2,1,C2,5,D以上都不对。
5.
voidfun5()
{
voidfoo5(intb[][3]);
inta[3][3]={{1,2,3},{4,5,6},{7,8,9}};
foo5(a);
printf("%d\n",a[2][1]);
}
voidfoo5(intb[][3])
{
++b;
b[1][1]=9;
}
程序运行结果是:
A8,B9,C7,D以上都不对。
6.
voidfun6()
{
inta,b,c,d;
a=3;
b=5;
c=a,b;
d=(a,b);
printf("c=%d,",c);
printf("d=%d\n",d);
}
程序运行结果是:
Ac=3,d=3,Bc=5,d=3,Cc=3,d=5,Dc=5,d=5。
7.
voidfun7()
{
inta[][3]={1,2,3,4,5,6};
int(*ptr)[3]=a;
printf("%d,%d,",(*ptr)[1],(*ptr)[2]);
++ptr;
printf("%d,%d\n",(*ptr)[1],(*ptr)[2]);
}
程序运行结果是:
A2,3,5,6,B2,3,4,5,C4,5,0,0,D以上都不对。
8.
int*f1(void){
intx=10;
return(&x);
}
int*f2(void){
int*ptr;
*ptr=10;
returnptr;
}
int*f3(void){
int*ptr;
ptr=(int*)malloc(sizeof(int));
returnptr;
}
以上3个函数有可能出错的是
Af3,Bf1和f3,Cf1和f2,Df1,f2和f3。
9.
voidfun9()
{
inti=3;
intj;
j=sizeof(++i+++i);
printf("i=%d,j=%d",i,j);
}
程序运行结果是:
Ai=4,j=2,Bi=3,j=2,Ci=3,j=4,Di=3,j=6。
10.
voidfun10()
{
voidfoo101(int*,int);
voidfoo102(int*,int);
void(*p[2])(int*,int);
inta;
intb;
p[0]=foo101;
p[1]=foo102;
a=3;
b=5;
p[0](&a,b);
printf("%d\t,%d\t,",a,b);
p[1](&a,b);
printf("%d\t,%d\t\n",a,b);
}
voidfoo101(int*p,intq)
{
inttmp;
tmp=*p;
*p=q;
q=tmp;
}
voidfoo102(int*p,intq)
{
inttmp;
tmp=*p;
*p=q;
q=tmp;
}
程序运行结果是:
A5,5,5,5,B3,5,3,5,C5,3,5,3,D3,3,3,3。
11.
voidfun11()
{
voidfoo11(int);
inta=3;
foo11(a);
printf("\n");
}
voidfoo11(intn)
{
if(n>0){
foo11(--n);
printf("%d,",n);
foo11(--n);
}
}
程序运行结果是:
A0,1,2,0,B0,1,2,1,C1,2,0,1,D0,2,1,1。
12.
typedefint(*test)(float*,float*);
testtmp;
tmp类型是:
A包括两个浮点数指针的函数指针,
Bint,
C包括两个浮点数指针和返回整型的函数指针,
D函数。
13.
voidfun13()
{
intp;
intbuf[10]={1,2,3,4,5,6,9,8};
p=(buf+1)[5];
printf("%d\n",p);
}
程序运行结果是:
A5,B6,C9,D以上都不对。
14.
voidfun14()
{
voidfoo14(char**);
char*argv[]={"ab","cd","ef","gh","ij","kl"};
foo14(argv);
}
voidfoo14(char**p)
{
char*t;
t=(p+=sizeof(int))[-1];
printf("%s\n",t);
}
程序运行结果是:
Aab,Bcd,Cef,Dgh。
15.
voidfun15()
{
intfoo15(int,...);
intnum;
num=foo15(3,5,7);
printf("%d\n",num);
}
intfoo15(intn,...)
{
inti,j;
intk;
va_listp;
k=0;
j=1;
va_start(p,n);
for(;ji=va_arg(p,int);
for(;i;i&=i-1)++k;
}
returnk;
}
程序运行结果是:
A7,B6,C5,D3。
16.
voidfun16()
{
intfoo16(inti);
inti,j;
for(i=0;i<=5;i++)j=foo16(i);
printf("%d\n",j);
}
intfoo16(inti)
{
staticintcount=0;
count=count+i;
return(count);
}
程序运行结果是:
A10,B15,C6,D7。
以下是程序实验源代码:
#include
#include
#include
typedefint(*test)(float*,float*);
voidfun1(void);
voidfun2(void);
voidfun3(void);
voidfun4(void);
voidfun5(void);
voidfun6(void);
voidfun7(void);
voidfun8(void);
voidfun9(void);
voidfun10(void);
voidfun11(void);
voidfun12(void);
voidfun13(void);
voidfun14(void);
voidfun15(void);
voidfun16(void);
intmain(intargc,char*argv[])
{
printf("The1result:
");fun1();printf("\n");
printf("The2result:
");fun2();printf("\n");
printf("The3result:
");fun3();printf("\n");
printf("The4result:
");fun4();printf("\n");
printf("The5result:
");fun5();printf("\n");
printf("The6result:
");fun6();printf("\n");
printf("The7result:
");fun7();printf("\n");
printf("The8result:
");fun8();printf("\n");
printf("The9result:
");fun9();printf("\n");
printf("The10result:
");fun10();printf("\n");
printf("The11result:
");fun11();printf("\n");
printf("The12result:
");fun12();printf("\n");
printf("The13result:
");fun13();printf("\n");
printf("The14result:
");fun14();printf("\n");
printf("The15result:
");fun15();printf("\n");
printf("The16result:
");fun16();printf("\n");
printf("\n");
return0;
}
voidfun1()
{
staticjmp_bufbuf;
volatileintb;
b=3;
if(setjmp(buf)!
=0){
printf("%d\n",b);
return;
}
b=5;
longjmp(buf,1);
}
voidfun2()
{
structnode{
inta;
intb;
intc;
};
structnodes={3,5,6};
structnode*pt=&s;
printf("%d\n",*(int*)pt);
}
voidfun3()
{
intfoo3(intx,inty);
intx;
inty;
x=2;
printf("\n");
for(y=1;y<=5;y++){
printf("x=2;y=%d;rst=%3d\n",y,foo3(x,y));
}
}
intfoo3(intx,inty)
{
intval;
val=1;
if(y>0){
if(y%2==1)val=val*x;
val=val*foo3(x*x,y/2);
}
returnval;
}
voidfun4()
{
inta[5]={1,2,3,4,5};
int*ptr=(int*)(&a+1);
printf("%d,%d\n",*(a+1),*(ptr-1));
}
voidfun5()
{
voidfoo5(intb[][3]);
inta[3][3]={{1,2,3},{4,5,6},{7,8,9}};
foo5(a);
printf("%d\n",a[2][1]);
}
voidfoo5(intb[][3])
{
++b;
b[1][1]=9;
}
voidfun6()
{
inta,b,c,d;
a=3;
b=5;
c=a,b;
d=(a,b);
printf("c=%d,",c);
printf("d=%d\n",d);
}
voidfun7()
{
inta[][3]={1,2,3,4,5,6};
int(*ptr)[3]=a;
printf("%d,%d,",(*ptr)[1],(*ptr)[2]);
++ptr;
printf("%d,%d\n",(*ptr)[1],(*ptr)[2]);
}
voidfun8()
{
}
voidfun9()
{
inti=3;
intj;
j=sizeof(++i+++i);
printf("i=%d,j=%d\n",i,j);
}
voidfun10()
{
voidfoo101(int*,int);
voidfoo102(int*,int);
void(*p[2])(int*,int);
inta;
intb;
p[0]=foo101;
p[1]=foo102;
a=3;
b=5;
p[0](&a,b);
printf("%d\t,%d\t,",a,b);
p[1](&a,b);
printf("%d\t,%d\t\n",a,b);
}
voidfoo101(int*p,intq)
{
inttmp;
tmp=*p;
*p=q;
q=tmp;
}
voidfoo102(int*p,intq)
{
inttmp;
tmp=*p;
*p=q;
q=tmp;
}
voidfun11()
{
voidfoo11(int);
inta;
a=3;
foo11(a);
printf("\n");
}
voidfoo11(intn)
{
if(n>0){
foo11(--n);
printf("%d,",n);
foo11(--n);
}
}
voidfun12()
{
intfoo12(float*a,float*b);
testtemp;
floata;
floatb;
a=1.0;
b=2.0;
temp=foo12;
temp(&a,&b);
printf("%f,%f\n",a,b);
}
intfoo12(float*a,float*b)
{
floattmp;
tmp=*a;
*a=*b;
*b=tmp;
return1;
}
voidfun13()
{
intp;
intbuf[10]={1,2,3,4,5,6,9,8};
p=(buf+1)[5];
printf("%d\n",p);
}
voidfun14()
{
voidfoo14(char**);
char*argv[]={"ab","cd","ef","gh","ij","kl"};
foo14(argv);
}
voidfoo14(char**p)
{
char*t;
t=(p+=sizeof(int))[-1];
printf("%s\n",t);
}
voidfun15()
{
intfoo15(int,...);
intnum;
num=foo15(3,5,7);
printf("%d\n",num);
}
intfoo15(intn,...)
{
inti,j;
intk;
va_listp;
k=0;
j=1;
va_start(p,n);
for(;ji=va_arg(p,int);
for(;i;i&=i-1)++k;
}
returnk;
}
voidfun16()
{
intfoo16(inti);
inti,j;
for(i=0;i<=5;i++)j=foo16(i);
printf("%d\n",j);
}
intfoo16(inti)
{
staticintcount=0;
count=count+i;
return(count);
}
Linux下的运行结果:
The1result:
5
The2result:
3
The3result:
x=2;y=1;rst=2
x=2;y=2;rst=4
x=2;y=3;rst=8
x=2;y=4;rst=16
x=2;y=5;rst=32
The4result:
2,5
The5result:
9
The6result:
c=3,d=5
The7result:
2,3,5,6
The8result:
The9result:
i=3,j=4
The10result:
5,5,5,5
The11result:
0,1,2,0,
The12result:
2.000000,1.000000
The13result:
9
The14result:
gh
The15result:
5
The16result:
15