C语言期末复习资料重要.docx
《C语言期末复习资料重要.docx》由会员分享,可在线阅读,更多相关《C语言期末复习资料重要.docx(53页珍藏版)》请在冰点文库上搜索。
C语言期末复习资料重要
(注:
本文档参考答案中“↙”代表回车换行,“□”代表空格,程序代码中省略了#include)
注意函数这一章节太多不懂的了和文件太多概念不懂
一、基础知识和顺序结构
(一)选择题
1.以下不正确的C语言标识符是
A.ABC
B.abc
C.a_bc
D.ab.c
2.以下正确的C语言标识符是
A.%x
B.a+b
C.a123
D.test!
3.一个C语言程序的执行是从。
A.main()函数开始,直到main()函数结束
B.第一个函数开始,直到最后一个函数结束
C.第一个语句开始,直到最后一个语句结束
D.main()函数开始,直到最后一函数结束
4.在C语言程序中,main函数的位置。
A.必须作为第一个函数
B.必须作为最后一个函数
C.任意
D.必须放在它所调用的函数之后
5.一个C语言程序是由。
A.一个主程序和若干个子程序组成
B.一个或多个函数组成
C.若干过程组成
D.若干子程序组成
6.下列四个叙述中,错误的是_______________。
A.一个C源程序必须有且只能有一个主函数
B.一个C源程序可以含零个或多个子函数
C.在C源程序中注释说明必须位于语句之后
D.C源程序的基本结构是函数
7.编辑程序的功能是。
A.建立并修改程序
B.将C源程序编译成目标程序
C.调试程序
D.命令计算机执行指定的操作
8.C编译程序是。
A.C语言程序的机器语言版本
B.一组机器语言指令
C.将C源程序编译成目标程序的程序
D.由制造厂家提供的一套应用软件
9.以下叙述不正确的是____________。
A.分号是C语句的必要组成部分
B.C程序的注释可以写在语句的后面
C.函数是C程序的基本单位
D.主函数的名字不一定用main表示
10.C语言中允许的基本数据类型包括_______。
A.整型、实型、逻辑型
B.整型、实型、字符型
C.整型、字符型、逻辑型
D.整型、实型、逻辑型、字符型
11.C语言中能用八进制表示的数据类型为________。
A.字符型、整型
B.整形、实型
C.字符型、实型、双精度型
D.字符型、整型、实型、双精度型
12.下列属于C语言合法的字符常数是___________。
A.’\97’
B.”A”
C.’\t’
D.”\0”
13.设所有变量均为int型,则表达式(a=2,b=5,b++,a+b)的值是
A.7
B.8
C.6
D.2
14.在C语言中,要求运算数必须是整型的运算符是:
A./
B.++
C.!
=
D.%
15.设C语言中,一个int型数据在内存中占2个字节,则unsignedint型数据的取值范围为
A.0-255
B.1-32767
C.0-65535
D.0-2147483647
16.下面不正确的字符串常量是:
A.'abc'
B."12'12"
C."0"
D.""
17.表达式18/4*sqrt(4.0)/8值的数据类型是:
A.int
B.float
C.double
D.不确定
18.若有以下定义:
chara;intb;
floatc;doubled;
则表达式a*b+d-c值的类型为:
A.float
B.int
C.char
D.Double
19.不属于字符型常量的是
A.'A'
B."B"
C.'\n'
D.'\x72'
20.在C语言中,合法的长整型常数是____________。
A.0L
B.4962710
C.0412765?
为什么不行
D.0xa34b7fe
21.若有以下定义语句charc1=’b’,c2=’e’;printf(“%d,%c\n”,c2-c1,c2-‘a’+’A’);则输出结果是__________。
A.2,M
B.3,E大小写转化
C.2,E
D.输出项与相应的格式控制不一致,输出结果不确定
22.设charch;以下正确的赋值语句是:
A.ch='123';一个字符
B.ch='\xff';
C.ch='\08';不会有8
D.ch="\";
23.若t为double类型,表达式t=1,t+5,t++的值是
A.1
B.6.0
C.2.0
D.1.0
24.设整型变量m,n,a,b,c,d均为1,执行“(m=a>b)&&(n=a>b)”后m,n的值是
A.0,0
B.0,1
C.1,0执行0后就不执行了
D.1,1
25.若a=1,b=2,c=3,d=4,则条件表达式a
a:
ac:
d的值为
A.1
B.2
C.3
D.4
26.设a=2,则执行b=a==!
a;语句后,b的结果是
A.0非真及假
B.1
C.2
D.3
27.设有以下语句,则c的二进制值是
chara=3,b=6,c;解:
a=00000011,b=00000110
c=a^b<<2;a^b=00000101c=00010100
A.00011011
B.00010100位移或再换位移两位
C.00011100
a)00011000
28.设x和y均为int型变量,则以下语句:
x+=y;y=x-y;x-=y;的功能是D
A.把x和y按从大到小排列
B.把x和y按从小到大排列
C.无确定结果
D.交换x和y中的值
(二)填空题
1.C语言中的标识符只能由三种字符组成,它们是字母 、数字、下划线。
2.一个C语言程序有且仅有一个_main_函数。
3.结构化设计中的三种基本结构是顺序,分支,循环。
4.C语言程序的执行是从__main函数__开始执行的。
5.C语言源程序文件后缀是_c或cpp_,经编译后生成文件的后缀是_obj__。
经链接后生成文件的后缀是_exe__。
6.C语言源程序的语句分隔符是__;__。
7.若a是int型变量,且a的初值为6,则执行下面表达式后a的值为-60。
a+=a-=a*a解:
a=a-36=-30a=a+(-30)注意分步
8.‘\72’在内存中占1个字节,”\72”在内存中占2个字节。
字符和字符串的区别
9.若有以下定义语句:
inta=5;printf(“%d\n”,a++);则输出结果是___5__。
后自加
10.C语言中的基本数据类型分为整型、实型和字符型。
11.C语言的实型可分为float型和double型。
12.若有以下定义语句:
intu=010,v=0x10,w=10;printf(“%d,%d,%d\n”,u,v,w);则输出结果是_8,16,10_。
区分各个进制
13.下面程序的输出是_k=11,k=13,k=b__。
main()
{intk=11;
printf("k=%d,k=%o,k=%x\n",k,k,k);}
14.若有以下定义语句:
inta=5;printf(“%d\n”,a++);则输出结果是_____5_____。
15.设x为int型变量,执行以下语句,x=10;x+=x-=x-x;x的值为__20___。
16.若有定义inta=10,b=9,c=8;接着顺序执行下列语句后,变量b的值为___3____。
c=(a-=b-5);
c=(a%11)+(b=3);
17.设有以下定义,并以赋予了确定的值:
charw;intx;floaty;doublez;则表达式w*x+z-y所求得值的数据类型为___double_____。
18.设x和y均为int型变量,且x=10和y=3则以下语句的输出结果是__10,2_______。
Printf(“%d,%d\n”,x++,--y);注意格式
19.下列程序的输出结果是__2,1___。
main()
{inta=1,b=2;
a+=b;b=a-b;a-=b;
printf(“%d,%d\n”,a,b);}
20.以下程序执行结果是:
2,1
main()
{inta,b,d=241;
a=d/100%9;
b=(-1)&&(-1);
printf("%d,%d\n",a,b);}
21.以下程序执行结果是:
3.14159,3.1416,3.142
main()
{floatf=3.1415927;
printf("%5f,%5.4f,%3.3f",f,f,f);}
22.以下程序输入123↙后的执行结果是:
a=1,b=2,c=3
main()
{inta,c;
charb;
scanf("%d%c%d",&a,&b,&c);
printf("a=%d,b=%c,c=%d\n",a,b,c);}
23.以下程序输入123456后的执行结果是:
a=12,b=345
main()
{inta,b;
scanf("%2d%3d",&a,&b);
printf("a=%d,b=%d\n",a,b);}
24.以下程序输入ABC后的执行结果是:
c=A
main()
{charc;
scanf("%3c",&c);
printf("c=%c\n",c);}
二、分支结构
(一)选择题
1.选择合法的条件语句(设intx,a,b,c;)()。
A.if(a=b)++x;
B.if(a=
C.if(a<>b)++x;
D.if(a>=b)++x;?
2.执行下列程序,输入为1的输出结果是(A),输入为4的输出结果是(C),输入为3的输出结果是(D)。
main()
{intk;
scanf("%d",&k);
switch(k)
{case1:
printf("%d\n",k++);
case2:
printf("%d\n",k++);
break;
case3:
printf("%d\n",k++);
break;
case4:
printf("%d\n",k++);
case5:
printf("%d\n",k++);
break;
default:
printf("Full!
\n");}}
A.1↙2
B.1
C.4↙5
D.3
(二)填空题
1.下列程序运行后输出结果是__end___。
main()
{inta,b,c;
a=2;b=3;c=1;
if(a>b)
if(a>c)
printf("%d\n",a);
else
printf("%d\n",b);
printf("end\n");}
2.以下程序执行结果是__d=1_____。
main()
{inta,b,c,d,x;
a=b=c=0;
d=1;
if(a)d=d-10;
elseif(!
b)
if(!
c)x=6;
elsex=7;
printf("d=%d\n",d);}
3.若从键盘输入m,下列程序执行结果是___M____。
main()
{charc;
printf("Enteracharacter:
");
scanf("%c",&c);
if('a'<=c&&c<='z')
c=c-32;
printf("%c\n",c);}
4.若上题中,从键盘输入B,程序执行结果是___B____。
5.若从键盘输入7,10,1,3,则下列程序执行结果是a=7,b=10,c=1,d=3↙
13710。
main()
{inta,b,c,d,t;
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
printf("\n\na=%d,b=%d,c=%d,d=%d\n",a,b,c,d);
if(a>b)
{t=a;a=b;b=t;}
if(a>c)
{t=a;a=c;c=t;}
if(a>d)
{t=a;a=d;d=t;}
if(b>c)
{t=b;b=c;c=t;}
if(b>d)
{t=b;b=d;d=t;}
if(c>d)
{t=c;c=d;d=t;}
printf("\n%d%d%d%d\n",a,b,c,d);}按从大到小的顺序排列
6.以下程序的执行结果是__first↙third_。
main()
{intx=1,y=0;
switch(x)
{case1:
switch(y)
{case0:
printf("first\n");break;
case1:
printf("second\n");break;}
case2:
printf("third\n");}}
7.执行以下程序,输入-10的结果是__x=0_,输入5的结果是_x=5_,输入10的结果是_x=10__,输入30的结果是__x=5_。
main()
{inta,b;
floatx;
scanf("%d",&a);
if(a<0)b=-1;
elseb=a/10;
switch(b)
{case-1:
x=0;break;
case0:
x=a;break;
case1:
x=10;break;
case2:
case3:
x=-0.5*a+20;break;
default:
x=-2;}
if(x!
=-2)printf("x=%g\n",x);
elseprintf("error!
\n");}
三、循环结构
(一)选择题
1.若i,j已定义为int型,则以下程序段中内循环体的执行次数是()。
for(i=5;i;i--)
for(j=0;j<4;j++){……}
A.20
B.24
C.25
D.30
2.若i,j已定义为int型,则以下for循环是()。
for(i=0,j=0;(j!
=123)&&(i<4);i++);
A.无限循环
B.循环次数不定
C.执行4次0123且
D.执行3次
3.对于for(表达式1;;表达式3)可以理解为()。
A.for(表达式1;0;表达式3)
B.for(表达式1;1;表达式3)
C.for(表达式1;表达式1;表达式3)
D.for(表达式1;表达式3;表达式3)
4.执行下列程序段后,x值是(A),i值是(C)。
inti,x;
for(i=1,x=1;i<=20;i++)
{if(x>=10)
break;
if(x%2==1)
{
x+=5;
continue;
}
x-=3;
}
A.10X=13579再跳出循环+1=10
B.7
C.6I=123456
D.14
5.下列程序的执行结果是()。
#include
main()
{ints=0,k;
for(k=7;k>=0;k--)
{switch(k)
{case1:
case4:
case7:
s++;
break;
case2:
case3:
case6:
break;
case0:
case5:
s+=2;
break;}}
printf("s=%d\n",s);}
A.s=4
B.s=7
C.s=3
D.s=5
6.下列程序段执行结果是输出()。
x=3;
do
{
printf("%2d",x--);
}while(!
x);
A.0
B.3
C.321
D.210
(二)填空题
1.C语言while和do…while循环的主要区别是前者先判后做,后者先做后判。
2.以下程序输出结果是1↙2↙3。
main()
{intnum=0;
while(num<=2)
{num++;
printf("%d\n",num);}}
3.下列程序运行输出结果是1
22
333
4444
55555
666666
main()
{inti,j,k;
for(i=1;i<=6;i++)
{for(j=1;j<=20-2*i;j++)
printf("");
for(k=1;k<=i;k++)
printf("%4d",i);
printf("\n");}}
4.下列程序执行结果是237↙273。
main()
{inti=2,j,k;
for(j=0;j<=9;j++)
for(k=0;k<=9;k++)
if(i*j*k==42&&i+j+k==12)
printf("%d%d%d\n",i,j,k);}
5.下列程序执行时,若从键盘输入124cmknp03↙,结果是d=5s=1a=5。
main()
{charc;
intd,s,a;
d=s=a=0;
c=getchar();
while(c!
='\n')
{if(c<='9'&&c>='0')
d=d+1;
if(c=='')
s=s+1;
if(c<='z'&&c>='a'||c<='Z'&&c>='A')
a=a+1;
c=getchar();}
printf("d=%ds=%da=%d\n",d,s,a);}
6.下列程序执行结果是72。
main()
{inti,j,k,s=0;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
for(k=0;k<2;k++)
s=s+i+j+k;
printf("%d\n",s);}
7.下列程序执行结果是01↙24↙69↙1216↙1719↙2124↙2731↙3540↙4245↙4852↙5661↙6672(↙代表回车换行)。
main()
{inti,j,k,s=0;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
{for(k=0;k<2;k++)
{s=s+i+j+k;
printf("%d",s);}
printf("\n");}}
8.下列程序执行结果是*
**
***。
main()
{inti;
charj='*';
for(i=1;i<4;i++)
switch(i)
{case1:
printf("%c\n",j);
break;
case2:
printf("%c%c\n",j,j);
break;
case3:
printf("%c%c%c\n",j,j,j);
break;}}
9.执行下列程序,若由键盘输入4,程序执行结果是47910。
main()
{ints=0,i;
scanf("%d",&i);
do
{if(i==0)
break;
else
{s=s+i;
printf("%d\t",s);}
}while(--i);}
四、数组
(一)选择题
1.以下关于数组的描述正确的是()。
A.数组的大小是固定的,但可以有不同类型的数组元素
B.数组的大小是可变的,但所有数组元素的类型必须相同
C.数组的大小是固定的,所有数组元素的类型必须相同
D.数组的大小是可变的,可以有不同类型的数组元素
2.下面一维数组a正确定义是()。
A.inta(10);
B.intn=10,a[n];
C.intn;
scanf(‘%d”,&n);
inta[n];
D.#defineSIZE10
inta[SIZE];
3.若定义inta[10];则对a数组元素的正确引用是()。
A.a[10]
B.a[4.3]
C.a(5)
D.a[6-6]
4.以下对一维数组进行正确初始化的语句是()。
A.inta[3]=(0,1};
B.inta[3]={};
C.inta[]=[0];
D.inta[3]={3*2};
5.下列程序:
#defineN6
main()
{chara[N];
inti=0;
for(;ifor(i=0;i运行时输入以下三行字符,每行输入都是在该行首列开始:
a↙
b↙
cdef↙
程序输出结果是()
A.abcdef
B.a↙b↙c↙d
C.a↙b↙cd
D.a↙b↙cdef
6.运行下列程序的输出结果是()。
main()
{inta=5;
floatx=67.846;
staticchard[10]="abc";
printf("%4d,%4.1f,%c",a,x,d[2]);}
A.□□□□5,□□67.8,□□c
B.□□□5,67.8,c
C.□□5,□□67.8,□□b
D.□□□5,67.8,b
7.若定义inta[3][2];则printf(“%d”,a[1][0]);语句输出的是第()个元素。
A.1
B.3
C.4
D.5
8.当输出含空格的字符串时,应使用()函数。
A.printf()
B.puts()
C.putchar()
D.putc()
9.在执行charstr[10]=”ch\nina”;strlen(str)的结果是()。
A.5
B.6\n
C.7
D.9
10.10.当接收用户键入的含空格的字符串时,应使用()函数。
A.scanf()
B.gets()
C.getchar()
D.getc()
(二)填空题
1.C语言数组元素的下标必须是正整数、0或者整型表达式。
2.C语言数组元素的下标下限为0。
3.C语言的数组名是一个地址