结构体基础例题

这里写目录标题

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

感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接
🐒🐒🐒 个人主页
🥸🥸🥸 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,因此造成死循环。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何在大型Python项目中优雅地使用Dotenv

如何在大型Python项目中优雅地使用Dotenv 引言Dotenv的基本概念什么是Dotenv&#xff1f;Dotenv的工作原理如何在项目中使用Dotenv 环境变量与大型项目配置环境变量的重要性管理不同环境的配置使用Dotenv优化配置管理 Dotenv的高级应用动态配置与环境切换安全性和敏感数据管理与…

深入了解Linux信号:作用、产生、捕捉和阻塞

这里写目录标题 引言1. 信号的基本概念1.1 信号的分类和编号&#xff1a;1.2 查看信号默认处理动作1.3 信号的作用1.4 信号的产生1.4.1通过终端按键产生1.4.2通过系统函数向进程发信号1.4.3由软件条件产生信号1.4.4硬件异常产生信号 2. 常见信号及其作用SIGINT (2) - 中断信号&…

智慧水务系统解决了哪些问题

随着城市化进程的加快&#xff0c;水资源的日益紧缺和水环境问题的日益突出&#xff0c;传统的水务管理方式已经无法满足现代城市的需求。为了解决这些问题&#xff0c;智慧水务系统应运而生。 一、智慧水务系统概述 智慧水务系统是一种基于物联网、大数据、云计算等先进技术…

回归预测 | MATLAB实现NGO-SCN北方苍鹰算法优化随机配置网络的数据回归预测 (多指标,多图)

回归预测 | MATLAB实现NGO-SCN北方苍鹰算法优化随机配置网络的数据回归预测 &#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现NGO-SCN北方苍鹰算法优化随机配置网络的数据回归预测 &#xff08;多指标&#xff0c;多图&#xff09;效果一览基本介绍…

前端检测字符串中是否含有特殊字符,并返回该特殊字符

一、判断字符串中是否含有特殊字符 const hasSpecicalCharacter (str) > {var regex /[!#$%^&*(),.?":{}|<>]/return regex.test(str) } //含有特殊字符返回true, 没有特殊字符返回false 二、判断字符串中是否含有特殊字符&#xff0c;并返回该特殊字符…

作业--day32

机械臂 #include <myhead.h>#define PORT 8888 #define IP "192.168.125.59"int main(int argc, const char *argv[]) {int sfd socket(AF_INET, SOCK_STREAM, 0);if(sfd -1){perror("socket error");return -1;}int reuse -1;if(setsockopt(sfd…

C# 调用腾讯混元大模型

写在前面 今天用C#调用了一下腾讯混元大模型&#xff0c;调用代码贴一下&#xff0c;具体的效果等深入使用后再来评价。 GitHub - TencentCloud/tencentcloud-sdk-dotnet: Tencent Cloud API 3.0 SDK for .NET 腾讯混元大模型简介_腾讯混元大模型购买指南_腾讯混元大模型操作…

等保测评主要保护哪些方面的安全?

等保测评是经公安部认证的具有资质的测评机构&#xff0c;依据国家信息安全等级保护规范规定&#xff0c;受有关单位委托&#xff0c;按照有关管理规范和技术标准&#xff0c;对信息系统安全等级保护状况进行检测评估的活动。那么企业做等保“保”的是什么呢&#xff1f; 等保主…

直播江湖:东方甄选与董宇辉的权力游戏

出品| 大力财经 文 | 魏力 近期&#xff0c;围绕东方甄选的小作文事件引起了广泛关注&#xff0c;有人将其解读为一场巧妙策划的事件营销&#xff0c;然而&#xff0c;舆情的不可控性使得事态逐渐演变为一场复杂的利益博弈。 东方甄选与董宇辉的“蜜月期”可以说是双方互相成就…

直流电、交流电和发电机、接地、变压器

直流电 此节内容主要摘录自&#xff1a;图文详解直流电与直流电路基本知识 直流电是指电流方向不随时间作周期性变化&#xff0c;由正极流向负极&#xff0c;但电流的大小可能会变化的电流。直流电可以分为稳定&#xff08;恒定&#xff09;直流和脉动直流两种&#xff0c;如下…

Re解析(正则表达式解析)

正则表达式基础 元字符 B站教学视频&#xff1a; 正则表达式元字符基本使用 量词 贪婪匹配和惰性匹配 惰性匹配如下两张图&#xff0c;而 .* 就表示贪婪匹配&#xff0c;即尽可能多的匹配到符合的字符串&#xff0c;如果使用贪婪匹配&#xff0c;那么结果就是图中的情况三 p…

ZKP Commitment (1)

MIT IAP 2023 Modern Zero Knowledge Cryptography课程笔记 Lecture 5: Commitment 1 (Ying Tong Lai) Overview: Modern SNARK IOP: Interactive Oracle ProofCommitment SchemeIOP “compiled by” the commitment scheme to get a non-interactive proofAn IOP is “inform…

【重点】【前缀树|字典树】208.实现Trie(前缀树)

题目 前缀树介绍&#xff1a;https://blog.csdn.net/DeveloperFire/article/details/128861092 什么是前缀树 在计算机科学中&#xff0c;trie&#xff0c;又称前缀树或字典树&#xff0c;是一种有序树&#xff0c;用于保存关联数组&#xff0c;其中的键通常是字符串。与二叉查…

windows10-tdengine的安装及使用

win10-tdengine的安装及使用 一、下载及安装配置1.1 下载安装1.2 配置 二、启动及关闭服务2.1 启动tdengine服务2.2 关闭tdengine服务2.2 开机自启动配置 四、可视化工具&#xff08;GUI&#xff09;4.1 下载4.2 安装 五、TDengine 命令行&#xff08;CLI&#xff09;5.1 进入命…

st.pp.normalize_total(data) # NOTE: no log1p

这段代码在使用 stlearn 包中的 st.pp.normalize_total 函数对数据进行总体计数标准化。标准化后&#xff0c;每个细胞的总计数都将等于 median(total_counts)。 NOTE: no log1p 这行注释表示在标准化后&#xff0c;数据不会进行 log1p 转换。log1p 转换将每个计数值增加 1&a…

【每日一题】1901. 寻找峰值 II-2023.12.19

题目&#xff1a; 1901. 寻找峰值 II 一个 2D 网格中的 峰值 是指那些 严格大于 其相邻格子(上、下、左、右)的元素。 给你一个 从 0 开始编号 的 m x n 矩阵 mat &#xff0c;其中任意两个相邻格子的值都 不相同 。找出 任意一个 峰值 mat[i][j] 并 返回其位置 [i,j] 。 你…

Java对象结构

Java 对象(Object 实例)结构包括三部分:对象头、对象体、对齐字节。 Object的三个部分 对象头包括三个字段&#xff0c;第一个字段叫做 Mark Word(标记字)&#xff0c;用于存储自身运行时的数据 例如 GC 标志位、哈希码、锁状态等信息。 第二个字段叫做 Class Pointer(类对象…

CEC2013(python):五种算法(HHO、WOA、GWO、DBO、PSO)求解CEC2013(python代码)

一、五种算法简介 1、哈里斯鹰优化算法HHO 2、鲸鱼优化算法WOA 3、灰狼优化算法GWO 4、蜣螂优化算法DBO 5、粒子群优化算法PSO 二、5种算法求解CEC2013 &#xff08;1&#xff09;CEC2013简介 参考文献&#xff1a; [1] Liang J J , Qu B Y , Suganthan P N , et al. P…

设计模式(三)-结构型模式(5)-外观模式

一、为何需要外观模式&#xff08;Facade&#xff09;? 要实现一个大功能&#xff0c;我们需要将它拆分成多个子系统。然后每个子系统所实现的功能&#xff0c;就由一个称为外观的高层功能模块来调用。这种设计方式就称为外观模式。该模式在开发时常常被使用过&#xff0c;所…

翻译: LLMs大语言模型影响到高工资的的白领知识工作者 加速各行各业的自动化潜力 Automation potential across sectors

我们已经探讨了生成人工智能可能对您的工作有用&#xff0c;也讨论了分析其对企业的影响。现在&#xff0c;让我们拉远镜头&#xff0c;看看它对不同公司的工作角色以及对不同行业部门的影响。这个视频的结果对特定企业可能不那么直接可行&#xff0c;但也许这会帮助您思考并尝…