C语言期末考试复习试题.docx
《C语言期末考试复习试题.docx》由会员分享,可在线阅读,更多相关《C语言期末考试复习试题.docx(29页珍藏版)》请在冰豆网上搜索。
C语言期末考试复习试题
单选题
[1]、C语言中运算对象必须是整型的运算符是()。
【答 案】C
【分 数】1分
【选 项】
A、/
B、++
C、%
D、!
=
[2]、假设所有变量均为整型,则执行运算x=(a=2,b=5,b++,a+b)后,x的值是()。
【答 案】B
【分 数】1分
【选 项】
A、7
B、8
C、6
D、2
[3]、在下列字符序列中,属于C语言合法标识符的是()。
【答 案】B
【分 数】1分
【选 项】
A、P12.a
B、stud_100
C、$water.1
D、88sum
[4]、在下列语句选项中,只有一个在功能上与其他三个语句不等价(其中s1和s2表示某个C语句),这个不等价的语句是()。
【答 案】D
【分 数】1分
【选 项】
A、if(a) s1;else s2;
B、if(!
a)s2;else s1;
C、if(a!
=0) s1;else s2;
D、if(a==0) s1;else s2;
[5]、若二维数组定义为a[m][n],则在a[i][j]之前的元素个数为()。
【答 案】B
【分 数】1分
【选 项】
A、j*m+i
B、i*m+j
C、i*m+j-1
D、j*m+i-1
[6]、以下程序的运行结果是()。
voidfun(int*n)
{
staticintm=2;
*n*=m-1;m+=2;
}
voidmain()
{
staticintm=1;
inti;
for(i=1;i<4;i++)
fun(&m);
printf("%d\n",m);
}
【答 案】D
【分 数】1分
【选 项】
A、8
B、10
C、11
D、15
[7]、设有定义:
#defineSTR"12345";,则以下叙述正确的是()。
【答 案】C
【分 数】1分
【选 项】
A、宏名STR代替的是数值常量12345
B、宏定义以分号结束,编译时会产生错误信息
C、宏名STR代替的是字符串"12345"
D、宏名STR代替的是字符串常量"12345"
[8]、下列叙述不正确的是()。
【答 案】B
【分 数】1分
【选 项】
A、用typedef可以定义各种类型名,但不能用来定义变量
B、typedef和#define都是在预编译时处理的
C、用typedef只是将已存在的类型用一个新的标识符来代表
D、使用typedef有利于程序的通用和移植
[9]、若变量定义时未初始化,则其值不确定的是()。
【答 案】C
【分 数】1分
【选 项】
A、静态全局变量
B、静态局部变量
C、局部变量
D、全局变量
[10]、以下程序关于sizeof()的运行结果是()。
voidmain()
{
chara[]="movie",b[10]="movie";
printf("%d%d\n",sizeof(a),sizeof(b));
}
【答 案】C
【分 数】1分
【选 项】
A、55
B、66
C、610
D、其他输出
[11]、若要用fopen函数打开一个二进制文件,该文件要既能读也能写,当文件不存在时新建文件,则文件打开方式应是()。
【答 案】C
【分 数】1分
【选 项】
A、"ab+"
B、"rb+"
C、"wb+"
D、"ab"
[12]、设charch,str[4],*strp;,则下列赋值语句正确的是()。
【答 案】C
【分 数】1分
【选 项】
A、ch="CBA";
B、str="CBA";
C、strp="CBA";
D、*strp="CBA";
[13]、有以下函数:
char*fun(char*p){returnp;},该函数的返回值为()。
【答 案】B
【分 数】1分
【选 项】
A、不确定值
B、参数p中存放的地址值
C、一个临时存储单元的地址值
D、形参p自身的地址值
[14]、若有定义:
constinti=10,j=20;int*constpi=(int*)&i;,则下列操作正确的为()。
【答 案】A
【分 数】1分
【选 项】
A、*pi=0;
B、pi=&j;
C、i=10;pi=&j;
D、j=*pi;
[15]、有如下定义:
structs1
{
chara[3];
int num;
}t={’a’,’b’,’x’,4},*p;
p=&t;
则下列语句输出结果为x的是()。
【答 案】A
【分 数】1分
【选 项】
A、printf("%c\n",p->t.a[2]);
B、printf("%c\n",(*p).a[2]);
C、printf("%c\n",p->a[3]);
D、printf("%c\n",(*p).t.a[2]);
[16]、以下程序将输出的字符是()。
#include"stdio.h"
main()
{
charc;
char(*p)[3];
chars[2][3]={’a’,’b’,’c’,’d’,’e’,’f’};
p=&s[0];
c=*(p[1]+1);
printf("%c",c);
}
【答 案】C
【分 数】1分
【选 项】
A、b
B、d
C、e
D、f
[17]、以下关于枚举的程序,其运行结果是()。
#include"stdio.h"
main()
{
enumweekday
{sun,mon,tue=5,wed,thu,fri,sat}a,b,c,d;
a=sun;
b=mon;
c=tue;
d=wed;
printf("%d%d%d%d\n",a,b,c,d);
}
【答 案】C
【分 数】1分
【选 项】
A、 0050
B、 1254
C、 0156
D、 0153
[18]、设有程序段chark;while(k>0)k++;printf("%d\n",k);则程序输出结果为()。
【答 案】C
【分 数】1分
【选 项】
A、-127
B、256
C、-128
D、128
[19]、函数调用语句:
fseek(fp,-20L,2);的含义是()。
【答 案】C
【分 数】1分
【选 项】
A、将文件位置指针移到距离文件头20个字节处
B、将文件位置指针从当前位置向后移动20个字节
C、将文件位置指针从文件末尾处后退20个字节
D、将文件位置指针移到距离当前位置20个字节处
[20]、以下程序的输出结果为()。
inta=2;
intf(int*a)
{
return(*a)++;
}
voidmain()
{
ints=0;
{inta=5;
s+=f(&a);
}
s+=f(&a);
printf("%d%d\n",a,s);
}
【答 案】C
【分 数】1分
【选 项】
A、27
B、210
C、37
D、311
[21]、以下程序输出的字符序列是()。
#include"stdio.h"
main(){
chara[]="language",*p;
p=a;
while(*p!
=’u’){printf("%c",*p-’u’+’U’);p++;}
}
【答 案】C
【分 数】1分
【选 项】
A、LANGUAGE
B、language
C、LANG
D、LANGuage
[22]、以下程序的输出结果是()。
#include
intmain()
{
charstr[100]="ABCDEFG",*p=str;
inti;
for(i=0;*p!
=’\0’;p++,i++);
printf("%d\n",i);
return0;
}
【答 案】A
【分 数】1分
【选 项】
A、7
B、8
C、99
D、100
[23]、字符串"a\x44\\\nbcd\102a"的长度是()。
【答 案】C
【分 数】1分
【选 项】
A、12
B、17
C、9
D、11
[24]、以下程序的输出结果是( )。
main()
{intn;
(n=6*4,n+6),n*2;
printf("n=%d\n",n);
}
【答 案】B
【分 数】1分
【选 项】
A、30
B、24
C、60
D、48
[25]、以下程序的输出结果是()。
main()
{intw=4,x=3,y=2,z=1;
if(x>y&&!
(z==w))printf("%d\n",(ww:
zz:
x));
elseprintf("%d\n",(w>x?
w:
z>y?
z:
x));
}
【答 案】A
【分 数】1分
【选 项】
A、1
B、2
C、3
D、4
[26]、以下程序的输出结果是()。
main()
{inta=1,b=0;
switch(a)
{case1:
switch(b)
{case0:
printf("**0**");break;
case1:
printf("**1**");break;
}
case2:
printf("**2**");break;
}
}
【答 案】B
【分 数】1分
【选 项】
A、**0**
B、**0****2**
C、**0****1****2**
D、有语法错误
[27]、以下是求两个正整数的最大公约数的函数fun(),下划线处应填入的正确语句为()。
intfun(m,n)
intm,n;
{intr;
if(m if(n==0)return(m);
do{r=m%n;
if(r!
=0){m=n;n=r;}
}while(______);
return(n);
}
【答 案】A
【分 数】1分
【选 项】
A、r!
=0
B、r==0
C、n!
=0
D、n==0
[28]、以下程序的输出结果是()。
main()
{inta=0,j;
for(j=0;j<4;j++)
{switch(j)
{case0:
case3:
a+=2;
case1:
case2:
a+=3;
default:
a+=5;
}
}
printf("%d\n",a);
}
【答 案】D
【分 数】1分
【选 项】
A、20
B、13
C、10
D、36
[29]、以下程序功能为输入1个正整数n,计算并输出s的前n项的和:
s=1/2-2/3+3/4-4/5+……(-1)
n/(n+1),下划线处应填入的正确语句为( )。
#include"stdio.h"
voidmain()
{ intk,flag=1,n;
floats=0;
scanf("%d",&n);
for(k=1;k<=n;k++){
s=s+______;
flag=-flag;
}
printf("sum=%f\n",s);
}
【答 案】A
【分 数】1分
【选 项】
A、1.0*k/(k+1)*flag
B、flag*n/(n+1)
C、-k/(k+1)
D、1.0*k/(k+1)
[30]、以下程序的输出结果是()。
main()
{ inti,j,x=0;
for(i=0;i<2;i++)
{ x++;
for(j=0;j<3;j++)
{ if(j%2) continue;
x++;}
x++; }
printf("x=%d\n",x);}
【答 案】B
【分 数】1分
【选 项】
A、x=4
B、x=8
C、x=6
D、x=12
[31]、以下程序的输出结果是()。
main()
{charch[2][5]={"6937","8254"},*p[2];
inti,j,s=0;
for(i=0;i<2;i++) p[i]=ch[i];
for(i=0;i<2;i++)
for(j=0;p[i][j]>’\0’;j+=2)
s=10*s+p[i][j]-’0’;
printf("%d\n",s);
}
【答 案】C
【分 数】1分
【选 项】
A、69825
B、63825
C、6385
D、693825
[32]、下列程序片段的输出结果是()。
printf("%d\n",strlen("ATS\n0l2\2\\"));
【答 案】C
【分 数】1分
【选 项】
A、l1
B、10
C、9
D、8
[33]、在C程序中有如下语句:
char*func(intx,inty);它是()。
【答 案】C
【分 数】1分
【选 项】
A、对函数func的定义
B、对函数func的调用
C、对函数func的原型说明
D、不合法的
[34]、下列程序运行后的输出结果是()。
fun(inta,intb)
{if(a>b)return(a);
elsereturn(b);
}
main()
{intx=3,y=8,z=6,r;
r=fun(fun(x,y),2*z);
printf("%d\n",r);
}
【答 案】D
【分 数】1分
【选 项】
A、3
B、6
C、8
D、12
[35]、有如下程序,该程序的输出结果是()。
longf(intn)
{if(n>2) return(f(n-2)+f(n-3));
else
if(n==2) return
(2);
else return
(1);}
main()
{printf("%d\n",f(5));}
【答 案】C
【分 数】1分
【选 项】
A、2
B、3
C、4
D、5
[36]、在C语言中,函数的隐含存储类别是()。
【答 案】C
【分 数】1分
【选 项】
A、auto
B、static
C、extern
D、无存储类别
[37]、以下程序的运行结果是()。
#include"stdio.h"
main()
{
inta[]={1,2,3,4,5,6,7,8,9,10,11,12};
int*p=a+5,*q=NULL;
q=p+5;
printf("%d%d\n",*p,*q);
}
【答 案】B
【分 数】1分
【选 项】
A、运行后报错
B、611
C、612
D、55
[38]、以下选项中,能定义s为合法的结构体变量的是()。
【答 案】B
【分 数】1分
【选 项】
A、typedefstructabc
{doublea;
charb[10];
}s;
B、structabc
{doublea;
charb[10];
}s;
C、structABC
{doublea;
charb[10];
}
ABCs;
D、typedefABC
{doublea;
charb[10];
}
ABCs;
[39]、以下程序运行后的输出结果是()。
#include
structNODE
{intnum;structNODE*next;};
main()
{
structNODE*p,*q,*r;
p=(structNODE*)malloc(sizeof(structNODE));
q=(structNODE*)malloc(sizeof(structNODE));
r=(structNODE*)malloc(sizeof(structNODE));
p->num=10;q->num=20;r->num=30;
p->next=q;q->next=r;
printf("%d\n",p->num+q->next->num);
}
【答 案】D
【分 数】1分
【选 项】
A、10
B、20
C、30
D、40
[40]、下列程序的输出结果是()。
structstudent
{inta,b,c;};
main()
{structstudentstu[2]={{2,3,4},{5,6,7}};intt;
t=stu[0].a+stu[1].b%stu[0].c;
printf("%d\n",t);}
【答 案】C
【分 数】1分
【选 项】
A、0
B、1
C、4
D、5
[41]、若a是整型变量,表达式~(a^~a)等价于()。
【答 案】C
【分 数】1分
【选 项】
A、~a
B、1
C、0
D、2
[42]、若以下程序所生成的可执行文件名为filel.exe,当输入命令行:
FILE1CHINABEIJINGSHANGHAI,执行该程序时,程序的输出结果是()。
main(intargc,char*argv[])
{while(argc-->1)
{++argv;printf("%s ",*argv);}
}
【答 案】A
【分 数】1分
【选 项】
A、CHINABEIJINGSHANGHAI
B、FILE1 CHINA BEIJING
C、C B S
D、F C B
[43]、下列选项中属于不正确的赋值语句的是()。
【答 案】D
【分 数】1分
【选 项】
A、t--;
B、k=i==j;
C、t1=t2=t3=3;
D、t1=1,t2=2;
[44]、若有定义:
inta,b;charx,y;并有以下输入数据:
12 13AaBb(回车)
则能给a赋整数12,给b赋整数13,给x赋字符a,给y赋字符b的正确程序段是()。
【答 案】D
【分 数】1分
【选 项】
A、scanf(“%d”,&a);
scanf(“%d”,&b);
x=getchar();y=getchar();
B、scanf(“%d%d %c %c”,&a,&b,&x,&y);
C、scanf(“%d%d %c %c”,&a,&b,&x,&x,&y,&y);
D、scanf(“%d%d%c%c%c%c”,&a,&b,&x,&x,&y,&y);
[45]、在PC16位机环境下,以下程序的运行结果是()。
main()
{unsignedinta;
intb=-2;
a=b;
printf(“%u”,a);}
【答 案】B
【分 数】1分
【选 项】
A、-2
B、65534
C、32768
D、-32768
[46]、语句printf(“%d\n”,strlen(“xyz\t\xab\3\\”));的输出结果是()。
【答 案】C
【分 数】1分
【选 项】
A、9
B、11
C、7
D、8
[47]、语句:
printf(“%d”,!
0);的输出结果是()。
【答 案】A
【分 数】1分
【选 项】
A、1
B、0
C、有语法错误,不能执行
D、!
0
[48]、当a=2,b=3,c=4,d=5时,执行下面一段程序后x的值为()。
if(a
if(c>d)x=1;
else
if(a>c)
if(b else x=3;
else x=4;
else x=5;
【答 案】C
【分 数】1分
【选 项】
A、2
B、3
C、4
D、5
[49]、若x是int型变量,且有下面的程序片段:
for(x=5;x<8;x++)
printf((x/2)?
(“**%d”):
(“##%d”),x);
该程序片段的输出结果是()。
【答 案】A
【分 数】1分
【选 项】
A、**5**6**7
B、##5**6##7**8
C、**5##6**7
D、**5##6**7##8
[50]、有以下程序段:
inta=0,b;
do{scanf(“%d”,&a);b++;}while(a!
=10||b<3);
此处do-while循环的结束条件是()。
【答 案】B
【分 数】1分
【选 项】
A、a的值等于10并且b的值大于3
B、a的值等于10并且b的值大于等于3
C、a的值不等于10或者b的值小于3
D、a的值不等于10并且b的值大于等于3
[51]、在下述程序中,if(i>j)语句共执行的次数是()。
main()
{inti=0,j=14,k=2,s=0;
for(;;)
{i+=k;
if(i>j)
{printf(“%d”,s);
break;
}