2023-2024-2-程序设计基础-期中测验
《程序设计基础》期中测验
判断题
(下列各题你认为正确的,请在题干的括号内打“√”,错的打“×”,每题2分,共10分)
1、在C语言中,注释可以出现在代码的任何位置。 ( )
2、C语言中的main()函数必须放在程序的开始位置。 ( )
3、变量在使用前必须先声明。 ( )
4、使用”=”进行等于判断是正确的。 ( )
5、内层break语句可以终止嵌套的switch,使最外层的switch结束。( )
答案:√ 正确
。
注释应该放在合适的位置,让程序员容易地找到并理解注释的含义。注释应该放在需要解释的代码附近,而不是放在代码的任意位置。
答案:X 错误
。
虽然程序的执行从main()函数开始,但在源代码文件中,main()函数不一定非要放在最前面。C编译器会先解析所有的声明和定义,之后才执行main()。因此,函数、变量声明、其他函数定义等都可以放在main()之前。
答案:√ 正确
。
在C语言中,变量需要在其作用域内被声明后才能使用。这包括明确指定类型和可选的初始化。如果尝试使用一个未声明的变量,编译时会报错。
答案:X 错误
。
在C语言中,”=”是赋值运算符,而非比较运算符。用于判断两个表达式是否相等的运算符是”==
“。因此,应该使用”==
“来进行等于判断。
答案:× 错误
。
break语句的作用是立即退出最内层的循环或switch语句。如果break位于嵌套的switch语句内部,它只会终止当前所在的那个switch语句块,并不会影响到外层的switch结构。要跳出多层结构,需要配合使用标签(labeled statements)或者重新考虑控制流程的设计。
单选题
(在本题的每一小题的备选答案中,只有一个答案是正确的,请把你认为正确的答案的题号,填入题干的括号内,多选不给分。每题 2 分,共 20 分)
- C 语言不支持的数据类型有( )
A、char B、string C、int D、 double
A、char:错误。char是C语言的基本数据类型之一,用于存储单个字符。
B、string:正确。严格来说,C语言没有直接的string数据类型,字符串通常通过字符数组(char array)实现。
C、int:错误。int也是C语言的基本数据类型,用于存储整数。
D、double:错误。double是C语言的浮点数类型,用于存储双精度浮点数。
- 控制字符“\n”的作用是: ( )
A、换页 B、换行 C、水平制表 D、回车,光标移动到本行首行
A、换页:不正确。\f才是换页的控制字符。
B、换行:正确。\n表示新的一行开始,是换行控制字符。
C、水平制表:不正确。\t代表水平制表。
D、回车,光标移动到本行首行:不完全正确。\r单独表示回车,但通常\n在许多系统上具有回车并换行的效果。
- 关于函数,描述错误的是 ( )
A、函数是一段具有特定功能的、可重用的语句组
B、调用函数时不需要了解函数内部的实现原理,只要了解函数的输入输出方式即可
C、一个C源程序可以包含两个main函数
D、使用函数的目的是减低编程的难度和实现代码的重用
A、函数是一段具有特定功能的、可重用的语句组:正确描述。
B、调用函数时不需要了解函数内部的实现原理,只要了解函数的输入输出方式即可:正确做法,体现了封装的思想。
C、一个C源程序可以包含两个main函数:错误。一个C程序只能有一个main()函数作为程序的入口点。
D、使用函数的目的是减低编程的难度和实现代码的重用:正确描述。
- 下列while循环的执行次数是( )
A.0 B.1 C.5 D.死循环
while(i=0)
{
i--;
}
while(i=0) |
A.0:正确。由于i=0是赋值操作,使得循环条件始终为假,循环不会执行。
B/C/D均不正确,因为循环根本不会进入执行体。
- 请选出合法的C语言赋值语句( )
A.a=b=58; B.i++; C.a=58,b=58 D.k=int(a+b);
A.a=b=58;:正确,链式赋值,先将58赋给b,再将b的值赋给a。
B.i++;:虽然合法,但严格来说是自增运算符,不是典型的赋值语句。
C.a=58,b=58:不正确,这在C语言中是两个独立的语句,中间以逗号隔开,但作为单个赋值语句是不合法的。
D.k=int(a+b);:不正确,类型转换应该使用括号(int),如k=(int)(a+b)。
- 下面是 C 语言合法的变量名的是( )
A. float B.wen-li C.wenli D.Wen\l
A. float:不正确,这是关键字,不能作为变量名。
B.wen-li:不正确,变量名不能包含连字符。
C.wenli:正确,符合变量命名规则。
D.Wen\\
l:不正确,虽然允许大写字母开头,但包含非法的反斜杠字符。
- 以下程序执行后的输出结果是( )
void main()
{
int i,s=0;
for(i=l;i<10;i+=2)
{
s+=i;
}
printf("%d\n", s);
}
A、自然数1~9的累加和 B、自然数 1~9中奇数之和
C、自然数1~10的累加和 D、自然数 1~9 中偶数之和
这个C语言程序的主要功能是通过一个for循环计算一组特定数字的总和,并将结果打印出来。下面是对程序的详细解析:
#include <stdio.h>
:这是C语言程序的标准库文件,用于输入输出功能。void main()
:主函数,程序从这里开始执行。int i, s=0;
:声明两个整型变量i和s,其中s初始化为0,用于存储累加的结果。for(i=1; i<10; i+=2)
:这是一个for循环,它的工作原理如下:i=1
:循环开始时,变量i被设置为1。i<10
:循环的条件是i小于10。只要满足这个条件,循环就会继续执行。i+=2
:在每次循环迭代结束时,i的值增加2。这意味着i将在1, 3, 5, 7, 9之间变化。
s += i;
:在循环内部,当前的i值被加到s上。这实际上是在计算1, 3, 5, 7, 9这些奇数的总和。printf("%d\n", s);
:循环结束后,程序使用printf函数打印出s的值,即上述奇数的总和。
综上所述,这个程序计算的是自然数1到9中的奇数(1, 3, 5, 7, 9)的总和。因此,正确的选项是B:自然数1~9中奇数之和。
- 若c为char类型变量,能正确判断出c为小写字母的表达式是( )
A、 ‘a’<=c<=’z’ B、 (c>=’a’) || (c<=’z’)
C、 c>=’a’ || c<=’z’ D、 c<=’z’ && c>=’a’
A、’a’<=c<=’z’:在C语言中,这种连续比较是不合法的。
B、(c>=’a’) || (c<=’z’):不正确,因为它允许c同时大于等于’a’和小于等于’z’以外的值。
C、c>=’a’ || c<=’z’:同样不精确,因为它允许c是两者之外的值。
D、c<=’z’ && c>=’a’:正确,使用逻辑与操作符确保c在小写字母范围内。
- 表达式x+=y是以下哪个表达式的简写? ( )
A.x=x-y B.x=x+y C.x=x*y D.x=x/y
A.x=x-y:不正确,这是减法。
B.x=x+y:正确,这是加法赋值,等同于x+=y。
C.x=x*y:不正确,这是乘法。
D.x=x/y:不正确,这是除法。
- 下面C语言中的数组定义,正确的是 ( )
A、int[] a ={1, 2, 3}; B、int a[3] = {1, 2, 3};
C、int[3] a = {1, 2, 3}; D、以上都不正确
A、int[] a ={1, 2, 3};:不正确,C语言中数组定义需要指定数组长度。
B、int a[3] = {1, 2, 3};:正确,指定了数组类型、名称和初始值。
C、int[3] a = {1, 2, 3};:不正确,数组定义的语法顺序错误。
D、以上都不正确:基于B选项正确,此选项不正确。
程序阅读题 ——> 期末不考
写出下面程序的运行结果(每题5分,共10分)
第一题
:
|
程序运行后的输出结果是
:
a%b=4 |
第二题
:
|
输出结果
:
i=0,j=2,a[i]=27 |
编程题
(每题10分,共50分)
- 编程实现从键盘从输入两个整数 a,b,比较大小,输出较大值,使用函数调用实现。
|
- 有数组a=[64,34,25,12,22,11,90],请使用
冒泡排序实现由小到大排序
。
|
- 编写一个程序,从用户那里接收两个整数并打印出来,然后使用第三个临时变量来交换这两个数的值,并再次打印它们。
|
- 编写一个程序,从用户那里接收一段文本,然后统计其中每个字符出现的次数。
|
- 编程实现将从键盘输入圆半径r,输出圆周长和圆面积。
|
简答题
(每题5分,共10分)
- 解释字符常量和字符串常量在C语言中的区别。
- 列出C语言中的基本数据类型,并简述它们的用途及输出格式的调用。