【C语言必知必会 | 子系列第一篇】深入剖析顺序结构(1)

news2024/11/6 11:30:19

引言

C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。它在编程语言中具有举足轻重的地位。
此文为【C语言必知必会子系列】第一篇,基于进行C语言顺序结构的选择题专项练习,结合专题优质题目,带领读者从0开始,深度掌握知识点。

在这里插入图片描述

文章目录

    • 1️⃣ 前言
    • 2️⃣PTA专项练习
    • 3️⃣ 总结


1️⃣ 前言

在【C语言必知必会】系列中,我们学习了顺序结构、选择结构、循环结构等,同时也通过专项练习进行了知识点的巩固和手敲代码的锻炼。

在子系列中,我们将基于PTA教学平台,向C语言学习者提供更优质的题目与更巧妙、精髓的解题思想与方法。

PTA是一个程序设计类实验辅助教学平台,由千名老师共同建设,里面包含了上万道高质量题目,用户量达百万。

在本讲中,将深入讲解顺序结构的选择题,在思想上引领读者带领读者在理论结合实际的基础上更好地学习、吸收、掌握C语言。


2️⃣PTA专项练习

接下来,开始我们的顺序结构选择题专篇练习。

1.C 语言程序中可以对程序进行注释,注释部分必须用什么符号括起来?

A.  '{' 和‘}'
B. '['']'
C. '/*''*/'
D.   '*/''/*'

解析:

在C语言中,我们可以使用两种符号来注释代码:单行注释和多行注释。

  • 单行注释:使用双斜杠 // 开始,直到该行的末尾都将被注释掉。例如:
// 这是一个单行注释
int x = 5; // 这行也是注释
  • 多行注释:使用斜杠和星号 /* 开始,使用星号和斜杠 */ 结束。这种注释方式可以跨越多行。例如:
/*
这是一个
多行注释
*/
int y = 10;

因此答案选C


2.下列运算符中,优先级最低的是____。

A. *
B. !=
C. +
D. =

解析:

以下是常见的C语言运算符按照优先级由高到低的顺序:

1.括号: (),用于改变运算顺序。

2.单目运算符:
- 正号: +
- 负号: -
- 逻辑非: !
- 位取反: ~
- 前置递增/递减: ++--

3.乘除取模运算符:
- 乘法: *
- 除法: /
- 取模(求余): %

4.加减运算符:
- 加法: +
- 减法: -

5.移位运算符:
- 左移: <<
- 右移: >>

6.关系运算符:
- 小于: <
- 大于: >
- 小于等于: <=
- 大于等于: >=

7.相等性运算符:
- 等于: ==
- 不等于: !=

8.逻辑与运算符: &&

9.逻辑或运算符: ||

10.条件运算符: ?:

11.赋值运算符:
- 简单赋值: =
- 复合赋值: +=-=*=/=%=<<=>>= 等。

因此,正确答案为D


3.已知字符 ‘a’ 的ASCII码为 97,执行下列语句的输出是____。

printf ("%d, %c", 'b', 'b'+1 ) ;
A. 98, b
B. 语法不合法
C. 98, 99
D. 98, c

解析

在这个语句中,printf(“%d, %c”, ‘b’, ‘b’+1),我们有两个参数需要输出。

第一个参数 ‘b’ 是字符字面量,其ASCII码为 98。%d 格式说明符用于输出整数,所以输出为 98。

第二个参数 ‘b’+1 是一个表达式,‘b’ 的ASCII码为 98,加 1 后得到 99。同样地,%c 格式说明符用于输出字符,所以输出为字符 ‘c’

因此,答案为D


4.要调用数学函数时,在#include命令行中应包含____。

A. "stdio.h"
B. "string.h"
C. "math.h"
D."ctype.h"

解析

A. “stdio.h”:
这是一个标准输入输出的头文件,其中包含了许多与输入输出有关的函数。例如,printf和scanf等函数都在这个头文件中声明。如果你的代码中使用了这些函数,就需要包含<stdio.h>。

B. “string.h”:
这是一个字符串处理的头文件,其中包含了一些与字符串操作相关的函数。例如,strcpy、strlen和strcmp等函数都在这个头文件中声明。如果你的代码中使用了这些字符串函数,就需要包含<string.h>。

C. “math.h”:
这是一个数学函数的头文件,其中包含了各种数学函数的声明。例如,三角函数(如sin、cos、tan)、指数函数(如exp、log)、幂函数(如pow)等都在这个头文件中声明。如果你的代码中使用了这些数学函数,就需要包含<math.h>。

D. “ctype.h”:
这是一个字符处理的头文件,其中包含了一些与字符操作相关的函数。例如,isalpha、isdigit和tolower等函数都在这个头文件中声明。如果你的代码中使用了这些字符处理函数,就需要包含<ctype.h>。

因此答案选C


5.若a是基本整型变量,c是单精度实型变量,输入语句____是错误的。

A. scanf("%d,%f”, &a, &c);
B. scanf("d=%d, c=%f”, &a, &c);
C. scanf("%d%f”, &a, &c);
D. scanf("%d%f”, a, c);

解析

在使用scanf函数进行输入时,需要传递变量的地址作为参数,而不是变量本身。正确的写法是使用&运算符获取变量的地址。

因此答案选D


6.表达式______的值是0。

A.3%5
B.3/5.0
C.3/5
D.3<5

解析:

在C语言中,当两个整数进行除法运算时,结果将会被截断为整数部分,即舍去小数部分。所以,3/5 的结果是 0。

其他选项的值如下:

A. 3%5 表示取模运算,即 3 除以 5 的余数,结果是 3。

B. 3/5.0 表示浮点除法运算,其中一个操作数是浮点数,结果是 0.6。

D. 3<5 是一个比较运算,判断 3 是否小于 5,结果是 1(表示真)。

因此答案选C


7.以下选项中不正确的整型常量是( )。

A.12L
B.-10
C.012
D.2,900

解析:

在 C 语言中,整型常量可以是十进制、八进制或十六进制表示法。然而,逗号不是整型常量的有效字符,因此 2,900 不是一个正确的整型常量。

其他选项的值如下:

A. 12L 表示长整型常量,其值为十进制的 12。

B. -10 表示一个负数常量,其值为十进制的 -10。

C. 012 是一个八进制(Octal)表示法,其对应的十进制值为 10。

因此答案选D


8.以下标识符中,不合法的是( )。

A.4d
B._8_d
C.Int
D.key

解析:

在 C++ 中,标识符由字母、数字和下划线组成,且必须以字母或下划线开头。

B. _8_d 是一个合法的标识符,以下划线开头,后面跟着数字和字母。

C. Int 是一个合法的标识符,由字母组成,区分大小写。

D. key 是一个合法的标识符,由字母组成,区分大小写。

因此,选项 A 中的 4d 不符合要求,以数字开头的标识符是不合法的。


9.若有char w; int x; float y; double z; 则表达式w*x+z-y值的数据类型为( )。

A.float
B.char
C.int
D.double

解析:

根据 C++ 中的隐式类型转换规则,表达式的结果类型将根据操作数的类型进行推导。在这个表达式中,w 和 x 的乘积将会得到一个整型结果,即 int 类型。然后,z 的类型是 double,而 y 的类型是 float。在运算过程中,int 类型将会被提升为更高精度的类型 double。最后,减法运算符 - 所得到的结果仍然是 double 类型。

因此,答案选D


10.在C语言中,要求运算数必须是整型的运算符是( )。

A.%
B./
C.<
D.!

解析:

在 C 语言中,% 是取模运算符(Modulus Operator)。它要求操作数是整型数据,用于计算两个整数相除后的余数。

其他选项的说明如下:

B. / 是除法运算符(Division Operator),用于计算两个数值相除的结果。它可以应用于多种数据类型,包括整数和浮点数。

C. < 是小于运算符(Less Than Operator),用于比较两个操作数的大小关系。它可以应用于整数和浮点数。

D. ! 是逻辑非运算符(Logical NOT Operator),用于对一个布尔值进行取反。它可以应用于逻辑类型(int)。

因此,答案选A %


11.在C语言中,数字029是一个( )。

A.八进制数
B.十进制数
C.十六进制数
D.非法数

解析:

在 C 语言中,以 0 开头的数字常量被解释为八进制数。然而,八进制数的每个位上的数字必须是 0 到 7 之间的数字。 因此,数字 029 中的 9 超出了八进制数的范围,导致它是一个非法数。

其他选项的说明如下:

A. 八进制数:正确的八进制数中只能包含数字 0 到 7。

B. 十进制数:十进制数是我们通常使用的数字系统,不需要以任何前导零来表示。

C. 十六进制数:十六进制数以 0x 或 0X 开头,后面跟着十六进制的数字和字母(A-F)。

因此,答案选D


12.已知字母A的ASCII码为十进制数65,且ch为字符型变量,则执行语句ch=‘A’+‘6’-‘3’;后,ch中的值为__。

A. D
B. 68
C. C
D. 不确定

解析:

在C语言中,字符型变量在计算时会被隐式转换为其对应的ASCII码值。

所以先进行 ‘A’ + ‘6’ 的操作,即将字符 ‘A’ 的ASCII码(65)与字符 ‘6’ 的ASCII码(54)相加,结果为 119。然后再减去字符 ‘3’ 的ASCII码(51),得到最终结果 68。

因此,执行语句后, ch 中的值为十进制数 68,对应ASCII码表上的字符是 ‘D’。


13.若a为int类型,且其值为3,则执行完表达式a+= a-= a*a后,a的值是__。

A. -3
B. 9
C. -12
D. 6

解析:

根据 C 语言中的运算符优先级规则,乘法运算符 * 的优先级高于赋值运算符 -= 和 +=。所以在计算表达式时,首先要计算乘法部分。

表达式 a * a 的结果是 3 * 3,即 9。

然后,从左到右依次进行 -= 和 += 运算。

首先是 -= 运算,相当于将 a 减去 a * a 的结果,即 a -= 9。此时 a 的值变为 -6。

接下来是 += 运算,相当于将 a 加上 -6 的结果,即 a += -6。最终 a 的值变为 -12。

因此,执行完表达式 a += a -= a * a 后,a 的值为 -12。

答案选C


14.按照标识符的要求,( )不能组成标识符。

A.连接符
B.下划线
C.大小写字母
D.数字字符

C语言中的标识符由字母、数字和下划线组成,并且必须以字母或下划线开头。连接符不能单独作为标识符使用,它们主要用于连接多个单词形成一个标识符。

选项 B. 下划线、选项 C. 大小写字母和选项 D. 数字字符都可以用来组成合法标识符。

因此,按照C语言标识符的要求,选项 A. 连接符 不能组成标识符。

答案选A


15.定义变量 int a;,则表达式 a = 3, 5; 执行过后,a的值和表达式的值分别是:

A.3 , 5
B.5 , 3
C.3 , 3
D.5 , 5

解析:

首先,左侧的表达式 a = 3 将 3 赋值给变量 a。然后,右侧的表达式 5 的值被忽略,因为逗号运算符只返回最后一个表达式的值。

所以,执行完表达式 a = 3, 5; 后,a 的值是 3,而整个表达式的值是 5。

因此,答案为A


16.定义 char a; 则以下赋值语句不恰当的是:

A.a = 65;
B.a = "A";
C.a = '\65';
D.a = 6 + 'A';

解析:

A. a = 65;:这是一个合法的赋值语句。ASCII码值 65 对应的字符是 ‘A’,因此将 ‘A’ 赋值给变量 a 是正确的。

B. a = “A”;:这是一个错误的赋值语句。双引号 “A” 表示一个字符串字面量,它包含两个字符 ‘A’ 和 ‘\0’(表示字符串的结束符)。而我们声明的是一个 char 类型的变量,只能接受单个字符的赋值,不能直接将字符串赋值给 char 变量。

C. a = ‘\65’;:这是一个合法的赋值语句。在字符常量中,使用反斜杠(\)加上八进制数值可以表示一个特定的 ASCII 字符。‘\65’ 表示的是 ASCII 码值为 65(十进制)对应的字符 ‘A’。

D. a = 6 + ‘A’;:这是一个合法的赋值语句。它进行了字符 ‘A’ 的加法运算,并将结果赋值给变量 a。由于字符在计算机中都是以 ASCII 码值存储的,所以这里的表达式实际上是将 6 加上字符 ‘A’ 的 ASCII 码值(十进制为 65),然后将结果 71(十进制)赋值给变量 a。

因此答案选B


17.下面哪个表达式的值是2。

A.6%3
B.-5%3
C.5%-3
D.-5%-3

解析:

A. 6%3 = 0:6除以3没有余数,所以结果是0。
B. -5%3 = -2:-5除以3,商是-1,余数是-2。余数的符号与被除数相同,所以结果是-2。
C. 5%-3 = 2:5除以-3,商是-1,余数是2。余数的符号与被除数相同,所以结果是2。
D. -5%-3 = -2:-5除以-3,商是1,余数是-2。余数的符号与被除数相同,所以结果是-2。

所以答案选C


18.以下程序的运行结果是

#include <stdio.h>
main()
{  
   int  a;
   a = (int)1.99*3;
   printf("%d\n", a);
}

A.3
B.5
C.6
D.结果不确定

解析:

在程序中,将浮点数 1.99 强制类型转换为整型后乘以 3,并将结果赋值给整型变量 a。当将浮点数转换为整型时,会直接截断小数部分,只保留整数部分。

1.99 被强制类型转换为整型后,其小数部分被截断,成为 1。然后 1 乘以 3 得到 3,最终将结果赋值给变量 a。

因此,程序的运行结果是 3。

答案选A


19.若有说明语句:char s='\42’;则变量s_____。
A.包含一个字符
B.包含两个字符
C.包含三个字符
D.说明不合法,s的值不确定

解析:

在给变量s赋值的语句中,‘\42’ 是一个转义序列,表示一个八进制的ASCII码值。具体来说,‘\42’ 表示的是八进制数 42(等于十进制数 34),对应的 ASCII 字符是双引号(")。

所以,变量s的值是一个字符,即双引号(")。

因此,选项 A. 包含一个字符 是正确答案。


20.下面叙述中错误的是()。
A.int x=4,y=0,z=5;(x==y)==z; 执行上述语句后x的值为0;
B.设 x 的值为15,n 的值为2,则表达式 x%=(n+3)运算后 x 的值是0
C.字符串的结束标志是’\0’;
D.x=5,y=8时,c语言表达式2>=x<=y的值是1

解析:

(x==y) 是一个条件表达式,其结果为布尔值(true 或 false)。根据代码中的赋值语句,将布尔值和 z 的值进行比较,与x的赋值无关,x 的值不会被修改为 0。

选项 B 中的叙述是正确的,15 % (2 + 3) = 15 % 5 = 0;将计算结果 0 赋值给 x。因此,最终 x 的值为 0

选项 C 中的叙述是正确的,字符串的结束标志是 ‘\0’。

选项 D 中的叙述是正确的,C 语言中的比较运算符按照从左到右的顺序结合,所以 2>=x<=y 等价于 (2>=x)<=y,即先比较 2 是否大于等于 x,结果为真,再将结果 1 与 y 比较,结果仍为真。

因此答案为A


21.C 语言采用的翻译方式为 ▁▁▁▁▁。

A. 解释方式
B. 编译方式

解析:
C 语言采用的是编译方式进行翻译。在编译方式中,源代码会被编译器转换为目标机器的机器代码,然后可以直接在目标机器上执行。编译过程包括词法分析、语法分析、语义分析、代码生成和优化等步骤,最终生成可执行文件或目标文件。

相比之下,解释方式是逐行解释执行源代码,不需要将代码转换为机器码。解释器会逐行读取源代码并立即执行相应操作,这种方式通常会更慢一些。


22.以下运算符优先级按从高到低排列正确的是( )。
A. 算术运算、赋值运算、关系运算
B. 关系运算、赋值运算、算术运算
C. 算术运算、关系运算、赋值运算
D. 关系运算、算术运算、赋值运算

解析:

正确答案是 C. 算术运算、关系运算、赋值运算。

以下是各个运算符的优先级从高到低的排列顺序:

  1. 算术运算符(例如:乘法、除法、取余等)
  2. 关系运算符(例如:大于、小于、等于等)
  3. 赋值运算符(例如:=、+=、-=等)

根据优先级规则,先进行算术运算,在算术运算完成后再进行关系运算,最后才是赋值运算。

因此,选项 C 中的顺序 “算术运算、关系运算、赋值运算” 是正确的。


23.scanf()函数在读不到数据时返回()

A.NULL
B.0
C.EOF
D.1

解析:

正确答案是 C. EOF。

scanf()函数在读取输入时遇到文件结束符(End-of-File,EOF)或无法匹配有效输入时,它会返回EOF。EOF 是一个常量,表示文件结束符,在 <stdio.h> 头文件中被定义为一个负整数。

因此,选项 C 中的回答 “EOF” 是正确的。


24.int i = 2.9 * 6的结果是( ) 。

A.12
B.16
C.17
D.18

解析:

根据 C 语言中的隐式类型转换规则,在进行赋值操作时,将浮点数类型的结果转换为整数类型时会截断小数部分,只保留整数部分。

因此,2.9 * 6 的结果是 17.4,截断小数部分后为 17。将 17 赋值给整型变量 i,i 的值为 17。

因此答案为C


3️⃣ 总结

此文为 【C语言必知必会】子系列第一篇 ,通过以题代练的形式带领读者掌握C语言的顺序结构,带领读者从0开始,深度掌握知识点。

以题代练对于C语言的学习是十分重要的,专栏将持续提供优质C语言编程题与理论课的学习,带领读者全方位掌握C语言,读者可订阅专栏持续。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1115278.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软件测试01

一、认识软件及测试 1、什么是软件 控制计算机硬件工作的工具 2、软件的基本组成 页面客户端------请求----->代码服务器-------请求------>数据服务器 3、软件产生过程 需求产生------->需求文档------->设计效果图------->产品开发-------->产品测试 …

消失的它:网络层分片包中的第一个分片包去哪了?

在网络层IP包分片的过程中&#xff0c;遇到了大麻烦&#xff01; 主机A&#xff1a; IP地址&#xff1a;192.168.0.10/24 MAC地址&#xff1a;02:00:00:00:00:10 主机B&#xff1a; IP地址&#xff1a;192.168.0.20/24 MAC地址&#xff1a;02:00:00:00:00:20 MTU&#xff1a;1…

算法通过村第十五关-超大规模|黄金笔记|超大规模场景

文章目录 前言对20GB文件进行排序超大文本中搜索两个单词的最短距离从10亿数字中寻找小于100万个数字总结 前言 提示&#xff1a;你生命的前半辈子或许属于别人&#xff0c;活在别人的认为里。那把后半辈子还给自己&#xff0c;去追随你内在的声音。 --荣格 理解了前面的几个题…

13.Tensor Product:Vector - Covector Pairs

之前对于Tensor 的最好的定义&#xff1a; 需要注意的是&#xff1a;本文的一些内容使用的是非国际标准的符号&#xff0c;只是视频制作人的个人偏好。 如上图&#xff1a;张量是 使用张量积组合在一起的向量和协向量的集合。 所以&#xff0c;向量和协向量就像是所有其他张量…

外包干了2个月,技术退步太明显...

先说情况&#xff0c;大专毕业&#xff0c;18年通过校招进入湖南某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试&#xf…

网工内推 | 金融业,网络管理岗,CCIE优先,最高30k

01 国民养老保险 招聘岗位&#xff1a;网络管理岗 职责描述&#xff1a; 1.负责公司整体网络架构规划、设计&#xff0c;制定整体网络方案&#xff0c;完善网络拓扑架构标准化文档&#xff0c;对公司现有网络进行梳理及持续优化。 2.负责公司网络系统建设&#xff0c;建立具备…

15-bean生命周期,循环依赖

文章目录 1. bean生命周期 1. bean生命周期

前端学成在线项目详细解析一

学成在线项目 01-项目目录 网站根目录是指存放网站的第一层文件夹&#xff0c;内部包含当前网站的所有素材&#xff0c;包含 HTML、CSS、图片、JavaScript等等。 首页引入CSS文件 <!-- 顺序要求&#xff1a;先清除再设置 --> <link rel"stylesheet" hre…

Hexo搭建个人博客系列之环境准备

环境准备 Git Git官网&#xff0c;安装过程,就是一直下一步,详细的看这篇文章 Git的安装 Node.js Node.js官网 Node.js的安装 注册一个GitHub账号 安装hexo 新建一个文件夹(位置任意),运行cmd(若出现了operation not permitted,就以管理员的权限来运行cmd)&#xff0c;运行…

UE4逆向篇-2_各类数据的查找方式

写在前面 1.通过前面的文章&#xff0c;相信各位已经能够自己找到GNames并使用DUMP工具导出GNames了。 2.本篇文章将介绍各种所需数据的查找方法。 一、准备工作 1.CheatEngine&#xff0c;本篇以及后续篇幅的重要工具。 2.一个记事本&#xff0c;保证你能记录下关键信息。…

代码随想录算法训练营第五十七天 | 392.判断子序列、115.不同的子序列

392.判断子序列 链接&#xff1a; 代码随想录 115.不同的子序列 链接&#xff1a; 代码随想录

高校教务系统登录页面JS分析——华南农业大学

高校教务系统密码加密逻辑及JS逆向 本文将介绍高校教务系统的密码加密逻辑以及使用JavaScript进行逆向分析的过程。通过本文&#xff0c;你将了解到密码加密的基本概念、常用加密算法以及如何通过逆向分析来破解密码。 本文仅供交流学习&#xff0c;勿用于非法用途。 一、密码加…

[TCP1P 2023] 部分crypto,pwn,reverse

Crypto Final Consensus 这是个AES爆破密钥的题&#xff0c;加密方法是先后用两个密钥加密。远程先给出加密后的flag&#xff0c;然后允许输入值并进行加密。 from Crypto.Cipher import AES import random from Crypto.Util.Padding import pada b"" b b"&…

软件外包开发代码质量评测

软件开发代码质量的评测方法有很多种&#xff0c;它们可以帮助开发团队识别和改进潜在的问题&#xff0c;提高代码的可维护性、性能和安全性。以下是一些常见的代码质量评测方法和工具&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发…

C语言实现希尔排序

void ShellSort(int arr[], int n) {//希尔排序--升序int i 0;int j 0;int d n / 2;for (d n / 2;d > 1;d / 2) {for (i d;i < n;i) {int tmp arr[i];for (j i;j > 0;j - d) {if (tmp < arr[j - d]) {arr[j] arr[j - d];}else {arr[j] tmp;break;}}}} }in…

3DCAT实时云渲染赋能聚好看科技,打造3D沉浸式互动视频云平台

随着5G、云计算、XR等技术的发展&#xff0c;3D沉浸式互动视频已经成为了新一代的数字媒体形式&#xff0c;为各行各业带来了新的创新机遇和价值。然而&#xff0c;要实现高效、高质、高效率的3D沉浸式互动视频生产和传播&#xff0c;还需要强大的技术支撑和平台服务。 作为海…

SpringCloud:自定义skywalking链路追踪

一、添加依赖&#xff1a; <dependency><groupId>org.apache.skywalking</groupId><artifactId>apm-toolkit-logback-1.x</artifactId><version>8.7.0</version></dependency><dependency><groupId>org.apache.sk…

蓝桥每日一题(day 3: 蓝桥587.约数个数)--数学--easy

题目 解题核心&#xff1a; 分解质因数&#xff0c;每个质因数的次方1的累乘积就是anscode #include <iostream> #include<algorithm> #include<unordered_map> //# #include<> typedef long long LL; const int N 110, MOD 1e9 7;using namespac…

【cmake】cmake生成Visual Studio工程后的INSTALL项目使用

很多开源项目使用CMake生成Visual Studio工程后会有INSTALL项目。 这个INSTALL项目是为安装编译产物&#xff0c;作用类似于make install。其使用与其他工程并不相同。 想安装编译产物&#xff0c;需右键INSTALL工程&#xff0c;在弹出的菜单中&#xff0c;选择“仅用于项目”…