版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家开放大学《C语言程序设计》章节测试参考答案
第一章C语言概述
自测练习一:C语言字符集自测练习
1.在C语言字符集中,包含有全部26个英文大写字母和对应的小写字母。(J)
2.在C语言字符集中,一个大写英文字母和它的小写英文字母被视为不同的字符。
(V)
3.在C语言程序中,ABC和abc被作为同一标识符使用。(义)
自测练习二:C语言字符集自测练习
1.在C语言中,保留字是有专门含义和作用的,不能作为一般标识符使用。(J)
2.在C语言中,作为标识符的第一个字符只能是英文字母或下划线,不能是数字
字符。(V)
3.C语言中使用的字符常量,其起止标记符是()。
a.双引号
b.尖括号
c.单引号
d.中括号
4.C语言中使用的字符串常量,其起止标记符是()«
a.双引号
b.中括号
c.尖括号
d.单引号
自测练习三:C语句分类自测练习
1.在C语言中,一条简单语句的结束符是()。
a.分号
b.空格
c.冒号
d.逗号
2.在C语言中,每条复合语句的开始标记字符为()0
a.<
b.[
c.(
d.{
3.不符合C语言规定的复合语句是()o
a.{x=0;}
b.{)
c.{;}
d.{y=10}
4.C语言中的选择类语句有两条,它们是()。
a.else和case
b.if和switch
c.if和else
d.switch和case
自测练习四:函数分类与使用自测练习
1.在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为()o
a.name
b.main
c.MAIN
d.function
2.C语言程序中的基本功能模块为()。
a.标识符
b.函数
c.表达式
d.语句
3.一个函数定义所包含的两个部分是()。
a.函数头和函数体
b.函数原型和函数体
c.函数名和参数表
d.函数头和函数尾
4.一个程序文件开始使用的每条预处理命令,其首字符必须是()»
a.#
b.@
c.%
d.$
5.在一个程序文件中,若要使用#include命令包含一个系统头文件,则此头文件
所使用的起止定界符为一对()o
a.双引号
b.花括号
c.尖括号
d.单引号
6.在一个函数定义中,函数体的格式是一条复合语句。(J)
7.一个函数必须返回一个值,不允许定义不返回任何值的函数。(义)
8.若要在程序文件中使用数学函数,则需要引入的系统头文件为math.h。(V)
9.若要在程序文件中使用标准输入和输出函数,则需要引入的系统头文件为
stdio.ho(V)
自测练习五:C语言程序的层次结构自测练习
1.在C语言程序中,单行或行尾注释使用的标记符为()。
a.//
b.**
c./*
d.*/
2.在C语言程序中,多行注释使用的结束标记符为().
a./*
b.**
c.*/
d.//
3.在程序文件中添加注释内容是为了增强程序的可读性。(J)
4.在一行中出现多条语句时,注释语句只能为最后一条语句。(J)
自测练习六:标准输出函数printf()的使用自测练习
1.用于输出表达式值的标准输出函数是()o
a.print()
b.scanf()
c.output()
d.printf()
2.在printf()函数调用的格式字符串中,每个格式符的先导字符为()o
a.#
b.@
c.$
d.%
3.在printf()函数调用的格式字符串中,若使用格式符为“%d”,则对应输出的数
据类型为()。
a.int
b.char
c.float
d.double
4.在printf()函数调用的格式字符串中,若使用格式符为“%f”,则对应输出的数
据类型为()o
a.char
b.float
c.int
d.double
5.在printf()函数调用的格式字符串中,若使用格式符为“%5d”,则规定对应输
出的数据占用的字符位置个数为()=
a.5
b.4
c.6
d.3
6.在利用printf。函数向屏幕输出数据时,需要在参数表的开始位置使用相应的格
式字符串。(V)
7.在uprintf("%d-%d=%d”,x,y,x-y);”语句所使用的格式字符串中,包含有3个
格式符。(J)
8.在执行"printf("s=%s\n","abc");”语句时,输出结果为s=abc。(V)
9.在“printf("s=%c\n","abc");"语句中,格式符的使用同后面的输出数据相适合。
(X)
10.在执行“printf("%d-%d=%d",x,y,x-y);”语句时,其输出的前两个数据值之
间将采用逗号分开。(X)
自测练习七:标准输入函数scanf()的使用自测练习
1.程序运行中需要从键盘上输入多于一个数据时,若不特别规定分隔符,则输入
的各数据之间所使用的分隔符为()o
a.空格或回车
b.空格或逗号
c.逗号或回车
d.逗号或分号
2.用于从键盘上为变量输入值的标准输入函数是()o
a.print()
b.scanf()
c.printf()
3.在scanf()函数调用的格式字符串中,每个格式符的先导字符为()。
a.%
b.#
c.@
d.$
4.在scanf()函数调用的格式字符串中,若使用格式字符串为"%d,%d",则规定
输入的两个数据之间的分隔符为()0
a.$
b.#
c.@
d.%
5.在利用scanf()函数从键盘输入数据时,需要在参数表的开始位置使用相应的格
式字符串。(V)
6.在“scanf("%d%d",&x,&y);”语句所使用的格式字符串中,包含有2个格式符。
(V)
7.在执行“scanf("%d%d",&x,&y);”语句时,需要从键盘上输入2个整数。(V)
自测练习八:C语言程序的上机操作过程自测练习
1.C语言源程序文件的扩展名为()。
a.exe
b.obj
c.c
d.cpp
2.每个C语言程序文件的编译错误的类型有()0
a.2种
b.3种
c.1种
d.4种
3.每个C程序文件在编译时可能出现有警告性错误,其对应的标识符号为()。
a.err
b.error
c.warn
d.warning
4.一个C语言程序只能够包含一个程序源文件。(X)
5.一个C语言程序只能够包含一个用户头文件。(X)
6.在C语言程序上机操作的过程中,编译程序的操作步骤之后是连接操作。(V)
第一章综合练习
一、单项选择题
1.C语言中的循环类语句有3条,它们是()o
A.for,if,while
B.for,while,do
C.while,do,switch
D.for,break,do
2.C语言中的跳转类语句有四条,它们是gotojetum和()。
A.break,const
B.static,continue
C.break,continue
D.while,extern
3.当不需要函数返回任何值时,则所使用的返回类型为()o
A.int
B.union
C.void
D.Void
4.在一个函数定义中,函数头包括的3个部分依次为函数类型、函数名和()。
A.表达式
B.语句
C.函数体
D.参数表
5.在一个程序文件的开始,若需要使用一个包含命令包含一个头文件时,则命
令标识符为()»
A.#clude
B.#const
C.#include
D.#defile
6.在#include预处理命令中,不可以包含()。
A.系统头文件
B.程序文件
C.用户头文件
D.目标文件
7.在printf()函数调用的格式字符串中,若使用格式符为“%6.2f”,则规定对应
输出的数据占用的字符位置个数为()。
A.5
B.6
C.4
D.2
8.在printf()函数调用的格式字符串中,若使用格式符为“%6.2f”,则规定对应
输出的数据中,其小数部分占用的字符位置个数为()。
A.5
B.6
C.4
D.2
9.在printf()函数调用的格式字符串中,若使用格式符为“%6.2f”,则规定对应
输出的数据中,其整数部分占用的字符位置个数为()。
A.6
B.4
C.3
D.2
10.在scanf()函数调用的格式字符串中,若使用格式符为“%f”,则对应输入的
数据类型为()。
A.char
B.int
C.float
D.double
11.在scanf()函数调用的格式字符串中,若使用格式符为“%Lf”,则对应输入
的数据类型为()。
A.char
B.int
C.float
D.double
12.每个C程序文件在编译时可能出现有严重性错误,其对应的标识符号为
()。
A.warning
B.error
C.warn
D.err
13.在VC++环境下,为运行一个程序而建立的工作区文件的扩展名为()。
A.obj
B.exe
C.dsw
D.dsp
二、判断题
1.在c语言中,作为标识符的第一个字符可以是英文字母、数字或下划线字符。
(X)
2.在C语言中,标识符中的非首字符可以是英文字母、数字或下划线字符。(V)
3.当需要在程序文件中引入用户定义的头文件时,使用的不是#include命令。(X)
4.使用#include命令只能包含头文件,不能包含其他任何文件。(X)
5.注释语句的内容只会出现在源程序文件中,不会出现在编译后而生成的目标
代码文件中。(J)
6.一条注释语句的最后必须使用分号结束。(X)
7.源程序文件被编译成目标文件后,其目标文件中也存在有对应的注释内容。
(X)
8.源程序文件被编译成目标文件后,源程序文件中的注释语句仍然存在。(J)
9.在一条注释语句中,除了注释内容外,不需要使用任何特定的标记符。(X)
10.多行注释语句的开始和结束标记符可以互换使用。(X)
11.在执行“printf("%5d",x);”语句时,其输出的x的值所占用的显示宽度将大
于等于5个字符位置。(V)
12.在执行“printf("%6d",x);"语句时,其输出的x的值所占用的显示宽度将小
于6个字符位置。(X)
13.在执行“printf("%8.2f”,x);”语句时,其输出的x的值所占用的显示宽度将
大于等于8个字符位置。(X)
14.在“scanf("%d%d",&x,&y);”语句中,x和y变量均为整数类型。(V)
15.在“scanf("%s",x);"语句中,x变量不是字符指针类型。(X)
16.在“scanf("%d-%d=%d”,&x,&y,&z);”语句中,有语法错误。(X)
17.在C语言程序上机操作的过程中,连接程序的操作步骤之前是编译程序。(V)
18.在C语言程序上机操作的过程中,需要对每个用户头文件进行单独的编译
操作。(X)
19.在C语言程序上机操作的过程中,不能够对用户头文件进行单独的编译操
作。(V)
第二章基本数据类型和表达式
自测练习一:数据类型自测练习
l.char类型的长度为()。
a.1
b.3
c.4
d.2
2.常数120的数据类型为()。
a.双精度型
b.短整型
c.长整型
d.整型
3.一个无符号字符类型的值域范围是()o
a.-127到255
b.0到255
c.1至U255
d.-128到+127
4.广义整数类型包括短整型、标准整型和长整型3种。(X)
5.短整型、标准整型和长整型的长度分别为2、4和8。(X)
自测练习二:常量自测练习
1.数值常量0x62的表示方式为()。
a.八进制
b.十进制
c.二进制
d.十六进制
2.在C语言中,表示换行符的转义字符为()0
a.\r
b.\f
c.\m
d.\n
3.字符串"ItVsV"中包含的字符个数为()1.
a.8
b.7
c.6
d.5
4.执行“printf("%c",B+2);”语句后得到的输出结果为(
a.D
b.B
c.C
d.A
5.常数3.26是双精度浮点数。(X)
6.常数3.26f是单精度浮点数。(义)
7.浮点数包括单精度浮点数和双精度浮点数两种。(J)
8.常数3.26是双精度浮点数。(X)
自测练习三:变量自测练习
1.要定义a和b为两个整型变量,则使用的定义语句为()。
a.inta:b;
b.intab;
c.inta,b;
d.inta;b;
自测练习四:运算符和表达式自测练习
1.运算符优先级最高的是()。
a./
b.II
c.++
d.%
2.下列数值中最小值是()。
a.28/8
b.28%8
c.35/3
d.35%3
3.已知x的初值为15,则下列各表达式中的最小值为()。
a.x*=2
b.x+=10
c.x/=2
d.x%=20
4.若x=5,y=10,则计算y*=++x表达式后,y的值为()。
a.40
b.60
c.50
d.55
5.设x和y均为逻辑值,则x&&y为真的条件是()。
a.其中一个为假
b.它们均为假
c.它们均为真
d.其中一个为真
6.x<=10的相反表达式为()。
a.x>=10
b.x!=10
c.x>0
d.x>10
7.表达式(float)25/4的值为6。(X)
8.表达式x=x+y表示成复合赋值表达式为x=+y。(X)
9.增量表达式++y表示成赋值表达式为y=y+lo(V)
10.表达式sizeof(25)的值等于4。(J)
11.逻辑表达式(x>3&&x<10)的相反表达式为(x<=3||x>=10)o(V)
自测练习五:一些系统函数的使用自测练习
1.函数pow(4,3)的值为()。
a.64.0
b.27
c.12.0
d.56
2.假定x=4.6,则函数floor(x)的值为()。
a.5.0
b.4.0
c.4.6
d.4.5
3.正弦函数sin48在C语言的表示为()o
a.sin(48*3.14159)
b.sin(48)
c.sin(48/180.0)
d.sin(48*3.14159/180)
4.在C语言中,求一个实数的绝对值的数学函数为fabs(x)。(V)
5.已知x=-25,则abs(x)的值为25。(V)
6.在C语言中,正弦、余弦或正切函数的参数的度量单位是度。(义)
第二章综合练习
一、单项选择题(1-12题每题3分,13-16题每题4分,共48分)
Lint类型的长度为()o
A.1
B.2
C.4
D.8
2.常数425的数据类型为()o
A.整型
B.单精度型
C.双精度型
D.长双精度型
3.一个有符号字符类型的值域范围是()。
A.-128到+127
B.0至U255
C.-127到255
D.1到255
4.字符串"Its\40\n"的长度为()0
A.5
B.6
C.7
D.8
5.实数340.25对应的规格化浮点数为()o
A.340.25
B.34.025el
C.3.4025e2
D.0.34025e3
6.要利用const保留字定义整型常量ABC的值为10,则对应的定义语句为()。
A.constintABC10;
B.constintABC,10;
C.constintABC;10;
D.constintABC=10;
7.要利用#define命令定义ABC常量的值为100,则对应的命令格式为()。
A.#defineABC=100
B.#defineABC==100
C.#defineABC100
D.#defineABC;100
8.下列数值中最大值是()o
A.28/8
B.35/3
C.28%8
D.35%4
9.在下面运算符中,优先级最高的是()。
A.!
B.&&
C.H
D.!=
10.设有语句序列为“inta=12;a+=a*a;",则执行结束后,a的值为()。
A.12
B.144
C.156
D.288
11.在C语言中,用于比较大小的关系运算符的总数为()。
A.3
B.4
C.5
D.6
12.x>0&&y<=5的相反表达式为()。
A.x<=0||y>5
B.x>0||y<=5
C.x<=0&&y>5
D.x<0&&y!=5
13.假定x是一个逻辑量,则(x&&!x)和(x||!x)的值分别为()o
A.1和1
B.0和0
C.0和1
D.1和0
14.假定x=4.6,则函数ceil(x)的值为()。
A.4.0
B.4.6
C.4.5
D.5.0
15.表达式floor(2.3457*100+0.5)/100的值为()。
A.2.35
B.2
C.2.34
D.2.3457
二、判断题(每题4分,共52分)
16.常数3.26e4是双精度浮点数。(V)
17.浮点数只有单精度表示,没有双精度表示。(X)
18.定点数包括单精度定点数和双精度定点数两种。(J)
19.定义符号常量只有一种方法,就是采用预处理命令#define的方法。(义)
20.使用const语句定义一个符号常量时,则必须对它同时进行初始化。(J)
21.在一条变量定义语句中,定义的变量和赋给它的初值之间只能使用等号(=)。
(V)
22.假定x=5,则表达式2+x++的值为7。(V)
23.表达式(int)14.6%5的值为0。(义)
24.表达式x=x+l表示成增量表达式为x++o(X)
25.假定x=5,则执行“a=(x?10:20);”语句后a的值为10。(V)
26.逻辑表达式(a>b||b==5)的相反表达式为(a>b&&b==5)。(X)
27.在C语言中,求一个整数的绝对值的数学函数为abs(x)。(V)
28在C语言中,退出程序运行的系统函数为exit。。(V)
第三章流程控制语句
自测练习一:if条件语句自测练习
1.若x的值为5,则执行“if(x>10)x++;elsex--;”语句后,x的值为()。
a.4
b.6
c.3
d.5
2.若x的值为-10,则执行“if(x)x++;elsex-;”语句后,x的值为(2
a.-9
b.-ll
c.-10
d.O
3.在if语句中,可以带有else子句,也可以省略它。(X)
4.在if语句中,每个else关键字与它前面同层次并且最接近的if关键字相配套。
(X)
5.执行下面程序的输出结果为
#include<stdio.h>
voidmain(){
inta=25,b=18;
if(a>b)printf("%s\n","a>b");
if(a==b)printf("%s\n","a==b");
if(a<b)printf("%s\n","a
答案:a>b
6.执行下面程序的输出结果为
#includestdio.h>
#include<stdio.h>
voidmain(){
inta=18,b=4,c=0;
if(a/b){c+=a/b;c+=a%b;}
if(a%b){a=a/b;b=a%b;}
printf(H%d'\a+b+c);
)
答案:a>b
自测练习二:switch开关语句自测练习
1.在switch语句的每个case块中,假定都是以break语句结束的,则此switch语
句容易被改写成语句()o
a.if
b.while
c.do
d.for
2.每个C语言程序文件的编译错误的类型有()o2.在switch语句中,每个保
留字case后面的表达式必须是()o
a.函数调用
b.变量种
c.一般表达式
d.常量
3.执行下面程序的输出结果为
#include<stdio.h>
voidmain(){
intx=5,y=0;
switch(2*x-3){
case4:y+=x;break;
case7:y+=2*x+l;break;
case10:y+=3*x;break;
printf(ny=%d\nH,y);
)
答案:y=U
4.执行下面程序的输出结果为
#include<stdio.h>
voidmain(){
intx=9,y=0;
switch(x%3){
case0:y+=x;
case1:y+=2*x+l;
case2:y+=3*x;break;
default:y+=x-l;
)
printf("y=%d\n",y);
)
答案:y=55
自测练习三:foi•循环语句自测练习
1.当处理问题时的循环次数是确定的,则采用的最合适的循环方式为()o
a.do-while
b.switch
c.while
d.for
2.若需要定义一个符号常量,并且使C语言能够进行类型检查,则应在定义语句
的开始使用保留字()o
a.case
b.continue
c.static
d.const
3.已知村~'7的ASCII码为65-90,当执行“intx=C'+5;”语句后x的值为()。
a.70
b.73
c.72
d.71
4.在一条变量定义语句中可以同时定义多个变量。(J)
5.在一条变量定义语句中,当同时定义多个变量时,各变量之间只能使用逗号分
开。(J)
6.在一条变量定义语句中,定义的变量和赋给它的初值之间不需要使用等号(=)。
(X)
自测练习四:while循环语句自测练习
1.每次先进行循环条件的判断,然后再执行循环体的语句为()o
a.for和while
b.for和do
c.switch和break
d.while和do
2.若n的值为5,s的值为0,则执行“while(n〉0)s+=n--;”语句后,s的值为()。
a.13
b.14
c.15
d.12
3.当循环次数确定时,while循环语句能够转换为for循环语句。(J)
4.while循环语句中的循环体至少被执行一次。(X)
5.执行下面程序的输出结果为
#include<stdio.h>
voidmain(){
intn=10,y=0;
while(n>5)y+=n—;
printf("y=%d\n",y);
答案:y=40
6.执行下面程序的输出结果为。
#include<stdio.h>
voidmain(){
inti=l,p=l,s=l;
while(s<40){i++;p=p*i;s=s+p;}
printf(”s二%d\n”,s);
)
答案:s=153
自测练习五:do循环语句自测练习
1.流程控制类语句包括的3类语句为()。
a.选择、循环、跳转
b.选择、循环、输入
c.选择、输入、输出
d.循环、选择、函数
2.若i的值为0,则执行“doi++;while(i*i<10);”语句的过程中,循环体被执行
的次数为()o
a.2
b.3
c.5
d.4
3.do-while循环语句中的循环体至少被执行一次。(J)
4.do-while循环语句是以分号结束的语句。(J)
5.执行下面程序的输出结果为
#include<stdio.h>
voidmain(){
intx=16,s=0;
do{s+=x;x-3;}while(x>0);
printf("s=%d\n,,,s);
答案:s=51
6.此程序的功能是从键盘上输入两个(),输出结果为它们的平方和o
#include<stdio.h>
voidmain(){
intx,y;
doscanf("%d%d",&x,&y);while(x<=0||y<=0);
printf("%d\n",x*x+y*y);
)
答案:正整数
自测练习六:跳转类语句自测练习
1.若要结束所在函数的执行过程,返回到调用该函数所在位置,则使用的语句为
()o
a.goto
b.continue
c.return
d.break
2.要结束所在循环语句中循环体的一次执行,则在其中使用的语句为()0
a.goto
b.return
c.break
d・continue
3.break语句只能使用在循环语句中。(X)
4.return语句只有保留字,没有其他成分。(X)
5.continue语句只有保留字,没有语句体。(J)
6.执行下面程序的输出结果为
#include<stdio.h>
voidmain(){
inti,s=0;
for(i=1;i<10;i++){
s+=i*(i+l);
if(s>40)break;
printf("s=%d\n",s);
)
答案:s=70
7,执行下面程序的输出结果为
#include<stdio.h>
voidmain(){
inti=0,s=0;
do{
i+=2;
if(i%3==0)continue;
s+=i*(i+l);
}while(s<60);
printf(Ms=%d\n",s);
)
答案:s=98
第三章综合练习
一、单项选择题
1.若x的值为15,则执行“if(x>10)x++;elsex-;”语句后,x的值为()。
a.16
b.10
c.15
d.14
2.若x的值为-10,则执行“if(!x)x++;elsex—语句后,x的值为()。
a.O
b.-10
c.-9
d.-ll
3.若x的值为10,则执行"switch(x%3){case0:x++;casel:x++;case2:x++;}”语
句后,x的值为()=
a.13
b.10
c.12
d.11
4.若x的值为10,贝愀行“switch(x%3){case0:x++;break;casel:x++;default:x++;}
语句后,x的值为()o
a.9
b.10
c.12
d.11
5.若n的值为10,则执行“for(i=l;i<n;i++)S;”语句的过程中,表达式i=l共被
执行的次数为()。
a.n-1
b.1
d.n+1
6.若n的值为10,则执行"for(i=0;;i++)if(i>n/3)break;”语句后,i的值为()。
a.6
b.3
c.4
d.5
7.若n的值为10,则执行"for(i=Q<n;i++)S;”语句的过程中,表达式i++共被
执行的次数为()。
a.n
b.n+1
c.1
d.n-1
8.若n的值为10,则执行“for(i=0;i<n;i++)for(j=i;j<n;j++)S;”语句后,内层循
环体S语句的执行总次数为()。
a.n*n
b.n(n+l)/2
c.(n+l)/2
d.n(n-l)/2
9.若n的值为10,则执行“while(n-->0)s+=n;”语句的过程中,循环体被执行的
次数为()o
a.9
b.11
c.8
d.10
10.若n的值为5,s的值为0,则执行“while(n—>0)s+=n;”语句后,s的值为()。
a.15
b.12
c.10
d.14
11.在下列的语句中,必须以分号作为结束的语句是()。
a.while
b.for
c.do
d.switch
12.若n的值为5,s的值为0,则执行“dos+=n-;whi若n>的;”语句后,s的值
为(
)o
a.14
b.12
c.15
d.13
13.要结束任一种循环语句或switch语句的执行,则在其中使用的语句为()。
a.goto
b.break
c.continue
d.return
二、判断题
14.在if语句中,必须带有else子句,不能省略它。(义)
15.在for循环语句的头部,for后面括号内共有3个表达式位置。(J)
16.for循环语句不能够被转换为while循环语句。(义)
17.while循环语句中的循环体可能不会被执行。(J)
18.while循环语句的循环体,只能是复合语句,不能是简单语句。(X)
19.do-while循环语句中的循环体可能不会被执行。(X)
20.do-while循环语句的循环体,只能是复合语句,不能是简单语句。(X)
21.do-while循环语句是以循环体结尾的。(X)
22.break语句可以使用在switch语句中。(V)
23.return语句中可以带有返回表达式。(V)
24.continue只能使用在任一种循环语句的循环体中。(V)
三、程序填空题
25.#include<stdio.h>
voidmain(){
inta=5,b=8,c=6,d=15,x,y;
if(a>=b)x=a;elsex=b;
if(c>=d)y=c;elsey=d;
if(x>=y)printf("%d\n",x);
elseprintf("%d\n",y);
)
答案:15
26.#include<stdio.h>
voidmain(){
intx=5,y=8,z=12;
if(x>y&&x>z)printf(,,%d\n,',x);
elseif(y>x&&y>z)printf("%d\n",y);
elseprintf(u%d\nn,z);
答案:12
27.#include<stdio.h>
voidmain(){
inta=5,b=8,c;
if(3*a>2*b)c=2*a+3*b;
elseif(a==b)c=a*a+b*b;
elsec=a*b+3;
printf(nc=%d\nn,c);
}
答案:c=43
29.#include<stdio.h>
voidmain(){
intx=5,y=0;
switch(2*x-3){
case4:y+=x;
case7:y+=2*x+l;
case10:y+=3*x;
)
printf(ny=%d\nn,y);
)
答案:y=26
29.#include<stdio.h>
voidmain(){
charch;
inta,b,c;
scanf(n%cn,&ch);
scanf(H%d%dn,&a,&b);
switch(ch){
casec=a+b;break;
case',:c=a-b;break;
casec=a*b;break;
case7':c=a/b;break;
default:printf(nEn-or!\nn);
)
printf(n%d%c%d=%d\nn,a,ch,b,c);
)
答案:35=15
30.#include<stdio.h>
voidmain(){
inti,s=0;
for(i=16;i>0;i-2)
if(i%3=0||i%4==0)s+=i;
printf(us=%d\n",s);
)
答案:s=46
31.#include<stdio.h>
voidmain(){
inti,x,y,s=0;
scanf(n%d%d”,&x,&y);
if(x>y){i=x;x=y;y=i;}
for(i=x;i<=y;i++)
if(i%2==l)s+=i*i;
printf(us=%d\n",s);
)
答案:奇数
32.#include<stdio.h>
constintN=100;
voidmain(){
inta,b;
for(a=2;a<=N;a++){
for(b=2;b*b<=a;b++)
if(a%b==0)break;
if(b*b>a)printf(n%d",a);
)
}
答案:素数(质数)
33.#include<stdio.h>
voidmain(){
inti=0,s=0;
while(s<50){i+=2;s+=i*i;}
printf(ns=%d\nH,s);
)
答案:s=56
34.#include<stdio.h>
voidmain(){
intx,p=2;
scanf(,r%dn,&x);
while(x>=p)
if(x%p==0){printf(',%d=%d*%d\nn,x,p,x/p);break;}
elsep++;
)
答案:35=57
35.#include<stdio.h>
voidmain(){
intx,y,a,p=l;
scanf(n%d%d0,&x,&y);
if(x<y){a=x;x=y;y=a;}
if(x%y==O){printf("%d\n",y);return;}
a=2;
while(y>=a)
if(x%a==O&&y%a==O){x=x/a;y=y/a;p*二a;}
elsea++;
printf(H%d\nn,p);
)
答案:公约数
36.#include<stdio.h>
voidmain(){
intx=36,y=48,z;
do{z=x%y;x=y;y=z;}while(y>0);
printf(nx=%d\nn,x);
}
答案:x=12
37.#inc1ude<stdio.h>
voidmain(){
intx,i=0,s=0;
scanf(n%d",&x);
do{i+=2;s+=i*i;}while(s<x);
printf(,'n=%d\nn,i-2);
}
答案:最大
38.#include<stdio.h>
voidmain(){
intx=37,k=2;
do{if(x%k==0)break;k++;}while(k*k<=x);
if(k*k>x)printf(HYes!\nn);
elseprintf(nNo!\nH);
答案:Yes!
第四章数组的概念
自测练习一:数组的概念自测练习
1.在一个数组中,数组元素a[i]前面的元素个数为()。
a.2*i
b.i+1
c.i
d.i-1
2.假定一维数组的定义为“chara[8];",则该数组所占用的存储空间的字节数为
()o
a.8
b.32
c.64
d.16
3.对于一维数组元素,数组名后使用一对中括号。(J)
4.二维数组元素带有一个下标。(X)
自测练习二:一维数组的定义和使用自测练习
1.假定有一个定义语句为"inta[10]={3,4,2,8,6};”,则元素a[3]的值为()。
a.6
b.8
c.4
d.2
2.在下面字符数组的定义语句中,有语法错误的是()。
a.chara口二“x+y=55J;
b.chara[15]={T,2};
c.chara[10]='5';
d.chara[20]=nabcdefgn;
3.在一维数组的定义语句中,可以给数组中每个元素赋初值。(J)
4.假定一维数组的定义为“double则每个数组元素的下标取值范围在1~M
之间。(X)
自测练习三:二维数组的定义和使用自测练习
1.假定有一个定义语句为“inta[3][4]={{3,4},{2,8,6}则元素a⑵[1]的值为()。
a.8
b.6
c.4
d.O
2.假定二维数组的定义语句为"int*a[3][5];",则该数组所占用的存储空间的字
节数为()。
a.120
b.60
c.30
d.15
3.在二维数组的定义语句中,数组名后带有两对中括号。(J)
4.假定二维数组的定义语句为“doublea[M][N];",则每个数组元素的列下标取值
范围在0~N-l之间。(V)
自测练习四:使用typedef语句定义数组类型自测练习
1.使用“typedefintInteger;”语句把标识符Integer定义为一个()。
a.整数变量
b.整数类型
c.数组类型
d.数组变量
2使用“typedefintABC"0];”语句把标识符ABC定义为()。
a.符号常量
b.字符数组
c.整型数组类型
d.简单变量
3.执行“typedefintintType;”语句后,在使用int定义整型变量的地方都可以使
用整数类型标识符intType来定义整型变量。(V)
4.使用"typedefcharBB[10][50];"语句定义标识符BB为含有10行50列共500
个元素的二维字符数组。(X)
自测练习五:数组的应用自测练习
1.执行下面程序的输出结果为
#include<stdio.h>
voidmain(){
inta[8]={3,8,6,5,9,2,8,5};
inti,s=0;
for(i=0;i<8;i++)s+=a[i];
printf("s=%d\n",s);
)
答案:s=46
2.执行下面程序的输出结果为
#include<stdio.h>
voidmain(){
inta[8]={12,15,20,8,25,30,28,36);
inti,c[3]={0};
for(i=0;i<8;i++){
if(a[i]%2==0)c[0]++;
if(a[i]%3==0)c[l]++;
if(a[i]%4==0)c[2]++;
)
printf("%d%d%d\n",c[0],c[l],c[2]);
)
答案:645
3.执行下面程序的输出结果为
#include<stdio.h>
voidmain(){
inta[3][3]={{13,18,16},{15,19,12},{8,15,22}};
inti,j,x=a[O][O];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(a[i][j]<x)x=a[i][j];
printf("x=%d\n",x);
}
答案:x=8
4.执行下面程序的输出结果为
#include<stdio.h>
voidmain(){
inta[3][3]={{12,18,10},{8,6,14},{5,10,19}};
inti,j,s[3]={0};
for(i=0;i<3;i++)
for(j=0;j<3;j++)
s[a[i][j]%3]+=a[i][j];
for(i=0;i<3;i++)printf("%d",s[i]);
)
答案:363927
自测练习六:字符串的定义与应用自测练习
1.利用一维字符数组存储一个字符串时,在其末尾自动存储的一个字符是()。
a.'\n'
b.'\0'
c.空格
d.回车
2.一个二维字符数组a[M][N]能够存储的字符串个数至多为()。
a.M
b.N-l
c.M-l
d.N
3•若需要把一个字符串赋给字符数组,则选用的函数是()o
a.strlen
b.strcat
c.strcpy
d.strcmp
4.在C语言中,在定义一个字符数组时,不能利用一个字符串进行初始化。(X)
5.对于一个长度为n的字符串,存储它的字符数组的长度至少为n。(X)
6.有一个语句为"chars2[4]="abcd";,\s2数组长度是合适的。(X)
7.执行下面程序的输出结果为
#include«stdio.h>
#include<string.h>
voidmain(){
intcl,c2;
chara[20]="Stringl234\n";
charb[10]="str";
cl=strlen(a);
strcat(b,"245\0");
intc2=strlen(b);
printf("%d%d\n",cl,c2);
答案:116
8.执行下面程序后,假定从键盘上输入的两个字符串数据为123和456,则输出
结果为
#include<stdio.h>
#include<string.h>
voidmain(){
chara[20],b[20];
scanf(M%s%s",a,b);
if(strcmp(a,b)>=0)printf(n%s%s\n'\a,b);
elseprintf(M%s%s\nn,b,a);
答案:456123
第四章综合练习
一、单项选择题
1.假定有一个元素类型为int的数组a[10],它所占用的存储空间的字节数为
()。
a.20
b.80
c.10
d.40
2.假定一维数组的定义为“char*a[8];",则该数组所占用的存储空间的字节数为
(
a.16
b.8
c.32
d.64
3.假定有一个定义语句为“inta[10]=[3,4,2,8,6};”,则元素a[5]的值为()。
a.6
b.2
c.0
d.8
4.在下面的一维数组定义语句中,有语法错误的是()o
a.inta[];
b.inta[5];
c.inta[10]={0};
d.inta[]={1,2,3};
5.假定二维数组的定义语句为“inta[3][5];",则该数组所含元素的个数为()。
a.12
b.8
c.10
d.15
6.假定有一个定义语句为“inta[3][4]={{3,4},{2,8,6}};”,则元素a[l]⑵的值为
()o
a.4
b.6
c.8
(1.2
7.对于一个长度为n的字符串,保存它至少需要占用的存储字节数为()。
a.n+2
b,n+1
c.n
d.n-1
8.对于一个二维字符数组a[M][N],存储每个字符串的长度至多为()。
a.M
b.N
c.M-l
d.N-1
9.若需要比较两个字符串的大小,则选用的函数是()o
a.strcmp
b.strlen
c.strcat
d.strcpy
二、判断题
10.一维数组元素带有两个下标。(X)
11.对于二维数组元素,数组名后使用两对中括号。(J)
12.在一维数组的定义语句中,给数组赋初值的部分是用一对花括号括起来的数
据表。(V)
13.在一维数组的定义语句中,数组名前为元素类型关键字。(J)
14.在二维数组的定义语句中,数组名后带有两对圆括号。(X)
15.假定二维数组的定义语句为“doublea[M][N]/\则每个数组元素的列下标取
值范围在1~N之间。(X)
16.使用“typedefchar语句定义标识符BB为含有10个元素的一维字符
数如(义)
17.使用"typedefchar语句定义标识符BB为含有10行50列共500
个元素的二维字符数组类型。(J)
18.一个二维字符数组a[10][20]中存储每个字符串的最大长度为19o(V)
三、程序填空题
19.#include<stdio.h>
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五版美发培训学校师资聘用标准合同4篇
- 2025年度门面租赁合同电子版(含租金递增与调整机制)
- 2025年度签竞业协议打工人财产保全及职业规划合同
- 二零二五年度酒店前台员工权益保障与劳动合同
- 二零二五年度超市与物流公司货物扣点运输合同
- 2025年度复杂地质条件顶管施工安全协议书
- 2025年度住宅室内装修工程保修协议
- 2025年度签竞业协议打工人财产保全及心理支持合同
- 2025年度跆拳道青少年运动员培养合作协议
- 二零二五年度退休人员教育辅助教学劳务合同
- 2024年国家焊工职业技能理论考试题库(含答案)
- 特鲁索综合征
- 《向心力》 教学课件
- 结构力学数值方法:边界元法(BEM):边界元法的基本原理与步骤
- 2024年山东省泰安市高考语文一模试卷
- 北师大版物理九年级全一册课件
- 2024年第三师图木舒克市市场监督管理局招录2人《行政职业能力测验》高频考点、难点(含详细答案)
- RFJ 006-2021 RFP型人防过滤吸收器制造与验收规范(暂行)
- 盆腔炎教学查房课件
- 110kv各类型变压器的计算单
- 新概念英语课件NCE3-lesson15(共34张)
评论
0/150
提交评论