【二级C语言考试】自定义数据类型

news2024/11/13 14:59:24

C语言二级考试——自定义数据类型

十、结构体(即“结构”)与共同体(即“联合”)

  1. 用 typedef说明一个新类型。
  2. 结构体和共用体类型数据的定义和成员的引用。
  3. 通过结构体构成链表,单向链表的建立,结点数据的输出、删除与插入。

知识点参考【C语言】自定义数据类型-CSDN博客

文章目录

    • typedef
    • 结构体

typedef

第一套13题

在这里插入图片描述

本题考查点是用户定义类型(typedef)。

指针数组和数组指针:

//指针数组,是存放指针的数组,即指针类型的数组
int a=0,b=1;
int* p1=&a,p2=&b;
int* arr1[]={p1,p2},arr2[]={&a,&b};
//数组指针
int arr[]={1,2,3,4,5};
int* p=arr;//arr被转换成了一个指针,可以直接赋值给指针变量

C语言允许用typedef说明一种新类型名,说明新类型名的语句一般形式为:typedef类型名 标识符;由题目可知T是指针类型,T a[10]是指针数组,int *a[10]是指针数组;int (*a)[10]是数组指针;int *a是指针变量;int a[10]是数组。本题答案为C

结构体

第一套11题

在这里插入图片描述

本题考查结构体的运用。

  • 本题在结构体内定义了指针变量name,字符变量gender,整型变量score,在主函数中定义了两个结构体变量a和b,并为a赋予了新值(初始化);语句b=a是将结构体变量a的内容赋给了结构体变量b。

  • strcpy(arr1,arr2)函数是拷贝arr2到arr1。

  • void *malloc(size_t size)函数:分配所需的内存空间,并返回一个指向它的指针。

  • 对于结构体的赋值,意味着将其中的每一个元素都进行赋值,需要访问结构体变量元素,形式结构体变量name.成员name,一级一级的找到最低一级成员再进行对其操作。但该题中b.gender=‘f’;b.score=350;语句又为b赋予了新值,a.name和b.name是指向同一内存地址的,因此a.name=b.name=Zhao。故本题答案为D

第一套12题

在这里插入图片描述

注意:本题和上一题的区别是,在主函数前定义了void类型的函数f,调用f函数,在f函数体中给p开辟了一个新的空间,在新的空间里的*p=Qian,但对主函数无任何影响。语句中又为b中的gender和score元素赋予了新值,b.gender=‘f’;b.score=350;.故本题答案为B

关于该题程序的思考:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct stu{
	char *name,gender;//成员name赋值内容为字符串形式,同时下面的函数malloc申请内存空间,定义为char*类型
	int score;
}STU;
void f(char* p){
	p=(char*)malloc(10);//如果该函数不申请新的内存空间,主函数中的b.name调用该函数时,会改变值
	strcpy(p,"Qian");
}
main(){
	STU a={NULL,'m',290},b;
	a.name=(char*)malloc(10);//name指向空,需要申请内存地址
	strcpy(a.name,"Zhao");//将Zhao拷贝到a.name指向的地址
//	a.gender=(char*)malloc(10);给gender申请内存后,注意printf的形式应为%s
//	strcpy(a.gender,"M");
	b=a;
	f(b.name);
	//b.name='test';注意不能给指针直接赋值,下面同理
//	b.name=(char*)malloc(10);//给b.name申请新的空间,输出指向的是新的空间,即给b.name再一次进行了赋值
	//strcpy(b.name,"Qian");//指针指向的还是a.name的地址,不会输出该拷贝的值
	b.gender='f';//如果上面没有申请gender地址,可以直接赋值,score同理
	//strcpy(a.name,"A");
	//a.name="A";
	//b.name="Qian";
	//b.gender='F';
	b.score=350;
	printf("%s,%c,%d",a.name,a.gender,a.score);
	printf("%s,%c,%d",b.name,b.gender,b.score);
}

第一套17题

在这里插入图片描述

本题考查点是结构体的运用。

本题定义了两个结构体变量a和b,f(a,b)函数是按值传送(传值调用),因此在f函数中将a的内容复制给b,输出Zhao,m,290,但并未对主函数中结构体b中的值造成影响,因i主函数中输出Qian,f,350.故本题答案为A。

  • 函数参数:一默认情况下,C使用传值调用来传递参数。一般来说。这意味着函数内的代码不能改变用于调用函数的实际参数。题中代码表明,虽然在函数内改变了a和b的值,但是实际上a和b的值没有发生变化。

第一套18题

在这里插入图片描述

该题中的f函数是引用传值。上面的实例表明了,与传值调用不同,引用调用在函数内改变了a与b的值,实际上也改变了函数外a与b的值。故答案为A

  • 传值调用,该方法把参数的地址复制给形式参数。在函数内,该地址用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。

第一套20题

在这里插入图片描述

本题考查的是结构体数组。

  • 结构体数组,是指数组中的每一个元素都是一个结构体类型。
  • 访问数组中的特定元素时,第一个索引值为0

假设i,j为整型;stud[i].name[j]对应的是变量stud[10]的第i+1个元素,name[10]中的第j个元素。故本题答案为D。

第一套24题

在这里插入图片描述

本题的考查点是对结构体变量成员的引用和结构体指针。

  • 若已定义了一个结构体变量和基类型为同一结构体类型的指针变量,并使该指针指向同类型的变量则可以用以下三种形式来引用结构体变量中的成员,结构体变量名也可以是已定义的结构体数组的数组元素。(1)结构体变量名.成员名(2)指针变量名->成员名(3)(*指针变量名).成员名。故本题答案为B。

第一套27题

在这里插入图片描述

解析如上题,本题答案为A。

第一套28题

在这里插入图片描述

本题考查的是结构体指针和数组指针访问

  • 数组指针int* p=arr=&arr[0]代表的都是数组的首地址。
  • 指针访问:在定义数组指针int* p=arr后,a[2]等价于*(p+2)

由题目可知room指针指向的是结构体room[4]的第一个元素{“Zhao",19};{room+2}->name指针指向的是结构体room[4]的第三个元素中的Wang。故本题答案为C。

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

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

相关文章

Java中ArrayList和LinkedList的比较

注&#xff1a;Joshua Bloch 就是 LinkedList 的作者 在Java中&#xff0c;ArrayList和LinkedList都是常用的列表实现类&#xff0c;它们都实现了List接口&#xff0c;但在内部工作原理和性能方面有显著差异。 ArrayList&#xff1a;基于动态数组实现。随着元素的增加&#x…

小新-13 2019 Intel款IML版【81UQ】原装出厂Win10系统镜像下载

恢复lenovo联想开箱状态&#xff0c;自带预装OEM系统安装包 链接&#xff1a;https://pan.baidu.com/s/1wwPriBoIwNOAfL-YcX1F7g?pwdg7ki 提取码&#xff1a;g7ki 联想原装出厂系统自带所有驱动、出厂主题壁纸、系统属性联机支持标志、系统属性专属LOGO标志、Office办公软…

如何联系真正的开发者而非公司??

&#x1f3c6;本文收录于《全栈Bug调优(实战版)》专栏&#xff0c;主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&am…

T9-猫狗识别2(暂时版qaq)

T9周&#xff1a;猫狗识别2 **一、前期工作**1.设置GPU,导入库2.导入数据3.查看数据 **二、数据预处理**1.加载数据2.可视化数据3.配置数据集 **三、构建CNN网络模型****四、编译模型****五、训练模型****六、模型评估****七、预测**八、总结&#xff08;暂时&#xff09; &…

信奥初赛解析:1-3-计算机软件系统

知识要点 软件系统是计算机的灵魂。没有安装软件的计算机称为“裸机”&#xff0c;无法完成任何工作硬件为软件提供运行平台。软件和硬件相互关联,两者之间可以相互转化&#xff0c;互为补充 计算机软件系统按其功能可分为系统软件和应用软件两大类 一、系统软件 系统软件是指…

【Redis入门到精通三】Redis核心数据类型(List,Set)详解

目录 Redis数据类型 ​编辑 1.List类型 &#xff08;1&#xff09;常见命令 &#xff08;2&#xff09;内部编码 2.Set类型 &#xff08;1&#xff09;常见命令 &#xff08;2&#xff09;内部编码 Redis数据类型 查阅Redis官方文档可知&#xff0c;Redis提供给用户的核…

【2024/09/20更新】植物大战僵尸杂交版V2.5下载

植物大战僵尸杂交版V2.5 2.5版本更新公告&#xff1a; 增加新关卡– 益智模式–两面夹击模式关卡 挑战模式关卡 增加新铲子–骷髅铲子 --银币购买-挖掉植物触发亡语或召唤骷髅僵尸 增加新植物– 4张白卡植物-通过两面夹击获得 2张金卡植物和4张星卡植物 游戏调整– 调整…

Coggle数据科学 | 科大讯飞AI大赛:玉米雄穗识别挑战赛

本文来源公众号“Coggle数据科学”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;科大讯飞AI大赛&#xff1a;玉米雄穗识别挑战赛 赛题名称&#xff1a;玉米雄穗识别挑战赛 赛题类型&#xff1a;计算机视觉、物体检测 赛题任务&…

图的应用(关键路径)

基于你设计的带权有向无环图&#xff0c;写出所有合法的关键路径&#xff0c;并算出关键路径总长度 文字描述&#xff1a;关键路径总长度的现实意义是什么&#xff1f; 1.关键路径 总长度454316 2.现实意义 从源点到汇点的所有路径中&#xff0c;具有最大路径长度的路径称…

MySQL高阶1892-页面推荐2

目录 题目 准备数据 分析数据 总结 题目 您正在为一个社交媒体网站实施一个页面推荐系统。如果页面被user_id的 至少一个朋友喜欢 &#xff0c;而 不被user_id喜欢 &#xff0c;你的系统将 推荐 一个页面到user_id。 编写一个解决方案来查找针对每个用户的所有可能的 页面…

感知笔记3:平面和物体检测

识别平面表面&#xff1a;这项技能使机器人能够检测物体通常所在的位置&#xff0c;如桌子和架子。这是搜索物体的第一步。识别物体&#xff1a;一旦您知道在哪里寻找&#xff0c;就必须在场景中识别不同的物体&#xff0c;并根据机器人的位置&#xff08;坐标系&#xff09;定…

【STL】pair 与 map:基础、操作与应用

C 标准库中提供了许多用于处理数据结构的容器和工具。pair 和 map 是两个非常有用的工具&#xff0c;广泛应用于存储和处理关联数据。在本文中&#xff0c;我们将详细介绍 pair 与 map 的相关操作&#xff0c;并结合代码实例为读者提供清晰的理解。 pair&#xff1a;成对数据的…

基于SpringBoot+Vue的家政预约平台系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的…

powerbi-L8-导入数据时候的动态列

背景&#xff1a; 在数据导入之后刷新的过程中出现了无法刷新的异常报错&#xff0c; 检查后发现是由于原始数据的列的名字变化导致了power BI在处理数据类型的时候 需求 处理方法是什么&#xff0c; &#xff1f; 方法 动态获取表格的列&#xff1a; 获取数据的时候&#xff…

身份证识别接口的应用场景和作用

引言 在信息化与数字化高速发展的今天&#xff0c;身份证作为个人身份的重要证明文件&#xff0c;在各行各业的应用越来越广泛。传统的身份证信息录入和审核过程通常需要人工操作&#xff0c;不仅效率低下&#xff0c;而且容易出现错误。为了解决这些问题&#xff0c;身份证识别…

iftop流量监控工具

一、iftop简介 iftop可以用来监控网卡的实时流量&#xff08;可以指定网段&#xff09;、反向解析IP、显示端口信息等&#xff0c;详细的将会在后面的使用参数中说明。 二、安装iftop 1、编译安装 如果采用编译安装可以到iftop官网下载最新的源码包。 1.1 CentOS上安装所需…

学习之使用IDEA集成GIT

一、环境准备 1.1 配置git忽略文件 git.ignore 文件模版内容如下: # Compiled class file *.Class#Log file *.log# BlueJ file *.ctxt# Mobile Tools for Java (J2Me) *.mtj.tmp/# Package File *.jar *.war *.nar *.ear *.zip *.tar.gz *.rar.classpath .project .settings…

基于SSM+Vue+MySQL的酒店管理系统

系统展示 用户前台界面 管理员后台界面 系统背景 随着旅游业的蓬勃发展&#xff0c;酒店业作为旅游产业链中的重要一环&#xff0c;面临着日益增长的客户需求和激烈的市场竞争。传统的人工酒店管理模式已难以满足高效、精准、个性化的服务要求。因此&#xff0c;开发一套基于SS…

powerBi -L4-分组求和

有如下的表格&#xff1a;我们想统计 不同商品的销售次数&#xff0c;根据商品ID进行分类&#xff0c;统计不同ID出现的次数 1.新建列&#xff1a; 2.输入如下的公式 分组统计序列 COUNTROWS(FILTER(数据源,[商品类别]EARLIER(数据源[商品类别])&&[索引]<EARLIE…

算法学习1

知识点 一.时间复杂度二.排序1.选择排序2.冒泡排序 三.异或交换 一.时间复杂度 列如&#xff1a; //长度为n的整型数组 int arr[n];//循环1 for(int i 0 ;i < n; i) {for(int j i;j < n;j){cout << arr[i] << endl;cout << arr[j] << endl;}…