寒假作业Day 02

这是第二天的作业,fighting!

Day 02

一、选择题

在这里插入图片描述

首先char* s[6]是指针数组,也就是其存储的都是这些字符串的地址,其实际上的类型为char**,而fun函数传入了s数组的首地址。而后续fun函数中打印字符,p[i]即*(p+i),我们也从之前的分析中发现了这个其实也就是一个二维数组,所以for循环打印的就是每行的字符串,也就是按照顺序打印0~3下标的字符串,故答案为ABCDEFGHIJKLMNOP

在这里插入图片描述

B可以转化为D,而B一看就知道是正确的,所以B和D可以表示a[1][1];而A,+5跳过五个元素的地址,故1 2 3 0 1,最后变成a[1][1];而C,&a[1]指的是第一行的地址,+1会跳过一整行元素,地址会变成a[2]这一行的首地址

在这里插入图片描述

void (*s[5])(int) 是C语言中的一个声明,它定义了一个名为 s 的数组,该数组包含5个元素,每个元素都是一个指向函数的指针。这些函数接受一个 int 类型的参数,并返回 void 类型。
这样的声明常常用于回调函数、函数表或其他需要动态或灵活地引用函数的场景。
举个例子:

#include <stdio.h>  void printInt(int x) {  printf("%d\n", x);  
}  int main() {  void (*s[5])(int);  // 声明一个包含5个函数指针的数组  s[0] = printInt;  // 将第一个元素设置为指向printInt函数  s[0](10);  // 使用数组中的第一个函数指针调用函数,输出10  return 0;  
}

故结果很明显,答案为函数指针数组

在这里插入图片描述

这里定义的是一个10行30列的二维指针数组,其中的每个元素都是指针,而指针大小在64位操作系统上的大小是8个字节,所以sizeof(k)的大小为10308=2400,选D

在这里插入图片描述
在这里插入图片描述

现在,让我们分析每个选项:

A: f(a);
a 是一个整数数组,当数组作为函数参数传递时,它会被转换为指向其第一个元素的指针,即 int* 类型。这与 f 所期望的 int** 类型不匹配。

B: f(b);
b 是一个二维整数数组。当二维数组作为函数参数传递时,它会被转换为指向其第一行的指针,即 int (*)[4] 类型。这与 f 所期望的 int** 类型不匹配。

C: f(q);
q 是一个整数指针数组,每个元素都是一个指向 b 的某一行的指针。这与 f 所期望的 int** 类型匹配,因为 q 的类型实际上是 int* [3],它会被转换为指向其第一个元素的指针,即 int**。

D: f(&a);
&a 是数组 a 的地址,其类型是 int (*)[4],即指向包含 4 个整数的数组的指针。这与 f 所期望的 int** 类型不匹配。

综上所述,只有选项 C: f(q); 是合法的调用。

二、编程题

第一个只出现一次的字符

在这里插入图片描述

int FirstNotRepeatingChar(char* str ) {// write code hereint a[128]={0};int i=0,t;for(i=0;str[i]!='\0';i++){t=str[i];a[t]++;}for(i=0;str[i]!='\0';i++){t=str[i];if(a[t]==1){return i;}}return -1;
}

首先ASCII码值一共有128个,我们创建一个拥有128个元素的数组,并将其所有元素初始化为0;下一步我们遍历原数组,创建一个int型变量t用来存储原数组的每个元素值,并让数组a对应位置值+1;接下来再遍历一次数组,如果这个元素出现了几次,那么a[t]绝对不等于1,而以顺序遍历,所以第一个为1的值,其下标t一定是str中第一个只出现一次的值

判定字符是否唯一

在这里插入图片描述

bool isUnique(char* astr){int a[128]={0};int i=0,t;for(i=0;astr[i]!='\0';i++){t=astr[i];a[t]++;}for(i=0;astr[i]!='\0';i++){t=astr[i];if(a[t]!=1){return false;}}return true;
}

这里我们可以使用上面的方法,是可以解决的,其实就是换了一个判断条件

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git安装与使用4.3

一、git的安装 1、下载git包 下载git包url&#xff1a;https://git-scm.com/download/win 下载包分为&#xff1a;64位和32位 2、点击安装包 2、选择安装路径 3、 点击下一步 4、点击next 5、点击next 6、点击next 7、 8、 9、 10、 11、 12、在桌面空白处&#xff0c;右键…

spring boot整合cache使用memcached 优化将配置信息放入 application中管理

上文 spring boot整合cache使用memcached 我们简单做了个 spring boot 整合cache 使用 memcached 缓存的案例 但 我们是将地址这类信息 放在了config 目录下的一个 配置类中了 这样 可维护性肯定是很低的 其实 memcached 是有一系列配置的 我们还是正确将 配置信息 写进 appli…

交友社交软件开发-php交友聊天系统-

为了开发一个高效的交友系统&#xff0c;需要一个完善的信息管理和筛选机制。这个系统应该能够根据用户的个人信息、兴趣爱好、价值观等标准进行筛选&#xff0c;并向用户提供符合他们要求心仪的人的信息。为了实现这个目标&#xff0c;系统可以利用人工智能技术&#xff0c;分…

蓝桥杯倒计时 43天 - 前缀和,单调栈

最大数组和 算法思路&#xff1a;利用前缀和化简 for 循环将 n^2 简化成 nn&#xff0c;以空间换时间。枚举每个 m&#xff0c;m是删除最小两个数&#xff0c;那k-m就是删除最大数&#xff0c;m<k&#xff0c;求和最大的值。暴力就是枚举 m-O(n)&#xff0c;计算前 n-(k-m)的…

《幻兽帕鲁》游戏对服务器性能的具体要求是什么?

《幻兽帕鲁》游戏对服务器性能的具体要求是什么&#xff1f; CPU&#xff1a;官方最低要求为i5-3570K&#xff0c;但在多人游玩时可能会有明显卡顿。此外&#xff0c;还有建议选择4核或更高性能的处理器&#xff0c;以确保游戏运行流畅。 内存&#xff1a;对于不同人数的联机&…

Liberod的License申请

Liberod的License申请 找到license申请的路径 查找C盘的磁盘序列号 键盘的win+R,输入cmd 输入vol,然后回车 图中的DiskID就是填写你C盘序列号的位置,填写完成后点击Register,几秒钟后会提示你,预计45分钟后会发送到你的邮箱

二维码门楼牌管理系统技术服务详解

文章目录 前言一、二维码门楼牌管理系统的设置原则二、二维码门楼牌管理系统的实施计划三、二维码门楼牌管理系统的管理要求四、个性化门牌的制作与费用 前言 随着信息技术的飞速发展&#xff0c;二维码门楼牌管理系统作为一种高效、便捷的管理手段&#xff0c;逐渐受到广泛关…

SpringBoot项目连接Redis报错:Connection refused: no further information

今天在使用SpringBoot连接Redis时发生了报错 明明Jedis能够连接成功为什么StringRedisTemplate就不行? 然后在网上找了一下说是关闭防火墙或者修改配置文件但是都不管用 最后发现是Redis在SpringBoot3之后yml的配置方式发生了改变 相较于之前多了一个前缀, 由于我刚开始没有…

GitLab代码服务器搭建

在Ubuntu上搭建GitLab服务器需要按照一系列步骤进行操作。以下是一个基本的指南&#xff1a; 安装必要的依赖包&#xff1a;首先&#xff0c;确保系统已经安装了所需的依赖包。这通常包括curl、openssh-server、ca-certificates和postfix&#xff08;如果你打算使用GitLab的邮件…

鉴源论坛 · 观辙丨TLS协议基本原理与Wireshark分析

作者 | 苏少博 上海控安可信软件创新研究院汽车网络安全组 来源 | 鉴源实验室 社群 | 添加微信号“TICPShanghai”加入“上海控安51fusa安全社区” 01 背 景 随着车联网的迅猛发展&#xff0c;汽车已经不再是传统的机械交通工具&#xff0c;而是智能化、互联化的移动终端。然…

【SVN】使用TortoiseGit删除Git分支

使用TortoiseGit删除Git分支 前言 平时我在进行开发的时候&#xff0c;比如需要开发一个新功能&#xff0c;这里以蘑菇博客开发服务网关-gateway功能为例 一般我都会在原来master分支的基础上&#xff0c;然后拉取一个新的分支【gateway】&#xff0c;然后在 gateway分支上进…

在golang中使用protoc

【Golang】proto生成go的相关文件 推荐个人主页&#xff1a;席万里的个人空间 文章目录 【Golang】proto生成go的相关文件1、查看proto的版本号2、安装protoc-gen-go和protoc-gen-go-grpc3、生成protobuff以及grpc的文件 1、查看proto的版本号 protoc --version2、安装protoc-…