完整word版C语言复习3.docx
《完整word版C语言复习3.docx》由会员分享,可在线阅读,更多相关《完整word版C语言复习3.docx(27页珍藏版)》请在冰豆网上搜索。
完整word版C语言复习3
1.C程序通常是用编辑器程序填入的。
2.预处理程序是在翻译阶段开始之前自动执行的。
3.两种最常用的预处理指令是把其他文件包含到要编译的文件中和用程序文本替换专门的符号。
4.为了生成可执行文件,连接程序把编译器的输出和各种库函数连接在一起。
5.C语言程序都是从Main函数开始执行。
6.函数体用左花括号({)开始,用右花括号(})结束。
7.语句都用分号结束。
8.标准库函数Printf在屏幕上显示信息。
9.转义序列\n表示新行符,它把光标定位在屏幕下一行的开始位置。
10.标准库函数Scanf用来读取来自键盘的数据。
11.在scanf函数的格式控制串中,转换说明符%d表示要输入一个整数。
在printf函数的格式控制串中,它表示要输出一个整数。
12.不论何时把某个值放置到某个存储单元中,该值都会覆盖掉该存储单元中原有的值。
这种读入过程称为破坏性读入。
13.从存储单元中读取值时,该存储单元中的值不变。
读取过程称为非破坏性读出。
14.if语句用来作出决策。
15.根据要执行的动作以及这些动作应该执行的顺序求解问题的过程称算法
16.指定语句在计算机程序中的执行顺序称为程序控制。
17.所有的程序都可以用三种控制结构编写。
这三种控制结构是顺序结构、选择结构,循环结构
18.if/else选择结构在条件为真时执行一个动作,在条件为假时执行另一个动作。
19.用花括号组合在一起的多个语句称为复合语句。
20.while循环结构在条件为真时反复执行一条语句或一组语句。
21.一组指令循环执行指定次数,这种循环称为计数器控制的循环。
22.在事先不知道一组语句会反复执行多少次的情况下,可以用一个标记值终止循环。
1.编辑器2.预处理3.把其它文件包含到要编译的文件中、用程序文本替换专门的符号。
4连接5.Main6.左花括号({),右花括号(})。
7.分号8.Printf9.新行10.scanf11.%d12.破坏性13.非破坏性14.If15.算法16.程序控制
17.顺序结构、选择结构、循环结构18.if/else19.复合语句20.While
21.计数器控制的22.标记
23.在计数器控制的循环中,计数器用来计算一组指令应该被反复执行的次数
24.执行循环结构中的continue语句能够立即执行下一次循环。
25.执行循环结构或switch结构中的break语句能够立即退出该结构。
26._switch选择结构_用来测试某个特定的变量或表达式是否等于每一个假设的整常数值。
27.C语言的程序模块称为函数。
28.函数是通过函数调用激活的。
29.只能被定义它的函数内部所识别的变量称为局部变量。
30.被调用函数中的return语句用来把表达式的值传回给调用函数。
31.函数的头部用关键字void表示它没有返顺值或表示它不包含参数。
32.标识符的作用域指可使用该标识符的程序区域。
33.把控制权从被调用函数返回到调用函数的三种方法是执行return语句、执行return表达式和___遇到结束函数的左花括号
34.编译器用函数原型检查传递给函数的参数个数、参数类型和参数顺序。
35.rand函数用来产生随机数。
36.Srand函数用来给随机数程序设置随机数种子。
37.存储类别说明符有auto、register、extern和static。
38.在块或函数参数列表中声明的变量除非指定了存储类别,否则其存储类别被假定为Auto。
39.存储类别说明符Register建议编译器把变量存储在计算机的某个寄存器中。
40.在块或函数之外声明的变量是外部,全局变量。
41.要想使函数中的局部变量在函数调用之间保持其值,该变量必须用存储类别说明符Static说明。
42.标识符的四种可能的作用域是函数作用域、文件作用域、和块作用域,函数原型作用域。
43.直接或间接调用自身的函数称为递归函数。
44.递归函数通常由两部分组成。
一部分是通过测试基本实例确定是否终止递归,另一部分是通过递归调用把问题简化。
45.数值列表和数值表储存在数组中。
46.数组元素的相关性表现在它们具有相同的名字和类型。
47.用来引用特定数组元素的数字称为下标。
48.应该用符号常量声明数组的大小,因为这种能够更容易调整程序。
49.把数组元素按顺序存放的过程称为数组排序。
24.continue25.Break26.swithc选择结构27.函数28.函数调用29.局部变量
30.Return31.Void32.作用域33.执行return语句、执行return表达式、遇到结束函数的左花括号34.函数原型35.rand36.Srand37.auto、register、extern、static38.Auto39.Register40.外部、全局41.Static42.函数作用域、文件作用域、块作用域、函数原型作用域。
43.递归44.基本45.数组46.名字、类型47.下标48.符号常量49.排序23.控制变量或计数器
50.确定某个数组中是否包含某个关键值的过程称为数组数查找。
51.使用两个下标的数组称为二维数组。
52.指针是把另一个变量的地址作为其值的变量。
53.有三种值可以来初始化指针,它们是0、NULL和地址。
54.能够赋给指针的唯一的整数是0。
50.查找51.二维52.地址53.0、NULL、地址。
54.0
二.判断下述说法是否正断。
如不正确,说明理由。
1.printf函数总是从新行的起始位置开始打印。
()
2.计算机会把/*和*/之间的注释文本打印到屏幕上。
()
3.在printf函数的格式控制串中使用转义序列\n会把光标定位到屏幕上下一行开始位置
4.所有的变量在使用前都必须予以声明。
()
5.在声明变量时必须给出变量的类型。
()
6.C语言认为变量number和NuMbEr是相同的。
()
7.声明语句可放在函数体中的任何位置。
()
8.printf函数的格式控制串之后的所有参数的前面都必须有&。
()
9.求余运算符%只能用于两个整数操作数。
()
10.算述运算*、/、+和一具有相同的优先级。
()
11.打印三行输出的C语言程序必须用三条printf语句。
()
12.一个数组能够存放许多不同类型的值。
()
13.数组的下标可以float数据类型。
()
14.如果初始化值列表中的初始化值的个数少于数组的元素个数,C编译器会自动把剩余的元素初始化为初始化值列表中的最后一个值。
(
15.初始化值列表中的初始化值个数多于数组元素的个数是错误的。
(
16.把单个数组元素传递给修改该元素值的函数会使调用函数包含修改后的值。
()
1.不正确。
printf函数总是从光标所在位置开始打印,光标位置可在屏幕上某行的任何位置。
2.不正确。
在执行程序时,注释不会使计算机产生任何动作。
注释只是用来提高程序的可读性。
6.不正确。
C语言是对大小写敏感的,所以这两个变量是不相等的。
7.不正确。
声明必须放置在函数体左括号之后和任何可执行语句之前。
8.不正确。
printf函数的参数之间通常不使用&,scanf函数的格式控制串之后的参数通常要在前面加上&。
例外情形在第6章和第7章中讨论。
10.不正确。
运算符*、/和%具有相同的优先级,而运算符+和-的优先级较低。
11.不正确。
在printf语句中用多个\n转义序列可进行多行打印。
12.不正确。
数组只能存储具有相同类型的值13不正确。
数组下标必须是整数或整数表达式14不正确。
C编译器自动把余下的元素初始化为0.16不正确。
数组的单个元素是传值调用。
如果把整个数组传递给函数,被调用函数对数组元素值的修改就会影响到原始数组。
三.判断下列各叙述的正确性,若正确在()内标记√,若错误1.()全局变量与函数体内定义的局部变量重名时,局部变量不起作用。
2.()C程序中,有调用关系的所有函数必须放在同一个源程序文件中。
3.()函数定义时,可以不指定形参的类型,函数调用时由实参的类型决定形参的类型。
4.()C程序文件中每个函数都将被本文件调用。
5.()函数可以嵌套定义,即在一个函数的内部可以定义另一个函数,
6.()当函数定义放在main()函数前面的时候,可以缺省函数声明。
7.()在C语言中允许函数之间的嵌套调用。
8.()局部静态变量是在编译时赋初值的,即只赋初值一次。
9.()外部变量必须定义在文件的开头部分。
10.()函数的形参在退出该函数后是不可见的。
11.()字符“\0”是字符串的结束标记,其ASCII代码为0。
12.(若有说明:
inta[3][4]={0};,则数组a中每个元素的初值都为0。
13.(若有说明:
inta[][4]={0,0};,则二维数组a的第一维大小为0。
14.()若有说明:
inta[2][4]={0,0};,则只有a[0][0]和a[0][1]的初值为0,其余元素的初值均不为0。
15.()若有说明:
staticinta[3][4];,则数组a中各元素可在程序的编译阶段得到初值0。
16.()若用数组名作为函数调用时的实参,则实际上传递给形参的是数组的第一个元素值。
17.()调用strlen(“abc\0ef\0g”)的返回值为8。
18.()在两个字符串的比较中,字符个数多的字符串比字符少的字符串大。
19.()当需要接受用户从键盘输入的含有空格的字符串时,应使用gets()函数。
20.()在C语言中,二维数组元素在内存中的存放顺序可以随意调整变化。
21.()&b指的是变量b的地址处所存放的值。
22.()指针变量可用于保存同类型变量的地址值。
23.()存放地址的变量同其它变量一样,可以存放任何类型的数据。
24.()指向同一数组的两指针p1、p2相减的结果与所指元素的下标相减的结果是相同的。
25.()如果定义函数时的参数是指针变量,那么,调用函数时的参数就可以是同类型的指针变量、数组名或简单变量的地址。
26.()char*name[5]定义了一个一维指针数组,它有5个元素,每个元素都是指向字符数据的指针型数据。
27.()语句y=*p++;和y=(*p)++;是等价的。
28.()函数指针所指向的是函数的入口地址。
29.()int*p;定义了一个指针变量p,其值是整型的。
30.()用指针作为函数参数时,采用的是“地址传送”方式。
31.()结构体的成员可以作为变量使用。
32.()在一个函数中,允许定义与结构体类型的成员相同名的变量,它们代表不同的对象。
33.()在C语言中,可以把一个结构体变量作为一个整体赋值给另一个具有相同类型的结构体变量。
34.()使用联合体union的目的是,将一组具有相同数据类型的数据作为一个整体,以便于其中的成员共享同一存储空间。
35.()使用结构体struct的目的是,将一组数据作为一个整体,以便于其中的成员共享同一空间。
36.()在C语言中,如果它们的元素相同,即使不同类型的结构也可以相互赋值。
37.()在C语言中,枚举元素表中的元素有先后次序,可以进行比较。
38.()用typedef可以定义各种类型名,但不能用来定义变量。
39.()语句printf(“%d\n”,sizeof(structperson));将输出结构体类型person的长度。
40.(所谓结构体变量的指针就是这个结构体变量所占内存单元段的起始地址。
1.╳2.╳3.╳4.╳5.╳
6.√7.√8.√9.╳10.√
11.√12.√13.╳14.╳15.√
16.╳17.╳18.√19.√20.╳
21.╳22.√23.╳24.√25.╳
26.√27.╳28.√29.╳30.√
31.╳32.√33.√34.╳35.╳
36.╳37.√38.√39.√40.√
四.选择题
1.在C语言中,不同类型数据混合运算时,要先转换成同一类型后进行运算。
设一表达式中包含有int、long、unsigned、char类型的变量和数据,则表达式最后的运算结果是4类型数据。
①int②char③unsigned ④long
2.若int型数据占2个字节,则以下语句的输出为4。
intk=-1;printf(“%d,%u\n”,k,k);
①-1,-1②-1,32767③-1,32768④-1,65535
3.若a,b均为int型变量,x,y均为float型变量,正确的输入函数调用是2。
①scanf("%d%f",&a,&b);②scanf("%d%f",&a,&x);
③scanf("%d%d",a,b);④scanf("%f%f",x,y);
4.若x,y均为double型变量,正确的输入函数调用是3。
①scanf("%f%f",&x,&y);②scanf("%d%d",&x,&y);
③scanf("%lf%lf",&x,&y);④scanf("%lf%lf",x,y);
5.若x为char型变量,y为int型变量,x,y均有值,正确的输出函数调用是1。
①printf("%c%c",x,y);②printf("%c%s",x,y);
③printf("%f%c",x,y);④printf("%f%d",x,y);
6.若a,b,c,d都是int型变量且初值均为10,不正确的赋值语句是3。
①a=b=c=d; ②a=b++;
③a+b++; ④d=(a=b=125)c++;
7.若x,y均为int型变量且有值,要输出x,y的值,正确的输出函数调是4
。
① printf("%d%d",&x,&y);②printf("%f%f",x,y);
③printf("%f%d",x,y);④printf("%d%d",x,y);
8.x为int型变量,且值为2345,不正确的输出函数调用是4。
①printf("%d",x);②printf("%3d",x);
③printf("%c",x);④printf("%s",x);
9.设x和y均为int型变量,则执行以下语句后的输出为1。
x=15;y=5;printf(“%d\n”,x%=(y%=2));
① 0 ② 1③ 6④ 12
1.④2.④3.②4.③5.①6.③
7.④8.④9.①
10.若m为float型变量,则执行以下语句后的输出为。
m=1234.123;printf(“%-8.3f\n”,m);printf(“%10.3f\n”,m);
①1234.123②1234.123
1234.1231234.123
③1234.123④1234.123
001234.123001234.123
11.若n为int型变量,则执行以下语句后的输出为。
n=32767;printf(“%010d\n”,n);printf(“%10d\n”,n);
①0000032767②32767
327670000032767
③32767④输出格式说明符不合法
3276732767
12.若x为unsignedint型变量,则执行以下语句后的x值为。
x=65535;printf(“%d\n”,x);
①65535②1
③无定值④-1
13.若x为int型变量,则执行以下语句后的输出为。
x=0xDEF;printf(“%4d\n”x);printf(“%4o\n”x);printf(“%4x\n”,x);
①3567②3567③3567④3567
67576757067576757
defdef0xdef0def
14.若x、y、z均为int型变量,则执行以下语句后的输出为。
x=(y=(z=10)+5)-5;printf(“x=%d,y=%d,z=%d\n”,x,y,z);y=(z=x=0,x+10);printf(“x=%d,y=%d,z=%d\n”,x,y,z);
①x=10,y=15,z=10
x=0,y=10,z=0
②x=10,y=10,z=10
x=0,y=10,z=0
③x=10,y=15,z=10
x=10,y=10,z=0
④x=10,y=10,z=10
x=0,y=10,z=0
10.②11.①12.④13.①14.①
15.若x是int型变量,y是float型变量,所用的scanf调用语句格式为:
scanf(“x=%d,y=%f”,&x,&y);则为了将数据10和66.6分别赋给x和y,正确的输入应当是。
①x=10,y=66.6<回车>
②10 66.6 <回车>
③10<回车>66.6<回车>
④x=10 <回车>y=66.6<回车>
16.若w、x、y、z均为int型变量,则为了使以下语句的输出为:
1234+123+12+1,正解的输入形式应当是。
scanf(“%4d+%3d+%2d+%1d”,&x,&y,&z,&w);printf(“%4d+%3d+%2d+%1d\n”,x,y,z,w);
①1234123121<回车>
②1234123412341234<回车>
③1234+1234+1234+1234<回车>
④1234+123+12+1<回车>
17.若x、y均为int型变量,z为double型变量;则以下不合法的scanf函数调用语句为。
①scanf(“%d,%lx,%le”,&x,&y,&z);
②scanf(“%2d*%d%lf”,&x,&y,&z);
③scanf(“%x%*d%o”,&x,&y);
④scanf(%x%o%6.2f”,&x,&y,&z);
18.设a、b均是int型变量,则以下不正确的函数调用为。
①’a’<=c1<=’z’②putchar(‘\108’)
③scanf(“%d%*2d”,&a,&b)④putchar(‘\’’)
19.判断char型变量c1是否为小写字母的最简单且正确的表达式为。
①’a’<=c1<=’z’②(c1>=a)&&(c1<=z)
③(‘a’<=c1)||(‘z’>=c1)④(c1>=’a’)&&(c1<=’z’)
20.若a、b、c均为int型变量,则执行以下语句后,a值为
(1),b值为
(2)。
a=b=c=1;++a||++b&&++c;
(1)①不正确②0③2④1
(2)①1②2③不正确④015.①
16.④17.④18.②19.④20.
(1)③
(2)①
21.若已知w=1,x=2,y=3,z=4,a=5,b=6,则执行以下语句的a值为
(1),b值为
(2)。
(a=w>x)&&(b=y>z);
(1)①5②0③1④2
(2)①6②0③1④4
22.以下不正确的if语句是_______。
① if(x>y);
②if(x==y)x+=y;
③if(x!
=y)scanf(“%d”,&x)elsescanf(“%d”,&y);
④if(x23.C语言对嵌套if语句的规定是:
else总是与配对。
①其之前最近的if②第一个if
③缩进位置相同的if④其之前最近且不带else的if
24.若有说明intx,y;则下面程序段不能实现以下的函数关系:
①if(x<0)y=-1;elseif(x==0)y=0;elsey=1;
②y=-1;if(x!
=0);if(x>0)y=1;elsey=0;
③y=0;if(x>=0);if(x>0)y=1;elsey=-1;
④if(x>=0)if(x>0)y=1;elsey=0;elsey=-1;
25.若x、y、z、m、n均为int型变量,则执行下面语句后的x值为
(1),y值为
(2),z的值为(3)。
m=10;n=5;
x=(--m==n++)?
--m:
++n;y=m++;z=n;
(1)①5②6③10④7
(2)①11②6③9④10
(3)①5②10③6④7
26.若有说明语句:
intw=1,x=2,y=3,z=4;则表达式w>x?
w:
z>y?
z:
x的值是。
① 4② 3③ 2④ 1
27.以下关于switch语句和break语句的描述中,只有是正确的。
①在switch语句中必须使用break语句。
②break语句只能用于switch语句中。
③在switch语句中,可根据需要用或不用break语句。
④break语句是switch语句的一部分。
21.
(1)②
(2)①22.③23.④24.②,③
25.
(1)④
(2)③(3)④
26.①27.③28.②
28.设有说明语句:
inta=2,b=7,c=5;则执行以下语句后,输出为2。
switch(a>0)
{
case1:
switch(b<0)
{case1:
printf(“@”);break;
case2:
printf(“!
”);break;
}
case0:
switch(c==5)
{case0:
printf(“*”);break;
case1:
printf(“#”);break;
default:
printf(“$”);break;
}
default:
printf(“&”);
}
①@#&②#&③*&④$&
29.以下程序的输出结果是1。
m