0.0731

五煦查题

快速找到你需要的那道考题与答案

moocC程序设计_4课后答案(慕课2023完整答案)

65 min read

moocC程序设计_4课后答案(慕课2023完整答案)

第1讲 了解计算机的序设工作原理

课后测验:了解计算机的工作原理

1、通常所说的计课主机是指:
A、CPU
B、后答计算机机箱
C、案慕案显示器
D、课完CPU、整答内存和外存

2、序设所谓“裸机”是计课指:
A、单片机
B、后答单板机
C、案慕案不装备任何软件的课完计算机
D、只装备操作系统的整答计算机

3、CPU包含
A、序设运算器和控制器
B、计课运算器和存储器
C、后答控制器和存储器
D、运算器、控制器、存储器、输入设备和输出设备

4、在计算机系统中,一个字节的二进制位数为
A、16
B、8
C、32
D、由 CPU的型号决定

5、在计算机中,一个字长的二进制位数是
A、8
B、16
C、32
D、随CPU的型号而定

6、软件与程序的区别是∶
A、程序价格便宜、软件价格昂贵;
B、程序是用户自己编写的,而软件是由厂家提供的;
C、程序是用高级语言编写的,而软件是由机器语言编写的;
D、软件是程序以及开发、使用和维护所需要的所有文档的总称,而程序只是软件的 一部分。

7、计算机软件可以分为:
A、操作系统和应用软件
B、系统软件和应用软件
C、常用软件和不常用软件
D、操作系统和网络软件

8、应用软件是指∶
A、所有能够使用的软件
B、能被各应用单位共同使用的某种软件
C、所有微机上都应使用的基本软件
D、专门为某一应用目的而编制的软件

9、切断计算机电源后,下列存储器中的信息会丢失的是:
A、RAM
B、ROM
C、硬盘
D、U盘

10、课程学习过程中需要使用到编程工具CodeBlocks,它属于______。
A、系统软件
B、应用软件
C、必需软件
D、支撑软件

11、计算机由运算器、_______、存储器、输入设备、输出设备五部分组成。

12、计算机中执行各种算术和逻辑运算操作的部件是_______。

13、计算机中控制执行指令,协调各部件运行,为各部件提供控制信号的部件是____________。

14、显示器和打印机都属于计算机体系结构中______部件的范畴。

15、计算机的指令包括_______和操作数两部分。

第2讲 信息在计算机中的表示

课后测验:信息在计算机中的表示

1、用8位无符号二进制数能表示的最大十进制数为
A、127?
B、128
C、255
D、256

2、十进制数127转换成二进制数是
A、11111111?
B、01111111?
C、10000000?
D、11111110

3、下列数值最大的是
A、1100000B?
B、144O?
C、64H?
D、101

4、若[x]原=10000011,则[x]补=?
A、10000011?
B、11111100?
C、01111100?
D、11111101

5、如果X为负数,由[X]补求[-X]补是将?
A、[X]补各值保持不变?
B、[X]补符号位变反,其它各位不变?
C、[X]补除符号位外,各位变反,末位加1?
D、[X]补连同符号位一起各位变反,末位加1

6、ASCII码(含扩展)可以用一个字节表示,则可以表示的ASCII码值个数为?
A、1024?
B、256?
C、128
D、80

7、英文小写字母d的ASCII码为100,英文大写字母D的ASCII码为?
A、50
B、66
C、52?
D、68

8、在计算机系统中,存储一个汉字的国标码所需要的字节数为?
A、1
B、2
C、3
D、4

9、已知某数X的原码为10110100B,它的反码是
A、10110100B
B、00110100B
C、11001011B
D、11001100B

10、用8位二进制描述数据,计算(-83)补+(-80)补的结果是?
A、01011101B
B、溢出
C、101011101B
D、001011101B

第3讲 编程的理论基础

课后测验:编程的理论基础

1、下列计算机语言中,CPU能直接识别的是
A、自然语言
B、高级语言
C、汇编语言
D、机器语言

2、可移植性最好的计算机语言是∶
A、机器语言
B、汇编语言
C、高级语言
D、自然语言

3、要把高级语言编写的源程序转换为目标程序,需要使用
A、编辑程序
B、驱动程序
C、诊断程序
D、编译程序和解释程序

4、计算机语言有许多种,其中与硬件直接相关的是
A、机器语言
B、网络语言
C、高级语言
D、自然语言

5、计算机算法指的是
A、计算方法
B、排序方法
C、解决问题的有限运算序列
D、调度方法

6、计算机算法必须具备输入、输出和( )等5个特性。
A、可行性、可移植性和可扩充性
B、可行性、确定性和有穷性
C、确定性、有穷性和稳定性
D、易读性、稳定性和安全性

7、结构化程序设计所规定的三种基本控制结构是( )。
A、输入、处理、输出
B、树形、网形、环形
C、顺序、选择、循环
D、主程序、子程序、函数

8、下面选项中不属于面向对象程序设计特征的是( )。
A、继承性
B、多态性
C、类比性
D、封装性

9、结构化程序设计的主要特征是
A、封装和数据隐藏
B、继承和重用
C、数据和处理数据的过程分离
D、把数据和处理数据的过程看成一个整体

10、面向对象程序设计将数据与( )放在一起,作为一个互相依存、不可分割的整体来处理。
A、信息
B、数据抽象
C、数据隐藏
D、对数据的操作

第4讲 编写第一个C程序

课后测验:编写第一个C程序

1、以下叙述中正确的是
A、C语言比其他语言高级
B、C语言可以不用编译就能被计算机识别执行
C、C语言以接近英语国家的自然语言和数学语言作为语言的表达形式
D、C语言出现的最晚,具有其他语言的一切优点

2、以下叙述中正确的是( )。
A、C程序中注释部分可以出现在程序中任意合适的地方
B、花括号"{ "和"}"只能作为函数体的定界符
C、构成C程序的基本单位是函数,所有函数名都可以由用户命名
D、分号是C语句之间的分隔符,不是语句的一部分

3、C程序是由 ( )组成的。
A、过程
B、函数
C、子程序
D、主程序和子程序

4、一个C程序的基本结构是( )。
A、一个主函数和若干个非主函数
B、若干个主函数和若干个非主函数
C、一个主函数和最多一个非主函数
D、若干个主函数和最多一个非主函数

5、用C语言编写的源程序文件( )。
A、可立即执行
B、是一个源程序
C、经过编译连接,正确后可以执行
D、经过编译解释才能执行

6、以下四个程序中,完全正确的是( )。
A、#include <stdio.h> int main(); { /*programming*/ printf("programming!\n"); return 0; }
B、#include <stdio.h> int main() { /*programming*/ printf("programming!\n"); return 0; }
C、include <stdio.h> void main() { /*programming*/ printf("programming!\n"); return 0; }
D、#include <stdio.h> int mian() { /*programming*/ printf("programming!\n"); return 0; }

7、C程序编译时,程序中的注释部分( )。
A、参加编译,并会出现在目标程序中
B、参加编译,但不会出现在目标程序中
C、不参加编译,但会出现在目标程序中
D、不参加编译,也不会出现在目标程序中

8、以下叙述中错误的是( )。
A、C语言源程序经编译后生成后缀为obj的目标程序
B、C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件
C、用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中
D、C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令

9、编写C++程序一般需经过的几个步骤依次是( )
A、编译、编辑、连接、调试
B、编辑、编译、连接、调试
C、编译、调试、编辑、连接
D、编辑、调试、编译、连接

10、在C语言中,main函数默认返回一个( )类型的值。
A、int
B、float
C、char
D、void

11、以下不属于C语言语法允许使用的字符集合的是( )
A、汉字
B、大小写字母
C、数字
D、空白符

12、以下属于C语言语法保留字的是( )
A、return
B、Int
C、value
D、main

13、以下属于合法的C语言标识符的是( )
A、Main
B、short
C、npu-2015
D、8849

14、C语言源程序文件的后缀名为( )
A、.c
B、.h
C、.cpp
D、.res

15、以下说法正确的是( )
A、大型C程序可以包含多个源程序文件,并且每个源程序文件可以单独编译。
B、一个C程序只能包括一个源程序文件。
C、C程序中main函数必须放在其他函数之前。
D、C程序的函数可以不书写函数头,而只编写包括声明和执行语句的函数体。

第5讲 将简单数据引入C程序中

课后测验:将简单数据引入C程序中

1、( )是C语言的数据类型说明保留字。
A、Float
B、signed
C、integer
D、Char

2、类型修饰符unsigned不能修饰( )。
A、char
B、int
C、long int
D、float

3、下列选项中,均是合法的C语言整型常量的是( )。
A、160 -0xffff 0011
B、–0xcdf 01a 0xe
C、–01 986,012 0668
D、–0x48a 2e5 0x

4、下列选项中,均是合法的C语言实型常量的是( )。
A、+1e+1 5e-9.4 03e2
B、-.60 12e-4 -8e5
C、123e 1.2e-.4 +2e-1
D、–e3 8e-4 5.e-0

5、设char a='\70';则变量a( )。
A、包含1个字符
B、包含2个字符
C、包含3个字符
D、说明不合法

6、( )是非法的C语言转义字符。
A、'\b'
B、'\0xf'
C、'\037'
D、'\''

7、以下选项中( )不是C语言常量。
A、e-2
B、012
C、"a"
D、'\n'

8、以下不是C语言支持的存储类别的是( )。
A、auto
B、static
C、dynamic
D、register

9、以下叙述中错误的是( )。
A、C语言的标识符允许使用保留字。
B、C语言的标识符应尽量做到“见其名知其意”。
C、C语言的标识符必须以字母或下划线开头。
D、C语言的标识符中,大、小写字母代表不同标识。

10、在以下各组标识符中,合法的C语言标识符是( )。
A、B01 Int
B、table_1 t*.1
C、0_t W10
D、k% point

11、下面关于符号常量的说法正确的是()
A、符号常量是以标识符形式出现的常量,一经定义,它所代表的常量值在其作用域内不能改变。
B、可以将圆周率这个常量值定位为符号常量,定义方法为:#define PI=3.1415926
C、符号常量名可以不遵循C语言的标识符命名规则。
D、使用符号常量不仅便于程序的调试和维护,还能大大提高程序的运行速度。

12、已定义ch为字符型变量,以下赋值表达式中错误的是( )。
A、ch='\'
B、ch=62+3
C、ch=NULL
D、ch='\xaa'

第6讲 数值数据的运算与处理

课后测验:数值数据的运算和处理

1、在C语言中,要求参加运算的数必须是整数的运算符是( )。
A、/
B、*
C、%
D、=

2、表达式0x13 ^ 0x17的值是( )
A、0x04
B、0x13
C、0xe8
D、0x17

3、表达式3.6-5/2+1.2+5%2的值是( )。
A、4.3
B、4.8
C、3.3
D、3.8

4、在位运算中,操作数每右移一位,其结果相当于( )。
A、操作数乘以2
B、操作数除以2
C、操作数除以4
D、操作数乘以4

5、若有定义char c1=92,c2=92;则以下表达式中值为零的是( )。
A、~c2
B、c1&c2
C、c1^c2
D、c1|c2

6、设x,y,u,v均为浮点型,与数学公式 不等价的C语言表达式是( )。
A、x*y/u*v
B、x*y/u/v
C、x*y/(u*v)
D、x/(u*v)*y

7、若变量a、b已经正确定义并赋值,符合C语言语法的表达式是( )。
A、
B、a*a+b
C、a×a+b
D、a?a+b

8、以下不能正确计算数学公式 值的C语言表达式是( )。
A、1/3*sin(1/2)*sin(1/2)
B、sin(0.5)*sin(0.5)/3
C、pow(sin(0.5),2)/3
D、1/3.0*pow(sin(1.0/2),2)

9、若有定义int x=2,y=3;则x & y的值是( )。
A、0
B、2
C、3
D、5

第7讲 逻辑数据的运算与处理

课后测验:逻辑数据的运算和处理

1、关于C程序关系运算、逻辑运算后得到的逻辑值的表述中,正确的是( )。
A、假为0,真为随机的一个非0值
B、假为0,真为1
C、假为-1,真为1
D、假为0,真为不确定的值

2、下列运算符中,优先级从高到低依次为( )。
A、&& ! ||
B、|| && !
C、&& || !
D、! && ||

3、设int i=10;表达式30-i<=i<=9的值是( )。
A、0
B、1
C、9
D、20

4、表达式!x等效于( )。
A、x==1
B、x==0
C、x!=1
D、x!=0

5、已有定义int x=3,y=4,z=5;则表达式!(x+y)+z-1 && y+z/2的值是( )。
A、6
B、2
C、1
D、0

6、以下运算符优先级最低的是( )。
A、&&
B、&
C、||
D、|

7、若x和y为整型数,以下表达式中不能正确表示数学关系 的是( )。
A、abs(x-y)<10
B、x-y>-10 && x-y<10
C、!(x-y)<-10 || !(y-x)>10
D、(x-y)*(x-y)<100

第8讲 赋值和类型转换

课后测验:赋值与类型转换

1、下列运算符中,优先级最高的是( )。
A、( )
B、%
C、++
D、,

2、设int a=0,b=0,m=0,n=0;则执行(m=a==b)||(n=b==a)后m和n的值是( )。
A、0,0
B、0,1
C、1,0
D、1,1

3、若有int i=5,j=4,k=6;float f;执行语句f=(i<j&&j<k)?i:(j<k)?j:k;后f的值为( )。
A、4.0
B、5.0
C、6.0
D、7.0

4、以下选项中非法的表达式是( )。
A、0<=x<100
B、i=j==0
C、(char)(x<100)
D、x+1=x+1

5、设 int m1=5,m2=3;表达式m1>m2 ? (m1=1):(m2=-1)运算后,m1和m2的值分别是()。
A、1和3
B、1和-1
C、5和-1
D、5和3

6、以下叙述中错误的是( )。
A、表达式a&=b等价于a=a&b
B、表达式a|=b等价于a=a|b
C、表达式a∧=b等价于a=a∧b
D、表达式a!=b等价于a=a!b

7、假设某表达式中包含int、long、unsigned、char类型的数据,则表达式最后的运算结果是( )类型。
A、int
B、long
C、unsigned
D、char

8、若int k=7,x=12;则值为3的表达式是( )。
A、x%=(k%=5)
B、x%=(k-k%5)
C、x%=k-k%5
D、(x%=k)-(k%=5)

9、对于语句:f=(3.0,4.0,5.0),(2.0,1.0,0.0);的判断中,( )是正确的。
A、语法错误
B、f为5.0
C、f为0.0
D、f为2.0

10、设变量n为float类型,m为int型,则以下( )表达式能实现将n中的数值保留小数点后两位,第三位进行四舍五入运算。
A、n=(n*100+0.5)/100.0
B、m=n*100+0.5,n=m/100.0
C、n=n*100+0.5/100.0
D、n=(n/100+0.5)*100.0

11、假定有变量定义:int k=6,x=12;则能使x、k值为5、6的表达式是( )。
A、x%=++k%10
B、x%=k+k%5
C、x-=++k%5
D、x-=k++%5

12、若变量a为int类型,且其值为3,则执行表达式a+=a-=a*a后,a的值是( )。
A、-3
B、9
C、-12
D、6

13、sizeof(char)的值是( )。
A、1
B、2
C、非法
D、8

14、若变量已正确定义并赋值,下面符合C语言语法的表达式是( )。
A、a:=b+1
B、a=b=c+2
C、int(18.5%3)
D、a=a+7=c+b

15、判断年份y是否为闰年的表达式为()
A、y%4==0
B、y%4==0 && y%100!=0
C、(y%4==0&&y%100!=0)||(y%400==0)
D、(y%4==0)||(y%400==0&&y%100!=0)

16、判断整型变量n是否是负的偶数的C语言表达式为( )
A、n<0 &&n%2==0
B、n<0 ||n%2==0
C、n%-2==0
D、n<0&&n/2==0

17、已知x、y分别为a、b、c中的最大值和最小值,下面表达式能求出a、b、c中中间值的是( )
A、(x==a||y==a) ? a : (x==b||y==b) ? b : c
B、(a+b+c)-(x+y)
C、(a*b*c)/x/y
D、(a+b+c)/3

18、若int x=0123,则表达式(5+(int)(x))&(~2)的值是______________。

19、表达式((4|1)&3)的值是________。

20、表达式10<<3+1的值是_____。

21、已知A=7.5,B=2,C=3.6,表达式A>B && C>A || A<B && !C>B的值是_____。

22、设int a=-3,b=7,c=-1;则执行(a==0)&&(a=a%b<b/c)后变量a的值是_____。

第9讲 编写程序语句

课后测验:编写程序语句

1、以下叙述中错误的是( )。
A、C语言的简单语句必须以分号结束
B、空语句出现在任何位置都不会影响程序运行
C、复合语句在语法上被看作一条语句
D、赋值表达式末尾加分号就构成赋值语句

2、C语言的语句类型不包括()
A、简单语句
B、控制语句
C、复合语句
D、预处理命令

3、以下不是C语言简单语句的是( )
A、表达式语句
B、函数调用语句
C、声明语句
D、跳转语句

4、下面是C语言合法的复合语句的是( )
A、{ int t,a=4,b=7; t=a,a=b,b=t };
B、{ double v1,r=5; v1=4*3.14*r*r*r/3; { double v2,h=12; v2=3.14*r*r*h; } printf("%lf,%lf",v1,v2); }
C、{ #define PI=3.14; double v1,r=3; v1=PI*r*r; }
D、{ double s,a=5,b=10,h=8 s=(a+b)*h/2.0 printf(“area=%lf”,s) }

5、以下关于C语言注释的说法正确的是()
A、可以采用/*……*/的形式书写多行注释,其中的注释内容可以是任何字符。
B、//注释表示从//开始直到本行末尾的所有字符均是注释内容。
C、C语言的注释将参与编译器编译,并形成指令。
D、写C语言程序时必须书写注释,否则会对程序的功能造成影响。

6、关于C语言语句书写格式的说法错误的是()
A、C语言程序必须一行一个语句。
B、C语言允许一行书写多个语句。
C、C语言允许将一个语句分成多行书写。
D、编写C程序时,建议使用空格或Tab来做合理的间隔、缩进或对齐,使得程序形成逻辑相关的块状结构。

7、使用getchar和putchar函数进行单个字符输入输出时,必须使用预处理命令”#include”包括()文件。
A、stdio.h
B、stdlib.h
C、math.h
D、string.h

8、以下关于使用C语言实现输入输出的说法错误的是()
A、C语言自身具备输入输出语句,可以直接实现输入输出功能。
B、输入指从外部输入设备(如键盘、鼠标等)向计算机输入数据。
C、输出指将数据从计算机送到外部输出设备(如打印机、显示器等)。
D、C语言输入输出操作本质上是函数调用语句。

9、要使用putchar函数实现向显示器输出字符’A’,则可以使用()。
A、putchar(A)
B、putchar(“A”)
C、putchar(65)
D、putchar(‘\65’)

10、有以下程序段: char c1='1',c2='2'; c1=getchar(); c2=getchar(); putchar(c1); putchar(c2); 运行时从键盘上输入:a↙ 后,以下叙述中正确的是( )。
A、变量c1被赋予字符a,c2被赋予回车符
B、程序将等待用户输入第2个字符
C、变量c1被赋予字符a,c2中仍是原有字符'2'
D、变量c1被赋予字符a,c2中将无确定值

第10讲 编程实现简单数据的输出

课后测验:编程实现简单数据的输出

1、以下叙述中正确的是( )。
A、调用printf函数时,必须至少有一个输出项。
B、使用printf函数时,必须在之前包含头文件stdio.h
C、在C语言中,整数可以以多种进制。例如十二进制、八进制或十六进制的形式输出。
D、调用printf函数时,可以省略格式控制串。

2、下面程序段执行后的输出结果是()。注:└┘符号代表空格 int a=123; printf(“[%4d],[%-4d],[%04d]”,a,a,a);?
A、[123],[└┘123],[1230]
B、[123└┘ ],[└┘123],[0123]
C、[└┘123],[123└┘],[0123]
D、[└┘123],[123└┘],[173]

3、设有int a=123;执行语句printf(“%*d”,5,a);的输出结果是()。
A、*123
B、5123
C、└┘└┘123
D、编译错误

4、下面程序段执行后的输出结果是( )。 float x=-1023.012; printf("%8.3f,",x); printf("%10.3f",x);
A、1023.012,-1023.012
B、–1023.012,-1023.012
C、1023.012, └┘-1023.012
D、–1023.012, └┘-1023.012

5、下面程序段执行后的输出结果是( )。 int x=13,y=5; printf("%d",x%=(y/=2));
A、3
B、2
C、1
D、0

6、下面程序段执行后的输出结果是( )。 int x='f'; printf("%c",'A'+(x-'a'+1));
A、G
B、H
C、I
D、J

7、设int a=1234;执行语句printf("%2d",a);后的输出结果是( )。
A、12
B、34
C、1234
D、出错

8、设int a=7,b=8;执行语句printf("%d,%d",(a+b,a),(b,a+b));后的输出结果是( )。
A、出错
B、8,15
C、15,7
D、7,15

9、执行语句printf("a\bre\'hi\'y\\\bou");后的输出结果是( )。
A、abre'hi'ybou
B、a\bre\'hi\'y\\\bou
C、re'hi'you
D、abre'hi'y\bou

10、下面程序段执行后的输出结果是( )。 int x=102,y=012; printf("%2d,%2d",x,y);
A、10,01
B、02,12
C、102,10
D、102,12

11、下面程序段执行后的输出结果是( )。 int m=0256,n=256; printf("%o└┘%o",m,n);
A、0256└┘0400
B、0256└┘256
C、256└┘400
D、400└┘400

12、下面程序段执行后的输出结果是( )。 int a; char c=10; float f=100.0; double x; a=f/=c*=(x=6.5); printf("%d└┘%d└┘%3.1f└┘%3.1f",a,c,f,x);
A、1└┘65└┘1└┘6.5
B、1└┘65└┘1.5└┘6.5
C、1└┘65└┘1.0└┘6.5
D、2└┘65└┘1.5└┘6.5

13、设 char c1=’A’,执行语句printf(“%%”,c1);的输出结果是()。
A、执行异常
B、A
C、%%
D、%

14、下面程序段执行后的输出结果是( )。 char a='1',b='2'; printf("%c,",b++); printf("%d",b-a);
A、3,2
B、2,2
C、50,2
D、2,50

第11讲 编程实现简单数据的输入

课后测验:编程实现简单数据的输入

1、以下叙述中错误的是( )。
A、调用scanf函数时,每个输入项必须为地址形式。
B、使用scanf函数时,必须在之前包含头文件stdio.h
C、在C语言中,整数可以以多种进制例如十进制、八进制或十六进制的形式输入。
D、调用scanf函数时,如果输入项个数比给定的格式说明符多,将会出现编译错误。

2、关于scanf函数的格式控制字符串,()是错误的说法。
A、格式说明必须包括%和type字符,其他域可以省略。
B、type类型字符可以描述应输入的信息类型,可以支持整数的任意进制输入。
C、*禁止字符是指从输入数据中读取类型相当的数据,但不将它保存在输入项中。
D、宽度说明控制从输入数据中读出的最大字符数,有可能实际执行时读入的字符个数少于宽度说明的个数。

3、已知如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据时,正确的数据输入方式是( )。 int a1,a2; char c1,c2; scanf("%d%d",&a1,&a2); scanf("%c%c",&c1,&c2);
A、1020AB↙
B、10└┘20↙ AB↙
C、10└┘20└┘AB↙
D、10└┘20AB↙

4、有输入语句:scanf("a=%d,b=%d,c=%d",&a,&b,&c);为使变量a的值为1,b的值为3,c的值为2,正确的数据输入方式是( )。
A、132↙
B、1,3,2↙
C、a=1└┘b=3└┘c=2↙
D、a=1,b=3,c=2↙

5、若定义x为double型变量,则能正确输入x值的语句是( )。
A、scanf("%f",x);
B、scanf("%f",&x);
C、scanf("%lf",&x);
D、scanf("%5.1f",&x);

6、下面程序段运行时从键盘上输入:12345678↙,其输出结果是( )。 int a , b ; scanf("%2d%*2d%3d",&a,&b); printf("%d",a+b);
A、46
B、579
C、5690
D、出错

第12讲 编程实现选择分支

课后测验:编程实现选择分支

1、C语言对嵌套if语句的规定是else总是与( )配对。
A、之前最近的尚未配对的if
B、第一个if
C、缩进位置相同的if
D、最前面的if

2、关于goto语句的说法错误的是()
A、goto语句的作用是使程序无条件跳转到别的位置。
B、goto语句的语法形式为:goto 标号;
C、goto语句可以跳转到程序中的任意位置,不受函数界限限制。
D、goto语句无条件的跳转破坏了程序的结构化,应该少用或不用。

3、“if(表达式) ”中的“表达式”( )。
A、只能是逻辑表达式
B、只能是关系表达式
C、只能是算术表达式
D、逻辑表达式、关系表达式和算术表达式都可以

4、对于下面程序,( )是正确的判断。 #include <stdio.h> int main() { int x,y; scanf("%d%d",&x,&y); if (x>y) x=y;y=x; else x++;y++; printf("%d,%d",x,y); return 0; }
A、有语法错误,不能通过编译
B、若输入3和4,则输出4和5
C、若输入4和3,则输出3和4
D、若输入4和3,则输出4和5

5、对于下面程序段,( )是正确的判断。 int x=0,y=0,z=0; if (x=y+z) printf("***"); else printf("###");
A、有语法错误,不能通过编译
B、输出:***
C、可以编译,但不能通过连接,所以不能运行
D、输出:###

6、若int i=10;执行下面程序段后,变量i的值是( )。 switch (i) { case 9: i+=1 ; case 10: i+=1 ; case 11: i+=1 ; default: i+=1 ; }
A、10
B、11
C、12
D、13

7、若int i=1;执行下面程序段后,变量i的值是( )。 switch (i) { case '1': i+=1 ; case '2': i+=1 ; case '3': i+=1 ; default : i+=1 ; }
A、2
B、3
C、4
D、5

8、若有定义:float w; int a,b;则合法的switch语句是( )。
A、switch (w) { case 1.0:printf("*\n"); case 2.0:printf("**\n"); } ?
B、switch (a); { case 1:printf("*\n"); case 2:printf("**\n"); }
C、switch (b) { case 1:printf("*\n"); default:printf("\n"); case 1+2:printf("**\n"); }?
D、switch (a+b); { case 1:printf("*\n"); case 2:printf("**\n"); default:printf("\n"); }

9、无条件转移语句的一般形式是:goto语句标号;其中的语句标号可以是( )。
A、整型数
B、标识符
C、保留字
D、实型数

10、关于if语句的说法正确的是()。
A、作为if语句条件的表达式只能是关系表达式或者逻辑表达f式。
B、if-else语句的语法格式为 if (表达式1)语句1;else (表达式2) 语句2;
C、if语句中的子语句可以是简单语句或复合语句,但不能是控制语句。
D、if语句完全可以实现条件运算符的功能。

11、关于switch语句的说法正确的是()。
A、switch语句的每个case分支中只能设置一个语句。
B、switch语句中各个case分支顺序没有规定,但是default分支必须处在所有case分支之后,否则会影响程序执行效果。
C、switch语句中default分支是可选的。
D、switch语句后边的圆括号可以省略。

12、switch语句语法中的case分支必须是常量表达式且互不相同,值不能为()类型。
A、整型
B、字符型
C、枚举型
D、浮点型

13、switch语句可以用if语句完全代替。

14、switch语句的case表达式中可以包括变量。

15、条件表达式可以取代if语句。

16、switch语句中case分支和default分支的个数都是任意的。

17、switch中多个case分支可以执行相同的程序段。

18、内层break语句可以终止嵌套的switch,使最外层的switch结束。

19、switch语句的case分支可以使用复合语句、多个语句序列。

20、switch语句的表达式与case表达式的类型必须一致。

第13讲 编程实现嵌套的选择分支

课后测验:编程实现嵌套的选择分支

1、若a=1,b=3,c=5,d=4,则执行下面程序段后x的值是( )。 if (a<b) if (c<d) x=1 ; else if (a<c) if (b<d) x=2 ; else x=3 ; else x=6 ; else x=7 ;
A、1
B、2
C、3
D、4

2、执行语句序列 int x; scanf("%d",&x); if(x>250) printf("X"); if(x<250) printf("Y"); else printf("X"); 时,不可能出现的情况是()。
A、显示:X
B、显示:Y
C、显示:XY
D、显示:XX

3、与y=(x>0 ? 1: x<0 ? -1:0);的功能相同的if语句是( )。
A、y=0; if (x>=0) if (x>0) y=1; else y=-1;
B、if (x) if (x>0) y=1; else if (x<0) y=-1; else y=0;
C、y=-1; if (x) if (x>0) y=1; else if (x==0) y=0; else y=-1;
D、if (x>0) y=1; else if (x<0) y=-1; else y=0;

4、下面程序段表示以下( )式子。 if(a<b) { if(c==d) x=1;} else x=2;
A、
B、
C、
D、

5、下面程序执行后的输出结果是( )。 #include <stdio.h> int main() { int x=1,y=0,a=0,b=0; switch(x) { case 1: switch (y) { case 0 : a++ ; break ; case 1 : b++ ; break ; } case 2: a++; b++; break ; case 3: a++ ; b++ ; } printf("a=%d,b=%d",a,b); return 0; }?
A、a=1,b=0
B、a=2,b=1
C、a=1,b=1
D、a=2,b=2

6、#include <stdio.h> int main() { int n=0,m=1,x=2; if(!n) x-=1; if(m) x-=2; if(x) x-=3; printf("%d",x); return 0; } 的运行结果是( )。?
A、1
B、0
C、2
D、-4

第14讲 编程实现循环

课后测验:编程实现循环

1、有以下程序段: int k=2; while (k=0) { printf("%d",k) ; k-- ; } 则下面描述中正确的是( )。
A、while循环执行10次
B、循环是无限循环
C、循环体语句一次也不执行
D、循环体语句执行一次

2、下面程序段执行后的输出结果是( )。 int a=1,b=2,c=3,t; while (a<b<c){ t=a;a=b;b=t;c--; } printf("%d,%d,%d",a,b,c);?
A、1,2,0
B、2,1,0
C、1,2,1
D、2,1,1

3、下面程序段执行后的输出结果是( )。 #include <stdio.h> int main() { int x=0,y=5,z=3; while(z-->0&&++x<5) y=y-1; printf("%d,%d,%d",x,y,z); return 0; }?
A、3,2,0
B、3,2,-1
C、4,3,-1
D、5,-2,-5

4、下面程序的功能是从键盘输入一组字符,从中统计大写字母和小写字母的个数,选择 ( )填入到【 】中。 #include <stdio.h> int main() { int m=0,n=0; char c; while ((【 】)!='\n') { if (c>='A' && c<='Z') m++ ; if (c>='a' && c<='z') n++ ; } return 0; }
A、c=getchar()
B、getchar()
C、c==getchar()
D、scanf("%c",&c)

5、语句while (!E){ ......}; 中的表达式!E等价于( )。
A、E==0
B、E!=1
C、E!=0
D、E==1

6、以下程序段( )。 x=-1; do{ x=x*x; }while (!x);
A、是死循环
B、循环执行2次
C、循环执行1次
D、有语法错误

7、以下叙述正确的是( )。
A、do-while语句构成的循环不能用其它语句构成的循环来代替
B、do-while语句构成的循环只能用break语句退出
C、用do-while语句构成的循环,在while后的表达式为非零时结束循环
D、用do-while语句构成的循环,在while后的表达式为零时结束循环

8、有以下程序段: int n=0,p; do { scanf("%d",&p); n++; } while (p!=12345 && n<3); 此处do—while循环的结束条件是( )。
A、p的值不等于12345并且n的值小于3
B、p的值等于12345并且n的值大于等于3
C、p的值不等于12345或者n的值小于3
D、p的值等于12345或者n的值大于等于3

9、已知:int i=5,下列do-while循环语句的循环次数为( )。 do{ printf("%d\n",i--); i--; }while(i!=0);
A、0
B、1
C、5
D、无限

10、下面程序段( )。 x=3; do { y=x--; if(!y) { printf("%d",x); continue; } printf(”#”); }while(x>=1 && x<=2);
A、将输出##
B、将输出###
C、是死循环
D、含有不合法的控制表达式.

11、下面程序执行后的输出结果是( )。 #include <stdio.h> int main(){ char c='A'; int k=0; do{ switch(c++){ case'A':k++; break; case 'B':k--; case 'C':k+=2; break; case 'D':k%=2; continue; case 'E':k*=10; break; default:k/=3; } k++; }while (c<'G'); printf("k=%d",k); return 0; } ?
A、k=3
B、k=4
C、k=2
D、k=0

12、下面for循环语句( )。 int i,k; for (i=0,k=-1; k=1 ; i++,k++ ) printf("***");?
A、判断循环结束的条件非法
B、是无限循环
C、只循环一次
D、一次也不循环

13、下面程序执行后的输出结果是( )。 #include <stdio.h> int main() { int x=9; for(;x>0;x--){ if(x%3==0){ printf("%d",--x); continue; } } return 0; }?
A、741
B、852
C、963
D、875421

14、下面程序段的循环次数是( )。 for (i=2; i==0; ) printf("%d",i--);?
A、无限次
B、0次
C、1次
D、2次

15、下面程序执行后的输出结果是( )。 #include <stdio.h> int main() { int i,sum=0; for(i=1;i<6;i++) sum+=i; printf("%d",sum); return 0; }
A、不确定
B、0
C、14
D、15

16、若有以下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0) s=a; for(b=1;b<=c;b++) s=s+1; 则与上述程序段功能等价的赋值语句是( )。
A、s=a+b;
B、s=a+c;
C、s=s+c;
D、s=b+c;

17、下面程序执行后的输出结果是( )。 #include <stdio.h> int main() { int a=0,i; for(i=1;i<5;i++) switch(i) { case 0: case 3:a+=2; case 1: case 2:a+=3; default:a+=5; } printf("%d",a); return 0; }?
A、31
B、13
C、10
D、20

18、若变量已正确定义,不能完成求5!的程序段是( )。
A、for(i=1,p=1;i<=5;i++) p*=i;
B、for(i=1;i<=5;i++){ p=1; p*=i;}
C、i=1;p=1;while(i<=5){ p*=i; i++;}
D、i=1;p=1;do{ p*=i; i++;}while(i<=5);

19、下面程序段中,( )与其他三个程序段的作用不同。
A、k=1;s=0; while (1) { s+=k ; k=k+1; if (k>100) break ; } printf("%d",s);?
B、k=1;s=0; Repeat : s+=k ; if (++k<=100) goto Repeat; printf("%d",s);?
C、int k,s=0; for (k=1;k<=100;s+=++k); printf("%d",s);?
D、k=1;s=0; do s+=k; while (++k<=100); printf("%d",s);

20、以下不是死循环的程序段是( )。
A、int i=100; while (1) { i=i%100+1 ; if (i>100) break ; }
B、for ( ; ; ) ;
C、int k=0; do { ++k ; } while (k>=0);
D、int s=36; while (s) ; --s ;

21、以下是死循环的程序段是( )。
A、for (i=1;;) { if (i++%2==0) continue ; if (i++%3==0) break ; }
B、for (i=1;;) if (++i<10) continue ;
C、i=32767; do { if (i<0) break ; } while (++i) ;
D、i=1 ; while (i--);

22、do-while允许从外部转到循环体内。

23、do-while循环中,根据情况可以省略while。

24、for循环中三个表达式可以任意省略,while、do-while的表达式也是如此。

25、continue语句只能用于三个循环语句中。

26、for循环的循环体语句中,可以包含多条语句,但必须用大括号括起来。

27、写出下面程序执行后的运行结果。 #include <stdio.h> int main() { int i,k=19; while (i=k-1) { k-=3 ; if (k%5==0) { i++ ; continue ; } else if (k<5) break ; i++; } printf("i=%d,k=%d",i,k); return 0; } ?#include <stdio.h> int main() { int i,k=19; while (i=k-1) { k-=3 ; if (k%5==0) { i++ ; continue ; } else if (k<5) break ; i++; } printf("i=%d,k=%d",i,k); return 0; }#include <stdio.h> int main() { int i,k=19; while (i=k-1) { k-=3 ; if (k%5==0) { i++ ; continue ; } else if (k<5) break ; i++; } printf("i=%d,k=%d",i,k); return 0; }#include <stdio.h> int main() { int i,k=19; while (i=k-1) { k-=3 ; if (k%5==0) { i++ ; continue ; } else if (k<5) break ; i++; } printf("i=%d,k=%d",i,k); return

28、下面程序运行时从键盘上输入:420↙,写出程序的运行结果。 #include <stdio.h> int main() { char c; while ((c=getchar())!='\n') switch(c-'0') { case 0: case 1:putchar(c+2); case 2:putchar(c+3);break; case 3:putchar(c+4); default:putchar(c+1);break; } return 0; }

29、写出下面程序执行后的运行结果。 #include <stdio.h> int main() { int k=1,n=263 ; do { k*=n%10 ; n/=10 ; } while (n) ; printf("%d",k); return 0; }

30、写出下面程序执行后的运行结果。 #include <stdio.h> int main() { int i=5 ; do { switch (i%10) { case 4: i-- ; break ; case 6: i-- ; continue ; } i-- ; i-- ; printf("%d",i); } while (i>0); return 0; }

31、写出下面程序执行后的运行结果。 #include <stdio.h> int main() { int x,i ; for (i=1 ; i<=100 ; i++) { x=i; if (++x%2==0) if (++x%3==0) if (++x%7==0) printf("%d,",x); } return 0; }

32、写出下面程序执行后的运行结果。 #include <stdio.h> int main() { int i; for(i=0; i<5; i++) switch(i%2) { case 0: printf("1"); break; case 1: printf("0"); break; } return 0; }

33、下面程序按公式 求和并输出结果。请填空使程序完整、正确。 #include <stdio.h> int main(){ int k ; double s=0; for (k=1 ; k<=100 ; k++) s+=k ; for (k=1 ; k<=50 ; k++) s+=______; for (k=1 ; k<=10 ; k++) s+=1.0/k; printf("sum=%f",s); return 0; }

第15讲 循环的终止、加快和嵌套

课后测验:循环的终止、加快和嵌套

1、下面关于循环语句的描述中,( )是错误的。
A、循环体内可以包含有循环语句
B、循环体内必须同时出现break语句和continue语句
C、循环体内可以出现选择语句
D、循环体内可以是空语句

2、C语言的跳转语句中,对于break和continue说法正确的是( )
A、break语句只应用与循环体中
B、continue语句只应用于循环体中
C、break是无条件跳转语句,continue不是
D、break和continue的跳转范围不够明确,容易产生问题

3、下面程序段运行时从键盘上输入:2473↙,其输出结果是( )。 #include <stdio.h> int main() { int c; while ((c=getchar())!='\n') switch (c-'2') { case 0: case 1: putchar(c+4); case 2: putchar(c+4); break ; case 3: putchar(c+3); default: putchar(c+2); break ; } printf("\n"); return 0; }?
A、668977
B、668966
C、66778777
D、6688766

4、下面程序段中while循环的循环次数是( )。 int i=0; while (i<10) { if (i<1) continue; if (i==5) break; i++; }?
A、1
B、10
C、6
D、死循环,不能确定次数

5、下面程序执行后的输出结果是( )。 #include <stdio.h> int main() { int i=0,s=0; for (;;) { if(i==3||i==5) continue; if (i==6) break; i++; s+=i; }; printf("%d",s); return 0; } ?#include <stdio.h> int main() { int i=0,s=0; for (;;) { if(i==3||i==5) continue; if (i==6) break; i++; s+=i; }; printf("%d",s); return 0; }#include <stdio.h> int main() { int i=0,s=0; for (;;) { if(i==3||i==5) continue; if (i==6) break; i++; s+=i; }; printf("%d",s); return 0; }#include <stdio.h> int main() { int i=0,s=0; for (;;) { if(i==3||i==5) continue; if (i==6) break; i++; s+=i; }; printf("%d",s); return 0; }
A、10
B、13
C、21
D、死循环

6、下面程序执行后的输出结果是( )。 #include <stdio.h> int main() { int k=0,m=0,i,j; for (i=0; i<2; i++) { for (j=0; j<3; j++) k++ ; k-=j ; } m = i+j ; printf("k=%d,m=%d",k,m); return 0; }
A、k=0,m=3
B、k=0,m=5
C、k=1,m=3
D、k=1,m=5

第16讲 编程实现枚举算法

课后测验:编程实现枚举算法

1、下面程序的功能是计算两个整数的( )。 #include <stdio.h> int main() { int m,n,w; scanf("%d,%d",&m,&n); while (n) { w=m; m=n; n=w%n; } printf("%d",m); return 0; }
A、最大公约数
B、最小公倍数
C、m和n值交换
D、m和n的乘积

2、下面程序的功能是计算s=1+12+123+1234+12345+……+123456789,下划线处应填写( )。 #include <stdio.h> int main() { int t=0,s=0,i; for( i=1; i<=9; i++) { t=____________; s=s+t; } printf("s=%d",s); return 0; }
A、10*t+i
B、t+i
C、10*i+t
D、s*10+i

3、一个三位整数(100~999),若各位数的立方和等于该数自身,则称其为“水仙花数”(如:153=13+53+33),下面程序的功能是找出所有的这种数,下划线处应填写()。 #include <stdio.h> int main() { int n, a, b, c; /*n、a、b和c分别为三位数及其个位、十位和百位*/ scanf("%d",&n); for(c=1;c<=9;c++) for (b=0;b<=9;b++) for( 1 ?;a++) { n= 2 ; if(a*a*a+b*b*b+c*c*c== 3 ) printf("%d\n",n); } return 0; }
A、【1】 a=0;a<9 【2】 c*100+b*10+a 【3】 n
B、【1】 a=1;a<9 【2】 c*100+b*10+a 【3】 n
C、【1】 a=0;a<9 【2】 a*100+b*10+c 【3】 n
D、【1】 a=b+1;a<9 【2】 c*100+b*10+a 【3】 n

4、下面程序段的功能是计算1000!的末尾有多少个零。请填空使程序完整、正确。 提示:只要偶数乘5就会产生0,因为1000!中有一半是偶数,所以求1000!的末尾 有多少个零,其方法就是统计1000!中有多少5的因子。例如10有1个5的因子, 25有2个5的因子,100有2个5的因子等。 #include <stdio.h> int main() { int i,k,m; for (k=0,i=5; i<=1000; i+=5) { m = i ; while (_______________) { k++; m=m/5 ; } } return 0; } ?#include <stdio.h> int main() { int i,k,m; for (k=0,i=5; i<=1000; i+=5) { m = i ; while (【1 】) { k++; m=m/5 ; } } return 0; }

5、写出下面程序执行后的运行结果。 #include <stdio.h> int main() { int i=0,a=0; while(i<40) { for(;;) { if((i%10)==0) break; else i--; } i+=11; a+=i; } printf("%d",a); return 0; }

第17讲 调用函数-返回与参数传递

课后测验: 调用函数-返回与参数传递

1、以下关于函数的叙述中正确的是( )。
A、每个函数都可以被其它函数调用(包括main函数)
B、每个函数都可以被单独编译
C、每个函数都可以单独运行
D、在一个函数内部可以定义另一个函数

2、对于函数,正确的说法是( )。
A、必须有形式参数
B、必须有返回信息
C、必须有返回语句
D、必须包含函数体

3、以下叙述中正确的是( )。
A、函数的定义可以嵌套,但函数的调用不可以嵌套
B、函数的定义不可以嵌套,但函数的调用可以嵌套
C、函数的定义和函数的调用均不可以嵌套
D、函数的定义和函数的调用均可以嵌套

4、以下叙述中正确的是( )。
A、C语言编译时不检查语法
B、C语言的子程序有过程和函数两种
C、C语言的函数可以嵌套定义
D、C语言所有函数本质上都是外部函数

5、以下函数定义正确的是( )。
A、double f(int x,int y) { z=x+y ; return z ; }
B、double f(int x,y) { double z=x+y ; return z ; }
C、double f(x,y) { int x, y ; double z ; z=x+y; return z ; }
D、double f(int x,int y) { double z ; z = x+y ; return z ; }

6、若调用一个函数int f(),且此函数中没有return语句,则正确的说法是( )。
A、该函数没有返回值
B、该函数返回一个系统默认值
C、该函数返回一个确定的值
D、该函数返回一个不确定的值

7、若定义函数: fun(int a,float b) { return a+b; } 则该函数的返回类型是( )。
A、void
B、int
C、float
D、不确定

8、C语言规定,函数返回值的类型是由( )决定的。
A、return语句中的表达式类型
B、调用该函数时的主调函数
C、调用该函数时由系统临时
D、在定义函数时所指定的函数类型

9、对于函数返回类型,不正确的说法是( )。
A、可以是int类型
B、可以是数组类型
C、可以是char类型
D、可以是void类型

10、若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是( )。
A、函数调用可以作为独立的语句存在
B、函数调用可以作为一个函数的实参
C、函数调用可以出现在表达式中
D、函数调用可以作为一个函数的形参

11、基本类型变量做实参时,它和对应的形参之间的数据传递方式是( )。
A、值传递
B、地址传递
C、由实参传给形参,再由形参传给实参
D、由函数定义指定传递方式

12、以下叙述中错误的是( )。
A、实参可以是常量、变量或表达式
B、形参可以是常量、变量或表达式
C、实参可以为任意类型
D、如果形参与实参的类型不一致,以形参类型为准

13、以下函数调用语句中,含有的实参个数是( )。 Fcalc(exp1,(exp3,exp4,exp5));
A、1
B、2
C、3
D、4

14、在函数调用时,以下叙述中正确的是( )。
A、函数调用后必须带回返回值
B、实际参数和形式参数可以同名
C、函数间的数据传递不可以使用全局变量
D、主调函数和被调函数总是在同一个文件里

15、下面程序执行后的输出结果是( )。 #include <stdio.h> void F(int x) { return (3*x*x); } int main(){ printf("%d",F(3+5)); return 0; }
A、192
B、29
C、25
D、编译出错

16、设函数f的定义形式为: void f(char ch, float x ) { ...... } 则以下对函数f的调用语句中,正确的是( )。
A、f("abc",3.0);
B、t=f('D',16.5);
C、f('65',2.8);
D、f(32,32);

17、C语言函数返回类型的默认定义类型是__________(使用类型标识符描述)。

18、可以将被调函数中获得的值返回给主调函数的语句是__________(使用C语言保留字描述)。

19、函数fun的功能是计算 double fun(double x,int n) { int i; double y=1; for(i=1;i<=n;i++) y=y*x; return y; } 主函数中已经正确定义m,a,b变量并赋值,调用fun函数计算: 的调用语句为 ______________________________(注意保持原算式的各操作数和运算符顺序,不添加非必需的运算符)。

20、若函数定义为: int data() { float x=9.9; return(x); } 则函数返回的值是__________。

第18讲 调用函数-原型与声明

课后测验:调用函数-原型与声明

1、若各选项中所用变量已正确定义,函数fun中通过return语句返回一个函数值,以下选项中错误的程序是( )。
A、int main() { …… x=fun(2,10); ……} float fun(int a,int b){ ……}
B、float fun(int a,int b){ ……} int main() { …… x=fun(i,j); ……}
C、float fun(int,int); int main() { …… x=fun(2,10); ……} float fun(int a,int b){ ……}
D、int main() { float fun(int i,int j); …… x=fun(i,j); ……} float fun(int a,int b){ ……}

2、若程序中定义了以下函数: double f(double a,double b) { return (a+b); } 并将其放在调用语句之后,则在调用之前应该对该函数进行函数原型说明,以下选项 中错误的说明是( )。
A、double f(double a,b);
B、double f(double,double);
C、double f(double b,double A);
D、double f(double x,double y);

3、关于函数原型声明,以下叙述中错误的是( )。
A、如果函数定义出现在函数调用之前,可以不必加函数原型声明
B、如果在所有函数定义之前,在函数外部已做了声明,则各个主调函数不必再做函数原型声明
C、函数在调用之前,一定要给出函数原型或函数定义,保证编译系统进行调用检查
D、标准库函数不需要函数原型声明

4、在C语言中,计算 正确的是( )。
A、x^y
B、pow(x,y)
C、x**y
D、power(x,y)

5、有以下程序: #include <stdio.h> void f(int n); int main() { void f(int n); f(5); return 0; } void f(int n) { printf("%d\n",n);} 以下叙述中错误的是( )。
A、若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f
B、若在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调用函数f
C、对于以上程序,编译时系统会提示出错信息:“提示对f函数重复说明”。
D、函数f无返回值,所以可用void将其类型定义为无值型

第19讲 调用函数-调用形式

课后测验:调用函数-调用形式

1、下列哪个类型函数不适合声明为内联函数( )。
A、函数体语句较多
B、函数体语句较少
C、函数执行时间较短
D、函数调用比较频繁

2、在( )情况下适宜采用inline定义内联函数。
A、函数体含有循环语句
B、函数体含有递归语句
C、需要加快程序的执行速度
D、函数代码多、不常调用

3、在函数调用过程中,如果函数A调用了函数 B,函数B又调用了函数A,则( )。
A、称为函数的直接递归调用
B、称为函数的间接递归调用
C、称为函数的循环调用
D、C语言中不允许这样的调用

4、下面程序执行后的输出结果是( )。 #include <stdio.h> char f(char x , char y) { if(x>y) return y; else return x; } int main() { char a='9',b='8',c='7',d='6'; printf("%c",f(f(a,b),f(c,d))); return 0; }
A、9
B、8
C、7
D、6

5、有以下程序段: int fun1(double a) { return a*=a;} int fun2(double x,double y) { double a=0,b=0; a=fun1(x); b=fun1(y); return (int)(a+b); } 且double w;执行语句w=fun2(1.1,2.0);后变量w的值是( )。
A、5.21
B、5
C、5.0
D、0.0

6、下面程序执行后的输出结果是( )。 #include <stdio.h> void fun(int x, int y, int z) { z=x*x+y*y; } int main() { int a=31; fun(5,2,a); printf("%d",a); return 0; }
A、0
B、29
C、31
D、无定值

7、下面程序执行后的输出结果是( )。 #include <stdio.h> long fib(int n) { if(n>2) return (fib(n-1)+fib(n-2)); else return(2); } int main() { printf("%d",fib(3)); return 0; }
A、2
B、4
C、6
D、8

8、下面程序执行后的输出结果是( )。 #include <stdio.h> int f(int n) { if (n==1) return 1; return f(n-1)+1;} int main() { int i,j=0; for(i=1;i<3;i++) j+=f(i); printf("%d",j); return 0; }
A、1
B、2
C、3
D、4

9、设存在函数int max(int,int)返回两参数中较大值,若求22,59,70三者中最大值, 下列表达式不正确的是( )。
A、int m = max(22,max(59,70));
B、int m = max(max(22,59),70);
C、int m = max(22,59,70);
D、int m = max(59,max(22,70));

10、对于以下递归函数f,调用f(4)的返回值是__________。 int f(int n) { if (n) return f(n-1)+n; else return n; }
A、无穷递归
B、4
C、10
D、14

第20讲 设计函数-函数间的数据传递(1)

课后测验:设计函数-函数间的数据传递(1)

1、以下叙述中错误的是( )。
A、在不同函数中可以使用相同名字的变量
B、形式参数只在本函数范围内有定义
C、在函数内的复合语句中定义的变量在本函数范围内有定义
D、全局变量在函数内有同名变量定义时,在该函数范围内被屏蔽

2、在某源程序文件中,若全局变量与局部变量同名,则( )。
A、视为同一个变量
B、变量作用域不确定
C、不允许
D、允许

3、如果在一个函数的复合语句中定义了一个变量,则该变量( )。
A、只在该复合语句中有效
B、在该函数中有定义
C、在本程序范围内有定义
D、为非法定义

4、下面程序执行后的输出结果是( )。 #include <stdio.h> int a=3; int main() { int s=0; { int a=5; s+=a++; } s+=a++; printf("%d",s); return 0; }
A、7
B、8
C、10
D、11

5、以下叙述中错误的是( )。
A、形参的存储单元是动态分配的
B、函数中的局部变量都是动态存储
C、全局变量都是静态存储
D、动态分配变量的存储空间在函数结束调用后就被释放了

6、以下叙述中错误的是( )。
A、全局变量、静态变量的初值是在编译时指定的
B、静态变量如果没有指定初值,则其初值是0
C、局部变量如果没有指定初值,则其初值不确定
D、函数中的静态变量在函数每次调用时,都会重新设置初值

7、若函数中局部变量的值经函数调用后仍然保留,则该局部变量定义为( )。
A、自动变量
B、内部变量
C、外部变量
D、静态变量

8、若变量定义时未初始化,则其值不确定的是( )。
A、静态全局变量
B、局部变量
C、静态局部变量
D、全局变量

9、以下叙述中正确的是( )。
A、局部变量说明为static存储类型,其生存期将得到延长
B、全局变量说明为static存储类型,其作用域将被扩大
C、任何存储类型的变量在未赋初值时,其值都是不确定的
D、形参可以使用的存储类型说明符与局部变量完全相同

10、全局变量的存储类型可以定义为( )。
A、auto或static
B、extern或register
C、auto或extern
D、extern或static

11、以下只有在使用时才为该类型变量分配内存的存储类型是( )。
A、auto和 static
B、auto和 register
C、register和 static
D、extern和 register

12、下面程序执行后的输出结果是( )。 #include <stdio.h> int f() { static int i=0; int s=1; s+=i; i++; return s; } int main() { int i,a=0; for(i=0;i<5;i++) a+=f(); printf("%d",a); return 0; }
A、20
B、24
C、25
D、15

13、下面程序执行后的输出结果是( )。 #include <stdio.h> int a=2; int f(int n) { static int a=3; int t=0; if(n%2) { static int a=4; t+=a++; } else { static int a=5; t += a++; } return t+a++; } int main() { int s=a, i; for(i=0; i<3; i++) s+=f(i); printf("%d", s); return 0; }
A、24
B、26
C、28
D、29

14、凡在函数中未指定存储类别的局部变量,其默认的存储类别为( )。
A、auto
B、register
C、static
D、extern

15、被调用函数执行结束时,此函数中定义的( )类型的变量不被释放。
A、auto
B、register
C、static
D、所有的存储类型

第21讲 设计函数-函数间的数据传递(2)

课后测验:设计函数-函数间的数据传递(2)

1、自动型局部变量分配在( )。
A、内存的数据区中
B、CPU的通用寄存器中
C、内存的程序区中
D、内存的堆栈区中

2、用于存放程序执行的机器指令的内存段是( )。
A、栈
B、代码段
C、堆
D、未初始化的数据段

3、程序在内存中的布局不包括( )。
A、栈
B、堆
C、代码段
D、寄存器

4、C程序中所有已经赋初值的全局变量和静态变量被存放在内存的()
A、已初始化的数据段
B、代码段
C、未初始化的数据段
D、栈

5、C语言中基本类型的常量保存在内存的( )
A、已初始化的数据段
B、代码段
C、未初始化的数据段
D、栈

6、C程序中所有未赋初值的全局变量和静态变量被存放在内存的( )
A、已初始化的数据段
B、代码段
C、未初始化的数据段
D、栈

7、C程序中所有局部的非静态变量、临时变量以及函数形参被存放在内存的( )
A、堆
B、代码段
C、未初始化的数据段
D、栈

8、C程序中动态分配的存储空间位于内存的( )
A、堆
B、代码段
C、未初始化的数据段
D、栈

9、C源程序经过编译和连接后,成为二进制形式的可执行文件,称为程序映像。

10、进程即为运行程序时,由操作系统载入到计算机内存中的可执行文件。

第22讲 设计函数-接口与实现分离

课后测验:设计函数-接口与实现分离

1、对象初始化指创建对象时给它提供初始值。

2、C语言规定给对象设置的初始值可以是变量。

3、C语言规定未初始化的全局对象和静态局部对象其初值由0填充。

4、C语言规定未初始化的局部对象其初始值对于数值型来说为0。

5、C语言允许对对象进行多次定义,但需保证多次定义一致。

6、C语言中对一个对象进行多次声明是合法的,但要保证多次声明一致。

7、在一个项目的多个源程序文件中,只需要出现一次对所调用函数的声明即可支持项目全部源程序文件对该函数进行调用。

8、对象的存储空间可以通过对象声明获得。

9、可以在对象声明时对其进行初始化。

10、C语言支持将对象的定义和声明分离,以适应多文件的程序结构。

第23讲 编写规模化程序

课后测验:编写规模化程序

1、C语言支持在一个函数定义前加上( )修饰,将函数设置成内部函数。
A、auto
B、static
C、private
D、internal

2、如果在一个源文件中定义的函数,只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用,则说明这个函数为( )。
A、私有函数
B、内部函数
C、外部函数
D、库函数

3、支持在另一个文件中调用的函数其类型是( )。
A、私有函数
B、内部函数
C、外部函数
D、库函数

4、C语言编译器编译时的基本单位是( )。
A、函数
B、源文件
C、项目
D、语句

5、C语言连接器的工作不包括( )。
A、检查全局函数或全局变量是否在不同文件中重复定义
B、检查全局范围内是否有相同名字的对象
C、检查在多个目标代码或库函数中是否存在全局函数和全局变量的定义
D、检查在多个目标代码或库函数中是否存在内部函数和局部变量的重复定义

6、C语言的头文件中不包括( )。
A、函数声明
B、全局性常量信息
C、宏定义
D、函数定义

7、C语言编译器的功能一般不包括( )。
A、预编译头文件
B、增量编译
C、编译缓存
D、规范代码风格

第24讲 编程任务的自动化工具

课后测验:编程任务的自动化工具

1、以下叙述中错误的是( )。
A、预处理命令行都必须以#开始
B、在程序中凡是以#开始的语句行都是预处理命令行
C、C程序在执行过程中对预处理命令行进行处理
D、预处理命令行可以出现在C程序中任意一行上

2、以下叙述中正确的是( )。
A、在程序的一行上可以出现多个有效的预处理命令行
B、使用带参数的宏时,参数的类型应与宏定义时的一致
C、宏替换不占用运行时间,只占用编译时间
D、C语言的编译预处理就是对源程序进行初步的语法检查

3、以下有关宏替换的叙述中错误的是( )。
A、宏替换不占用运行时间
B、宏名无类型
C、宏替换只是字符替换
D、宏名必须用大写字母表示

4、设#define L(x) 2*3.14*x,则L(x)是( )。
A、函数名
B、函数调用
C、无参数的宏名
D、带参数的宏名

5、设#define P(x) x/x执行语句printf("%d",P(4+6));后的输出结果是( )。
A、1
B、8.5
C、11
D、11.5

6、若有宏定义#define MOD(x,y) x%y ,下面程序段的结果是( )。 int z,a=15; float b=100; z=MOD(b,a); printf("%d",z++);
A、11
B、10
C、6
D、语法错误

7、在任何情况下计算平方都不会引起二义性的宏定义是( )。
A、#define POWER(x) x*x
B、#define POWER(x) (x)*(x)
C、#define POWER(x) (x*x)
D、#define POWER(x) ((x)*(x))

8、下面程序执行后的输出结果是( )。 #include <stdio.h> #define ADD(x) x+x int main() { int m=1,n=2,k=3,sum ; sum = ADD(m+n)*k ; printf("%d",sum); return 0; }
A、9
B、10
C、12
D、18

9、下面程序执行后的输出结果是( )。 #include <stdio.h> #define X 5 #define Y X+1 #define Z Y*X/2 int main() { int a=Y; printf("%d ",Z); printf("%d",--a); return 0; }
A、7 6
B、12 6
C、12 5
D、7 5

10、下面程序执行后的输出结果是( )。 #include <stdio.h> #define DOUBLE(r) r*r int main() { int x=1,y=2,t; t = DOUBLE(x+y); printf("%d",t); return 0; }
A、5
B、6
C、7
D、8

11、定义宏将两个float类型变量的数据交换,下列写法中最好的是( )。
A、#define jh(a,b) t=a;a=b;b=t;
B、#define jh(a,b) { float t;t=a;a=b;b=t;}
C、#define jh(a,b) a=b;b=a;
D、#define jh(a,b,t) t=a;a=b;b=t;

12、若有宏定义: #define N 3 #define Y(n) ((N+1)*n) 则表达式2*(N+Y(5+1))的值是( )。
A、出错
B、42
C、48
D、54

13、已知宏定义#define p(x,y,z) x=y*z;则宏替换p(a,x+5,y-3.1)应为( )。
A、a=x+5*y-3.1;
B、a=(x+5)*(y-3.1);
C、a=

中国大学C程序设计_4

中国大学C程序设计是国内一门非常受欢迎的计算机编程课程,它对于初学者来说非常友好。本课程主要讲授C语言编程的基础知识和基本技能,是一门适合初学者的编程课程。

课程大纲

  • C语言基础
  • 条件语句和循环语句
  • 数组、指针和字符串
  • 函数和结构体
  • 文件操作和预处理器
  • 动态内存分配
  • 多文件编程和调试技巧

学习方法

学习C程序设计需要掌握一定的编程思想和基础知识。以下是几种常见的学习方法:

  1. 练习编写程序:编写程序是掌握编程语言的最好方法。通过编写程序可以加深对于语法的理解和记忆。
  2. 观看教学视频:通过观看教学视频可以更加直观地了解C程序设计。
  3. 参考书籍:参考书籍提供了丰富的基础知识和实践案例,可以帮助学习者更加深入地了解C程序设计。
  4. 参加课程培训:课程培训可以让学习者更快地掌握C程序设计的知识。

学习资源

以下是一些常用的C程序设计学习资源:

    总结

    C程序设计对于初学者来说是一个非常好的编程课程,通过学习C程序设计可以让学习者更加深入地了解计算机编程的基础知识和技能。同时,本课程还建议学习者多加练习,从而掌握更加熟练的编程技能。