C语言期末考试试题及答案最新1.docx
《C语言期末考试试题及答案最新1.docx》由会员分享,可在线阅读,更多相关《C语言期末考试试题及答案最新1.docx(7页珍藏版)》请在冰豆网上搜索。
C语言期末考试试题及答案最新1
C语言期末考试试题及答案最新2012年
一、单项选择题
1.()是合法的用户自定义标识符。
A、b-bB、floatC、D、_isw
2.若变量已正确定义并赋值,表达式()不符合C语言语法。
A、a*b/c;B、3.14%2C、2,bD、a/b/c
3.()是不正确的字符常量。
A、'n'B、'1'C、"a"D、'101'
4.在C程序中,用()表示逻辑值“真”。
A、1B、非0的数C、非1的数D、大于0的数
5.()把x、y定义成float类型变量,并赋同一初值3.14。
A、floatx,y=3.14;B、floatx,y=2*3.14;
C、floatx=3.14,y=x=3.14;D、floatx=y=3.14;
6.若变量已正确定义,表达式()的值不是2。
A、2&3B、1<<1C、a==2D、1^3
7.若变量已正确定义,语句“if(a>b)k=0;elsek=1;”和()等价。
A、k=(a>b)?
1:
0;B、k=a>b;
C、k=a<=b;D、a<=b?
0:
1;
8.设变量定义为“inta,b;”,执行下列语句时,输入(),则a和b的值都是10。
scanf("a=%d,b=%d",&a,&b);
A、1010B、10,10C、a=10b=10D、a=10,b=10
9.下列程序的输出结果是()。
fun(inta,intb,intc)
{c=a*b;}
voidmain()
{intc;
fun(2,3,c);
printf(”%dn”,c);
}
A、0B、1C、6D、无法确定
10.在C程序中,若对函数类型未加说明,则函数的隐含类型为()。
A、intB、doubleC、voidD、char
11.表达式strlen(”hello”)的值是()。
A、4B、5C、6D、7
12.设变量定义为“inta[4];”,则表达式()不符合C语言语法。
A、*aB、a[0]C、aD、a++
13.设变量定义为“intx,*p=&x;”,则&*p相当于()。
A、pB、*pC、xD、*&x
14.若变量已正确定义,()不能使指针p成为空指针。
A、p=EOFB、p=0C、p=’’D、p=NULL
15.对于以下的变量定义,表达式()不符合C语言语法。
structnode{
intlen;
char*pk;
}x={2,"right"},*p=&x;
A、p->pkB、*p.pkC、*p->pkD、*x.pk
16.有如下程序
intrunc(inta,intb)
{return(a+b);}
main0
{intx=2,y=5,z=8,r;
r=func(func(x,y),z);
printf(“%\d\n”,r);
}
该程序的输出的结果是()
A)12B)13C)14D)15
17.对于基类型相同的两个指针变量之间,不能进行的运算是()
A)
18.有如下程序
longfib(intn)
{if(n>2)return(fib(n-1)+fib(n-2));
elsereturn
(2);
}
main0
{printf(“%d\n”,fib(3));
该程序的输出结果是()
A}2B}4C}6D}8
19.有如下定义
structperson{charname[9];intage;};
strictpersonclass[10]={“Johu”,17,
“Paul”,19
“Mary”,18,
“Adam16,};
根据上述定义,能输出字母M的语句是()
A)prinft(“%c\n”,class[3].mane); B)pfintf(“%c\n”,class[3].name[1]);
C)prinft(“%c\n”,class[2].name[1]); D)printf(“%^c\n”,class[2].name
[0]);
20.以下所列的C语言常量中,错误的是()
A)0xFFB)1.2e0.5C)2LD)‘\72’
21.有以下程序段
intk=0
while(k=1)k++;
while循环执行的次数是()
A)无限次B)有语法错,不能执行 C)一次也不执行D)执行1次
22.以下程序的输出结果是()
fun(intx,inty,intz)
{z=x*x+y*y;}
main()
{inta=31;
fun(5,2,a);
printf(“%d”,a);
}
A)0B)29C)31D)无定值
23.下列程序段的输出结果是()
voidfun(int*x,int*y)
{printf(“%d%d”,*x,*y);*x=3;*y=4;}
main()
{intx=1,y=2;
fun(&y,&x);
printf(“%d%d”,x,y);
}
A)2143B)1212C)1234D)2112
24.当调用函数时,实参是一个数组名,则向函数传送的是()
A)数组的长度B)数组的首地址C)数组每一个元素的地址D)数组每个元素中的值
25.以下程序的输出结果是()
longfun(intn)
{longs;
if(n==1||n==2)s=2;
elses=n-fun(n-1);
returns;
}
main()
{printf(“%ld\n”,fun(3));}
A)1B)2C)3D)4
26.以下程序的输出结果是()
#defineSQR(X)X*X
main()
{inta=16,k=2,m=1;
a/=SQR(k+m)/SQR(k+m);
printf(“d\n”,a);
}
A)16B)2C)9D)1
27.以下函数返回a所指数组中最小的值所在的下标值,在下划线处应填入的是()
fun(int*a,intn)
{inti,j=0,p;
p=j;
for(i=j;iif(a[i]return(p);
}
A)i=pB)a[p]=a[i]C)p=jD)p=i
二、填空题
1.表示“x≥y≥z”的C表达式是_______。
2.下列程序段的输出是______。
printf("%on",010<<1^1);
3.下列程序段的输出是______。
intk;
floats;
for(k=0,s=0;k<7;k++)
s+=k/2;
printf("%d,%fn",k,s);
4.下列程序段的输出是_______。
#definef(a,b,x)a*x+b
printf("%d,%dn",f(3,2,1),f(6,5,f(3,2,1)));
5.下列程序段的输出是_____。
main()
{intk;
for(k=1;k<5;k++){
if(k%2)printf("*");
elsecontinue;
printf("#");
}
}
6.下列程序段的输出是_____。
#include
intf(intx)
{staticy=1;
y++;
x+=y;
returnx;
}
voidmain()
{intk;
k=f(3);
printf("%d%dn",k,f(k));
}
7.下列程序段的输出是_____。
int*p,*q,k=5,j=6;
q=&k;p=q;q=&j;
printf("%d",*p);
8.函数
voidf(chars[],chart[])
{intk=0;
while(s[k]=t[k])k++;
}
等价于
voidf(char*s,char*t)
{while(_____);
}
9.下列程序段的输出是_____。
char*a[2]={"one","two"},**p=a;
printf("%s,",*(p++)+1);
printf("%cn",**p-1);
10.下列程序编译后生成t.exe,运行tinputoutputzoooil的输出结果是
_____。
voidmain(intargc,char*argv[])
{intk;
char*p=argv[1];
for(k=2;kif(strcmp(argv[k],p)>0)p=argv[k];
printf("%sn",p);
}
11.下列程序调用swap函数交换a和b的值,并输出交换后的a和b的值。
程序的输出结
果是:
。
voidmain()
{inta=3,b=5;
swap(&a,&b);
printf("Afterswap%d,%d",a,b);
}
swap(int*p,int*q)
{intt;
t=*p;;
*p=*q;
*q=t;
}
1D2B3C4B5C6C7C8D9D10A11B12D13A14A15D16D17C18B
19D20B21A22C23A24B25A26B27D
①x>=y&&y>=z②1③6,90④5,25⑤*#*#⑥58⑦5⑧*s+
+=*t++⑨ne,s⑩zoo⑪Afterswap5,3