结构体基础例题

news2024/12/23 5:09:55

这里写目录标题

  • 例题一
    • 例题解析
    • 答案
  • 例题二
    • 例题解析
    • 答案
  • 例题三
    • 例题解析
    • 答案
  • 例题四
    • 例题解析
    • 答案
  • 例题五
    • 例题解析及答案
  • 例题六
    • 例题解析及答案

感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接
🐒🐒🐒 个人主页
🥸🥸🥸 C语言
🐿️🐿️🐿️ C语言例题
🐣🐓🏀 python

以下是后面例题所涉及到的文章,如果有不会的可以点击查看
自定义类型结构体(上)
自定义类型结构体(中)
自定义类型结构体(下)

例题一

struct student
{
  int num;
  char name[32];
  float score;
}stu;

A.struct 是结构体类型的关键字
B.struct student 是用户定义的结构体类型
C.num, score 都是结构体成员名
D.stu 是用户定义的结构体类型名

例题解析

struct student是一个独一无二的结构体类型,而每个结构体都必须要有一个struct来作为一个关键字

结构体的成员就是结构体括号内num score(name[32]是结构体变量)

对于用户定义的结构体类型名,我们需要用到typedef,这里的stu其实是定义的结构体的类型变量

答案

答案 D

例题二

结构体访问成员的操作符不包含:( )
A. . 操作符
B -> 操作符
C * 解引用操作符
D sizeof

例题解析

注意这里是结构体访问成员的操作付,是访问成员

.操作符是结构体类型变量访问结构体中成员时

->操作符是指向结构体类型变量的指针访问结构体中成员时,就是通过找到地址去访问

指向结构体类型变量的指针也可以通过.方式访问成员,只不过要先通过*对该指针解引用

对于sizeof虽然是操作符,但是并不是访问成员的操作符

答案

答案 D

例题三

下面程序要求输出结构体中成员a的数据,以下不能填入横线处的内容是( )

#include < stdio.h >
struct S
{ 
  int a;
  int b; 
};
int main( )
{ 
  struct S a1, *p=&a1;
  a1.a = 99;
  printf( "%d\n", __________);
  return 0;
}

A.a1.a
B.*p.a
C.p->a
D.(*p).a

例题解析

这道题关键就是在于符号的优先级,下面是关于优先级顺序的图片
在这里插入图片描述
在这里插入图片描述
对于a1.a,a1是结构体类型变量,因此a1.a其实就是结构体成员a

对于*p.a,这里就需要用到优先级了,*操作符的优先级是低于.操作符的,所以 * p.a其实可以这样写成 * (p.a),显然是有问题的

p->a就是通过找到地址去访问结构体成员a

(*p).a其实就是等价于(a1).a

答案

答案 B

例题四

下面程序的输出结果是:( )

struct stu
{
    int num;
    char name[10];
    int age;
};

void fun(struct stu *p)
{
	printf("%s\n",(*p).name);
	return;
}

int main()
{
	struct stu students[3] = {{9801,"zhang",20},
							  {9802,"wang",19},
                              {9803,"zhao",18}};
   fun(students + 1);
	return 0;
}

A.zhang
B.zhao
C.wang
D.18

例题解析

这道题有点类似于二维数组,如果对二维数组不是很理解的可以看一下我之前写的一篇文章C语言深入理解指针(非常详细)(四)

struct stu
{
    int num;
    char name[10];
    int age;
};

结构体成员包括以下成员,int num,char name[10],int age

int main()
{
	struct stu students[3] = {{9801,"zhang",20},
							  {9802,"wang",19},
                              {9803,"zhao",18}};
   fun(students + 1);
	return 0;
}

这里的struct stu students[3]就是将结构体看成一个二维数组,二维数组的第一行为{9801,“zhang”,20},第二行为{9802,“wang”,19},第三行为{9803,“zhao”,18}

每一行有三个元素,我们以第一行为例,第一行的第一个结构体成员为int类型的9801,第二个结构体成员为一个字符数组的字符串"zhang",第三个结构体成员为int类型的20

fun(students+1)的students是这个二维数组的数组名,也就是首元素的地址,students+1就是第二行的地址,也就是{9802,“wang”,19}

void fun(struct stu *p)
{
	printf("%s\n",(*p).name);
	return;
}

最后这里打印的是(*p).name就是第二行的字符数组的字符串"wang"
在这里插入图片描述

答案

答案 C

例题五

喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少汽水(编程实现)

例题解析及答案

这道题其实很多人之前应该都听说过,当时记得有人说如果最后只剩一空瓶子就找老板先要一瓶汽水,然后喝完后再把两个空瓶子给他,这样就可以白嫖一瓶汽水

如果是这样的话我们最后需要用到一个if的判断语句,如果最后剩一个空瓶子就先要一瓶汽水,最后再把两个空瓶子还回去

我们从题目中可以很明显的看出这是一个等比数列,假设我们先将全部钱都花光买汽水,最后将汽水都喝完,然后去换,因为是两个空瓶换一瓶汽水,所以只需要对买的汽水总数都除2就行了,然后喝完后又去换,直到最后没有空瓶子

int main()
{
	int bottle = 20, count=20;
	while (bottle != 0)
	{
		if (bottle %2== 1&&bottle!=1)
		{
			count = count + 1;
		}
		if (bottle == 1)
		{
			count = count + 1;
			break;
		}
		bottle = bottle / 2;
		count = count + bottle;
	}
	printf("%d", count);
		
	return 0;
}

if (bottle %2== 1&&bottle!=1)是为了判断空瓶子是奇数还是偶数,如果是奇数并且不等于1的话我们只需要对喝的瓶子总数加1即可,因为整个循环中我们后面会对bottle总数除2,然后count加上bottle剩余的数量
在这里插入图片描述

在这里插入图片描述

例题六

VS开发环境调试下面的代码,画图解释下面代码的问题

#include <stdio.h>
int main()
{
    int i = 0;
    int arr[] = {1,2,3,4,5,6,7,8,9,10};
    for(i=0; i<=12; i++)
    {
        arr[i] = 0;
        printf("hello bit\n");
    }
    return 0;
}

例题解析及答案

答案解析:
以下代码有两个问题:1. 数组访问越界   2. 死循环
 以下代码在vs2013下会造成死循环,原因:
 栈内存:
         |CC  CC  CC  CC|
         arr[0]|01  00  00  00|\
         arr[1]|02  00  00  00| \
         arr[2]|03  00  00  00|  \
         arr[3]|04  00  00  00|   \
         arr[4]|05  00  00  00|    \
         arr[5]|06  00  00  00|    /  arr的空间
         arr[6]|07  00  00  00|   /
         arr[7]|08  00  00  00|  /
         arr[8]|09  00  00  00| /
         arr[9]|0A  00  00  00|/
               |CC  CC  CC  CC|
               |CC  CC  CC  CC|
               |00  00  00  00| i的空间
               |CC  CC  CC  CC|
for循环中,i的内容是从0,一直增加到12,而数组只有10个空间,因此会越界
每次访问arr数组i号位置时,都会将该位置内容设置为0,当访问到arr[12]时,也会将该位置内容设置为0,而位置恰好为i的位置,即a[12]恰巧将i设置为0,因此造成死循环。

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

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

相关文章

手机数码品牌网站建设的作用是什么

手机数码产品几乎已经成为成年人必备的&#xff0c;包括手机、电脑、摄像机、键盘配件等&#xff0c;同时市场中相关企业也非常多&#xff0c;消费者可供选择的商品类型也很多样&#xff0c;而对企业来讲&#xff0c;只有不断提升品牌形象、获客拉新等才能不断提升企业地位&…

亚信安慧AntDB数据库成功助力通信业务核心转型

账务数据库扮演着通信运营商业务支撑系统的核心角色&#xff0c;负责处理亿万用户资料同步、充值缴费和账务记录等重要任务。在5G建设逐渐普及的趋势下&#xff0c;5G业务规模也逐步扩大。面对5G业务的新特点&#xff0c;账务系统对数据库的高并发和高可用性提出了更高的要求。…

Ubuntu系统使用Nginx搭建RTMP服务器

环境&#xff1a; 推流端 rockpi s 主控rk3308 运行ubuntu系统 服务端 ubuntu 播放器 VLC播放器 服务端安装依赖&#xff1a; apt-get install build-essential libpcre3 libpcre3-dev libssl-dev创建nginx编译目录&#xff1a; mkdir my_nginx_rtmp cd my_nginx_rtmp/下载 …

亚马逊,速卖通,shein卖家如何准确有效的测评补单

一、合理规划测评时间和数量 卖家需要合理规划测评的时间和数量。如果卖家过于频繁地进行测评&#xff0c;或者在短时间内进行大量的测评&#xff0c;这可能会被视为恶意行为&#xff0c;从而触犯风控机制。因此&#xff0c;卖家需要根据自己的销售情况和市场需求&#xff0c;…

【机器学习】卷积神经网络(CNN)的特征数计算

文章目录 基本步骤示例图解过程 基本步骤 在卷积神经网络&#xff08;CNN&#xff09;中&#xff0c;计算最后的特征数通常涉及到以下步骤&#xff1a; 确定输入尺寸&#xff1a; 首先&#xff0c;你需要知道输入数据的尺寸。对于图像数据&#xff0c;这通常是 (batch_size, c…

ST股票预测模型(机器学习_人工智能)

知己知彼&#xff0c;百战不殆&#xff1b;不知彼而知己&#xff0c;一胜一负&#xff1b;不知彼&#xff0c;不知己&#xff0c;每战必贻。--《孙子兵法》谋攻篇 ST股票 ST股票是指因连续两年净利润为负而被暂停上市的股票&#xff0c;其风险较高&#xff0c;投资者需要谨慎…

域架构下的功能安全思考

来源&#xff1a;联合电子 随着整车电子电气架构的发展&#xff0c;功能域控架构向整车集中式区域控制演进。新的区域控制架构下&#xff0c;车身控制模块(BCM)&#xff0c;整车控制单元&#xff08;VCU&#xff09;&#xff0c;热管理系统&#xff08;TMS&#xff09;和动力底…

JDK各个版本特性讲解-JDK14特性

JDK各个版本特性讲解-JDK14特性 一、Java14概述二、语法层面的变化1. instanceof2. switch表达式3. 文本块的改进4. Records记录类型 二、关于GC1.G1的NUMA内存分配优化2. 弃用SerialCMS,ParNewSerial Old3.删除CMS4.ZGC on macOS and Windows 三、其他变化1.友好的空指针异常提…

利用python在abaqus中画Voronoi多面体简单示例

利用python在abaqus中画Voronoi多面体简单示例 利用scipy.spatial库得到Voronoi多面体顶点坐标abaqus中绘制多面体CAE操作得到相应rpy文件0、 将vertices.csv和ridge_vertices.csv导入abaqus1、 新建一个part2、创建点3、画线4、画面 完整代码 利用scipy.spatial库得到Voronoi多…

【03】GeoScene创建海图或者电子航道图数据

1 配置Nautical属性 1.1 管理长名称 长名称&#xff08;LNAM&#xff09;是一个必要的对象标识符&#xff0c;是生产机构&#xff08;AGEN&#xff09;、要素识别号码&#xff08;FIDN&#xff09;和要素识别子项&#xff08;FIDS&#xff09;组件的串联。这三个子组件用于数…

azkaban编译时报错的解决方案

大数据单机学习环境搭建(11)Azkaban单机部署&#xff0c;关于Azkaban和gradle下载&#xff0c;本文编译不限于单机solo模式。 一.大多数报错处理 1.1首先操作 1)安装 git yum install git -y 2)替换 azkaban 目录下的 build.gradle 文件的 2处 repositories 信息。改为 阿里…

回归预测 | MATLAB实现GA-LSSVM基于遗传算法优化最小二乘向量机的多输入单输出数据回归预测模型 (多指标,多图)

回归预测 | MATLAB实现GA-LSSVM基于遗传算法优化最小二乘向量机的多输入单输出数据回归预测模型 &#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现GA-LSSVM基于遗传算法优化最小二乘向量机的多输入单输出数据回归预测模型 &#xff08;多指标&#…

【HCIP学习记录】OSPF之DD报文

1.OSPF报文格式 24字节 字段长度含义Version1字节版本&#xff0c;OSPF的版本号。对于OSPFv2来说&#xff0c;其值为2。Type1字节类型&#xff0c;OSPF报文的类型&#xff0c;有下面几种类型&#xff1a; 1&#xff1a;Hello报文&#xff1b;● 2&#xff1a;DD报文&#xff1…

使用Kaptcha实现的验证码功能

目录 一.需求 二.验证码功能实现步骤 验证码 引入kaptcha依赖 完成application.yml配置文件 浏览器显示验证码 前端页面 登录页面 验证成功页面 后端 此验证码功能是以SpringBoot框架下基于kaptcha插件来实现的。 一.需求 1.页面生成验证码 2.输入验证码&#xff…

vue中echarts柱状图点击x轴数据复制

参考自&#xff1a;Vue 3 使用 vue-echarts 的柱状图 barItem 和 x, y 轴点击事件实现_echarts x轴点击事件-CSDN博客 例如柱状图如下&#xff1a; 步骤&#xff1a; 一、数据处理的时候需要在 xAxis 对象中添加&#xff1a;triggerEvent: true 这个键值对&#xff0c;以增加…

ES索引误删的名场面

慌了3秒&#xff0c;果断发个邮件&#xff1b; 01 最近&#xff0c;在版本发布时&#xff1b; ES线上未备份的索引&#xff0c;被当场「误删」了&#xff1b; 对于新手来说&#xff0c;妥妥的社死名场面&#xff1b; 对于老手来说&#xff0c;慌它3秒表示一下态度&#xff1…

Python3,100行代码,写一段新年祝福视频,为新年喝彩。

新年祝福 1、引言2、代码示例2.1 思路2.2 介绍2.2.1 画布2.2.2 用法 2.3 实例 3、总结 1、引言 小屌丝&#xff1a;鱼哥&#xff0c; 这2023年马上就结束了&#xff0c; 是不是要表示表示。 小鱼&#xff1a;我也在思考这个事情。 小屌丝&#xff1a;这还需要思考&#xff1f;…

kubernetesr安全篇之云原生安全概述

云原生 4C 安全模型 云原生 4C 安全模型&#xff0c;是指在四个层面上考虑云原生的安全&#xff1a; Cloud&#xff08;云或基础设施层&#xff09;Cluster&#xff08;Kubernetes 集群层&#xff09;Container&#xff08;容器层&#xff09;Code&#xff08;代码层&#xf…

modelsim使用技巧

Modelsim关闭Add items to the Project后&#xff0c;该如何添加existing file&#xff1a; 在project页面下&#xff0c;右键选择add to project-add existing file 设置modelsim的仿真波形时间单位&#xff1a; 打开Modelsim后&#xff0c;在Wave-Wave Preferences后&#…

从零开始学习Web自动化:用Python和Selenium实现网站登录功能!

Web自动化测试实战项目&#xff1a;使用Selenium和Python完成网站登录功能的自动化测试 本文将介绍如何使用Selenium和Python编写自动化测试脚本&#xff0c;对网站登录功能进行测试。我们将通过模拟用户在网站上输入用户名和密码&#xff0c;并点击登录按钮&#xff0c;来检验…