单选题22届期末复习PTA

news2024/11/26 16:34:29

知识点:

1.

(p->n)++ 会递增 p->n 的值,但是这个表达式的值仍然是递增之前的值

  p->n 会得到 a[0].n 的值,

++p->n 也会递增 p->n 的值,但是这个表达式的值是递增后的值 

p->next->n 访问 p 指向的结点的下一个结点的 n 值,这就是 a[1].n 的值

2.

*(pt+1):对 pt 指针加上 1 后再解引用==访问 pt 数组中的第二个元素

 &pt[2]:这将返回 pt 数组第三个元素的地址

3.

对于插入新节点:

新节点的任何形式都不能出现在第一个等号的右边,但是需要出现在后一个式子的等号的右侧

3.指向一级指针的只能是二级指针

  二级指针不能直接访问一级指针所指向的任何形式的变量,只能间接访问

4.指针中地址的引用不能加  * 

  指针所指向的具体值应该加 * 

5.char a[]="Itismine", *p="Itismine":

p所指向的地址可以修改,如果p所指向的是常量字符串,则不能修改,常量字符串本身是不能被修改的

6.p.next = &b; 和 p->next = &b; 不等价

点运算符 (.): 这种方式直接在结构体或者类的对象上访问其成员。

 

 箭头运算符 (->): 这种方式在通过指针间接访问结构体或类的成员时使用

7.指针指向最后一个节点的条件是p->next = NULL 

 8.指针对数组元素的引用问题

9.调用函数有什么要求,在书写方面?

m=f(a,n); 正确是因为它正确地传递了数组和数组长度给子函数。

而 A, B 和 C 分别存在参数类型不符、数组地址未正确传递等问题。正确的调用应该确保参数匹配函数原型。

 

 

 

10.宏

1 编译之前进行

11.char s[]="china"; char *p; p=s; 

 数组s的长度和p所指向的字符串长度相等—— 错误,这里需要理解数组长度和指针指向的字符串长度的区别。数组s的长度包括空终止符\0,而p指向的字符串通常指的是没有包含空终止符的字符序列的长度,除非特地去计算它。

习题易错

2-1

 若有以下说明语句,struct birthday
{int year;
int month;
int day;
}day1; 则下面叙述正确的是( )。

A.day1为结构体类型名

B.struct birthday为结构体变量名

C.month为结构体变量名

D.day1为结构体变量名

2-2

下叙述中不正确的是()。

A.一个结构体类型可以由多个称为成员(或域) 的成分组成

B.在定义结构体类型时,编译程序就为它分配了内存空间

C.结构体类型中的成员可以是C语言中预先定义的基本数据类型,也可以是数组和结构。

D.结构体类型中各个成员的类型可以是不一致的

2-3

当定义一个结构变量时,系统分配给它的内存空间大小是( )。

A.各成员所需内存量的总和

B.结构中第一个成员所需内存量

C.成员中占内存量最大者所需容量

D.结构中最后一个成员所需内存量

2-4

若程序中有下面的说明和定义

A.编译出错,结构体定义完要加分号

B.程序将顺利编译连接执行

C.能顺利通过编译连接但不能执行

D.能顺利通过编译但连接出错

2-5

设有如下定义,则对data中的a成员的正确引用是()。

struct sk{ int a; float b; } data, *p=&data;

A.(*p).data.a

B.(*p).a

C.p->data.a

D.p.data.a

2-6

设有以下说明语句:

struct ex
{
int x;
float y;
char  z;
} example;

则下面的叙述中不正确的是______。

A.struct是结构体类型的关键字

B.example是结构体类型名

C.x,y,z都是结构体成员名

D.struct ex是结构体类型

2-7

根据下面的定义,struct worker
{char name[18];
int age;
};
struct worker w[100]={"John",16,"Paul",17,"Mary",16 }; 能输出字母’P’的语句是( )。

A.printf("%c",w[1].name);

B.printf("%c",w[2].name[0]);

C.printf("%c",w[2].name[1]);

D.printf("%c",w[1].name[0]);

2-8

有以下结构体说明、变量定义和赋值语句:

struct SID

{ char name [10];

int age;

char sex;

}s[5],stu;

则以下 scanf函数调用语句有错误的是( )。

A.scanf("%s", s[0].name);

B.scanf("%d", &s[0].age);

C.scanf("%s", &stu.name);

D.scanf("%d",& stu.sex);

2-9

有以下结构体说明、变量定义和赋值语句,则以下scanf函数调用语句有错误的是

 struct STD         
 { char  name[10];         
   int  age;             
   char  sex;             
 } s[5],*ps;         
 ps=&s[0];

A.scanf("%c",&(ps->sex));

B.scanf("%d",ps->age);

C.scanf("%s",s[0].name);

D.scanf("%d",&s[0].age);

2-10

根据下面的定义,struct worker
{char name[18];
int age;
};
struct worker w[100]={"John",16,"Paul",17,"Mary",17 }; 能输出字符串’Mary’的语句是( )。

A.printf("%s",w[2].name);

B.printf("%s",w[1].name);

C.printf("%s",w[2]);

D.printf("%s",w[1]);

2-11

以下程序运行后的输出结果是

#include <stdio.h>

#include <string.h>

struct S

{
char name[10];
};

main()

{

struct S s1, s2;

strcpy(s1.name, "XXX");

strcpy(s2.name, "=");

s1 = s2;

printf("%s\n", s1.name);

}

A.XXX

B.=

C.XXX=

D.=XXX

2-12

以下程序运行后的输出结果是

#include <stdio.h>

#include <string.h>

struct S

{

char name[10];
    

};

main()

{
struct S s1, s2;

strcpy(s1.name, "12345");
    
strcpy(s2.name, "ABC");
    
s1 = s2;
    
printf("%s\n", s1.name);
    

}

A.12345

B.ABC

C.ABC45

D.12ABC

2-13

若有以下定义,struct data
{int x;
int y;
}data1;
int *p; 则使p指向data1中的成员x,正确的赋值语句是( )。

A.p=&a;

B.p=&data1.x

C.p=data1.x;

D.*p=data1.x;

2-19

在c语言中,不允许有常量的数据类型是( )

A.整型

B结构型

C.字符型

D.字符串

2-20

若有以下结构体类型定义,struct worker
{char name[16];
struct date
{int year;
int month;
int day;
}birthday;
}x;则赋值语句正确的是( )。

A.x.year=1999;

B.x.birthday.month=3;

C.x.name="黎明";

D.x.birthday=1999.9.9;

2-23

在单链表指针为p的结点之后插入指针为s的结点,正确的操作是()。

A.p->next=s;s->next=p->next;

B.s->next=p->next;p->next=s;

C.p->next=s;p->next=s->next;

D.p->next=s->next;p->next=s;

2-24

设curr是指向一个非循环单向链表的尾结点(该结点有data域和next域,next域为指向下一结点的指针)的指针,则curr->next的值是:( )。

A.TRUE

B.FALSE

C.NULL

D.'\0'

2-29

单链表的访问规则是( )。

A.随机访问

B.从头指针开始,顺序访问

C.从尾指针开始,逆序访问

D.可以顺序访问,也可以逆序访问

2-30

带头结点的单链表的结点结构Node包含数据域data、指针域next,当前指针为p,则使p指向下一个结点的语句是( )。

A.p->next=p->next->next;

B.p->next=p;

C.p=p->next;

D.p=p.next

2-38

如果有函数char *func(char *p, char ch),则下面说法错误的是( )

A.函数返回一个字符指针

B.可以通过语句"return NULL;"返回函数结果

C.可以通过语句"return -1;"返回函数结果

D.可以通过语句"return p;"返回函数结果

2-42

单链表的结点结构Node包含数据域data、指针域next,则next域存放的是( )。

A.下一个结点的地址

B.下一个结点的值

C.本结点的地址

D.本结点的值

2-43

下面对typedef的叙述中错误的是( )。

A.用typedef可以定义各种类型名,但不能用来定义变量

B.用typedef可以增加新类型

C用typedef只是将已存在的类型用一个新的标识符来代表

D.使用typedef有利于程序的通用和移植

1.在C/C++中,数组下标和指针算术可以相互转换,但 p[3][1] 的形式试图访问三维数组的元素,然而在本例中并没有定义这样的数组,因此 C 项不正确。此外,p[3] 将尝试访问超出数组范围之外的元素,在 C 中将引发未定义行为。

pp[0][1] :,如果 pp 指向了 p 数组的第一个元素并且我们将其视为一个指向指针数组的指针的话。但是在实际情况下,由于 pp 和 p 都是存储在栈上的局部变量,这种引用可能引发未定义行为,但至少从语法上看它是格式正确的。

a[10] :直接引用了 a 数组中的第 10 个元素,考虑到 a 数组有 12 个元素,这是一个合法的引用。

 ((p+2)+2) :超出了 p 数组的范围,

2-55

 答案是非零值(通常是1)

表示文件结束状态。当文件到达末尾时,feof() 函数返回非零值,否则返回0。

 

 

 

 

 

在 C 语言中,“rb”、“rb+”、“wb” 和 “wb+” 都是 fopen 函数用来打开二进制文件的模式:

- `"rb"` 表示以二进制格式打开一个文件供读取。如果文件不存在或者无法读取,函数将返回 `NULL`。
  
- `"rb+"` 类似于 `"rb"`,但是允许读/写。也就是说,在读模式下,你还可以写入文件。如果文件不存在或者无法读取,函数同样将返回 `NULL`。

- `"wb"` 是写模式的二进制文件打开方式。如果文件存在会被清空(即原有内容被删除),然后你可以向其中写入新的内容;如果文件不存在,则会创建一个新的文件。此模式下的文件只能写,不能读。

- `"wb+"` 在写模式的基础上增加了读的能力,所以你可以在写的同时读取文件中的信息。与 `"wb"` 类似,如果文件存在会被清空,并允许后续写入;如果文件不存在,则会创建新文件。

至于文本模式的 `"w"`、`"a+"` 等,它们的工作原理类似但适用于文本文件。例如:
 
- `"w"` 打开一个文本文件以写入,如果文件已经存在,其内容会被删除,就像 `"wb"` 模式。

- `"a+"` 打开一个文件用于追加和读取,如果文件不存在则创建之。初始位置是在文件的结尾,这样任何写入的内容都会添加到已有内容的后面。这种模式既支持读也支持写,读取时会从文件头部开始。 

总结来说,加上 `"b"` 后缀表示二进制模式,而无 `"b"` 后缀一般默认为文本模式,主要影响换行符的处理以及缓冲区的行为。

 

 

 

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

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

相关文章

八大排序浅入浅出

1&#xff09;选择一个增量序列t1&#xff0c;t2&#xff0c;…&#xff0c;tk&#xff0c;其中ti>tj&#xff0c;tk1&#xff1b; 2&#xff09;按增量序列个数k&#xff0c;对序列进行k 趟排序&#xff1b; 3&#xff09;每趟排序&#xff0c;根据对应的增量ti&#xff…

头歌资源库(16)分苹果

一、 问题描述 二、算法思想 首先&#xff0c;我们可以初始化一个数组apple来记录每个孩子分配的苹果数量&#xff0c;将所有元素初始化为1&#xff0c;表示每个孩子至少分配到一个苹果。 然后&#xff0c;从左到右遍历评分数组ratings&#xff0c;判断当前孩子的评分与前一个…

自动驾驶仿真测试用例表格示例 ACC ELK FCW

自动驾驶仿真测试用例表格示例 测试用例概览 本测试用例表格涵盖了自动驾驶系统中多个关键功能和场景的测试&#xff0c;旨在确保系统在不同条件下的表现和稳定性。 用例编号测试项目测试描述预期结果实际结果通过/失败TC-001ACC功能测试在高速公路上启用ACC&#xff0c;测试车…

2024最新版Python 3.12.4安装使用指南

2024最新版Python 3.12.4安装使用指南 2024最新版Python 3.12.4安装使用指南0. Python的受欢迎程度1. 安装最新版Python 3.12.42. 验证Python 3.12.4版本3. 验证Python功能4. 使用IDLE交互式开发模式5. 安装Python扩展库相关阅读&#xff1a; By Jackson 2024最新版Python 3.12…

C语言笔试题:实现把一个无符号整型数字的二进制序列反序后输出

目录 题目 实例 方法一&#xff1a;直接交换 方法二&#xff1a;间接交换 拓展 题目 编写一个函数&#xff0c;将一个无符号整数的所有位逆序&#xff08;在32位机器下&#xff09; 实例 例如有一个无符号整数 unsigned int num 32; unsigned int 在32位系统中占4个字…

C# 中的静态关键字

C# 语言中的 static 关键字用于声明静态类和静态类成员。静态类和静态类成员&#xff08;如构造函数、字段、属性、方法和事件&#xff09;在只需要一个对象&#xff08;类或类成员&#xff09;副本并在类型&#xff08;和成员&#xff09;的所有实例&#xff08;对象&#xff…

基于SpringBoot+Vue汽车配件销售管理系统设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;…

css-vxe列表中ant进度条与百分比

1.vxe列表 ant进度条 <vxe-column field"actualProgress" title"进度" align"center" width"200"><template #default"{ row }"><a-progress:percent"Math.floor(row.actualProgress)"size"s…

算法竞赛创新实践总结

目录 1 算法题目................................... 3 1.1 盛最多水的容器.......................... 3 1.1.1 题目................................ 3 1.1.2 双指针.............................. 4 1.1.3 代码................................ 5 1.2 分巧克力...…

【辨析】快速了解RBF神经网络与BP神经网络的区别

本文来自《老饼讲解-BP神经网络》https://www.bbbdata.com/ 目录 一、RBF与BP模型简介1.1.模型结构1.2.模型表达式 二、RBF神经网络与BP神经网络的对比2.1 RBF与BP的激活函数对比2.2 RBF与BP的思想对比 三、RBF神经网络与BP神经网络的训练方法对比2.1.BP神经网络的训练2.2.RBF神…

分布式架构的优势与实现

目录 前言1. 什么是分布式架构1.1 分布式架构的定义1.2 分布式架构的基本原理 2. 分布式架构的优势2.1 可扩展性2.2 容错性和高可用性2.3 性能优化2.4 灵活性和可维护性 3. 分布式架构的实现方法3.1 服务拆分3.1.1 功能拆分3.1.2 垂直拆分3.1.3 水平拆分 3.2 数据分布与存储3.2…

ES6 解构赋值详解

ES6是JavaScript语言的一次重大更新&#xff0c;引入了许多新特性和语法改进&#xff0c;其中解构赋值是一个非常实用和灵活的语法特性。它可以让我们从数组或对象中提取值&#xff0c;并赋给对应的变量&#xff0c;让代码变得更加简洁和易读。本文将深入探讨ES6解构赋值的语法…

Python | Leetcode Python题解之第179题最大数

题目&#xff1a; 题解&#xff1a; class Solution:def largestNumber(self, nums: List[int]) -> str:def quick_sort(l , r):if l > r: returni, j l, rwhile i < j:while strs[j] strs[l] > strs[l] strs[j] and i < j: j - 1while strs[i] strs[l] &l…

解决:Xshell通过SSH协议连接Ubuntu服务器报“服务器发送了一个意外的数据包,received:3,expected:20”

下图所示&#xff1a; 日志也基本看不出来问题在哪&#xff0c;只是说断开了连接大概是验证失败。有幸在某论坛评论区找到了原因&#xff0c;是因为我的xshell版本太低了而服务器的ssh版本太高&#xff0c;高版本的ssh默认屏蔽了一部分不太安全的算法导致建立连接的时候验证失败…

字节大牛耗时八个月又一力作,Android性能调优秘籍:设计思想与代码质量优化+程序性能优化+开发效率优化(全网疯传)

第一章、设计思想与代码质量优化 一、六大原则 二、设计模式 三、数据结构 四、算法 第二章、 程序性能优化 一、启动速度与执行效率优化 二、 布局检测与优化 三、 内存优化 四、耗电优化 五、网络传输与数据存储优化 六、APK 大小优化 第三章、 开发效率优化 一、…

【PL理论深化】(2) 语法分析 (Syntax) | 编程语言的语法结构:文法 | 语义结构 (Sematics)

&#x1f4ac; 写在前面&#xff1a;编程语言是由归纳法生成的程序的集合。定义属于该语言的程序的形式的规则&#xff0c;即编写程序的规则&#xff0c;称为编程语言的 语法分析 (syntax) 而定义属于该语言的程序的意义的规则称为 语义结构(semantics)。这两者都是归纳定义的。…

学习笔记——路由网络基础——路由转发

六、路由转发 1、最长匹配原则 最长匹配原则 是支持IP路由的设备默认的路由查找方式(事实上几乎所有支持IP路由的设备都是这种查找方式)。当路由器收到一个IP数据包时&#xff0c;会将数据包的目的IP地址与自己本地路由表中的表项进行逐位(Bit-By-Bit)的逐位查找&#xff0c;…

HCIP--OSPF(笔记3)

OSPF扩展配置 手工认证 【1】接口认证 -- 直连的邻居间&#xff0c;设定认证口令&#xff0c;进行身份核实&#xff0c;同时对双方交互的数据进行加密保护 [r9-GigabitEthernet0/0/1]ospf authentication-mode md5 1 cipher 123456 邻居间认证模式、编号、密码必须完全一致 【…

【UML用户指南】-20-对基本行为建模-交互图

目录 1、概述 2、顺序图 2.1、两个不同于通信图的特征&#xff1a; 2.1.1、顺序图有对象生命线 2.1.2、顺序图有控制焦点 2.2、结构化控制 2.2.1、可选执行opt 2.2.2、条件执行alt 2.2.3、并行执行par 2.2.4、循环迭代执行loop 2.3、嵌套活动图 3、通信图 3.1、两…

Selenium WebDriver - 网络元素

本文翻译整理自&#xff1a;https://www.selenium.dev/documentation/webdriver/elements/ 文章目录 一、文件上传二、定位策略1、传统定位器2、创建定位器3、类名4、CSS选择器5、id6、NAME7、链接文本8、部分链接文本9、标签名称10、xpath11、相对定位器它是如何工作的可用相对…