C语言假期作业 DAY 14

这篇具有很好参考价值的文章主要介绍了C语言假期作业 DAY 14。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、选择题

1、有以下函数,该函数的功能是( ) 

int fun(char *s)
{
    char *t = s;
    while(*t++);
    return(t-s);
}

A: 比较两个字符的大小

B: 计算s所指字符串占用内存字节的个数

C: 计算s所指字符串的长度

D: 将s所指字符串复制到字符串t中

答案解析

正确答案: B
循环在 *t 为 0 时停止,同时 t++ , t 最后会停在字符串结束的 '\0' 之后的一个位置, t 作为尾部指针减去头部指针就是整个字符串占用内存的字节数,包含\0 在内;而 c 答案字符串长度不包括最后的 \0
 

2、若有“ float a[3]={1.5,2.5,3.5},*pa=a;*(pa++)*=3; ”,则 *pa 的值是( ) 

A: 1.5

B: 2.5

C: 3.5

D: 4.5

答案解析

正确答案: B
在 *pa=a 中指针 pa 指向 a[0] ; pa++ 返回值仍是操作之前的值; *(pa++) 取 pa 指向的地址的值; *(pa++)*=3 将该值变为原来的3 倍,也就是数组 a 的第一个值为 4.5 ;由于 pa++ 之后 pa 指针移动了 sizeof(float) 个字节,所以 pa 指向 a[1], 所以值为 2.5

3、以下程序运行后的输出结果是( )

#include <stdio.h>
int main()
{
    int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}, *p = a + 5, *q = NULL;
    *q = *(p+5);
    printf("%d %d\n", *p, *q);
    return 0;
}

A: 运行后报错

B: 6 6

C: 6 11

D: 5 10

答案解析

正确答案: A
指针 q 初始化为 NULL ,接着又解引用指针 q ,是错误的,对 NULL 指针是不能解引用的。

4、设有定义 char *p[]={"Shanghai","Beijing","Honkong"}; 则结果为 j 字符的表达式是( )

A: *p[1] +3

B: *(p[1] +3)

C: *(p[3] +1)

D: p[3][1]

答案解析

正确答案: B
B 选项, p 是个 char* 类型的数组, p[1] 拿到字符串 "beijing" 的首地址,再加 3 便是 'j' 的地址,解地址拿到 'j'

5、以下叙述中正确的是( )

A: 即使不进行强制类型转换,在进行指针赋值运算时,指针变量的基类型也可以不同

B: 如果企图通过一个空指针来访问一个存储单元,将会得到一个出错信息

C: 设变量p是一个指针变量,则语句p=0;是非法的,应该使用p=NULL;

D: 指针变量之间不能用关系运算符进行比较

答案解析

正确答案: B
A 选项描述不正确,不同类型指针一般不可以直接赋值; C 选项中, p=NULL; 和 p=0; 是等价的; D 选项中,指向同一数组的两指针变量进行关系运算可表示它们所指数组元素之间的位置关系。B 选项正确

二、编程题

1:LeetCode面试题 16.15. 珠玑妙算

面试题 16.15. 珠玑妙算 - 力扣(LeetCode)

描述

珠玑妙算游戏(the game of master mind)的玩法如下。

计算机有4个槽,每个槽放一个球,颜色可能是红色(R)、黄色(Y)、绿色(G)或蓝色(B)。例如,计算机可能有RGGB 4种(槽1为红色,槽2、3为绿色,槽4为蓝色)。作为用户,你试图猜出颜色组合。打个比方,你可能会猜YRGB。要是猜对某个槽的颜色,则算一次“猜中”;要是只猜对颜色但槽位猜错了,则算一次“伪猜中”。注意,“猜中”不能算入“伪猜中”。

给定一种颜色组合solution和一个猜测guess,编写一个方法,返回猜中和伪猜中的次数answer,其中answer[0]为猜中的次数,answer[1]为伪猜中的次数。

示例

输入: solution="RGBY",guess="GGRR"
输出: [1,1]
解释: 猜中1次,伪猜中1次。

提示

len(solution) = len(guess) = 4
solution和guess仅包含"R","G","B","Y"这4种字符

【答案解析】

遍历两个数组,统计猜中次数和伪猜中次数 猜中次数:若位置相同且颜色字符也相同在猜中次数计数器+1 伪猜中次数:颜色相同,但是在不同位置,这时候只需要除去猜中位置之外,统计两个数组中各个字符出现的数量, 取较小的一方就是每种颜色伪猜中的数量了

int* masterMind(char* solution, char* guess, int* returnSize)
{
	*returnSize = 2;
	static int arr[2] = { 0 };
	arr[0] = 0; arr[1] = 0;//静态空间不会进行二次初始化因此每次重新初始化,可以使用memset函数
	int s_arr[26] = { 0 };//26个字符位 solution 四种颜色数量统计
	int g_arr[26] = { 0 };//26个字符位 guess 四种颜色数量统计
	for (int i = 0; i < 4; i++) 
	{
		if (solution[i] == guess[i]) 
		{
			arr[0] += 1;//位置和颜色完全一致则猜中数量+1
		}
		else 
		{
			//统计同一位置不同颜色的两组颜色数量,伪猜中不需要对应位置相同,只需要有对应数量的颜色就行
			s_arr[solution[i] - 'A'] += 1; //统计solution对应颜色字符出现次数
			g_arr[guess[i] - 'A'] += 1;//统计guess对应颜色字符出现次数
		}
	}
	//在两个颜色数量统计数组中查看颜色数量,取相同位置较小的一方就是为猜中数量
	for (int i = 0; i < 26; i++) {
		arr[1] += s_arr[i] > g_arr[i] ? g_arr[i] : s_arr[i];
	}
	return arr;
}

2:NC61 两数之和

两数之和_牛客题霸_牛客网 (nowcoder.com)

描述

给出一个整型数组 numbers 和一个目标值 target,请在数组中找出两个加起来等于目标值的数的下标,返回的下标按升序排列。

(注:返回的数组下标从1开始算起,保证target一定可以由数组里面2个数字相加得到)

数据范围:2\leq len(numbers) \leq 10^52≤len(numbers)≤105,-10 \leq numbers_i \leq 10^9−10≤numbersi​≤109,0 \leq target \leq 10^90≤target≤109

要求:空间复杂度 O(n)O(n),时间复杂度 O(nlogn)O(nlogn)

示例1

输入:[3,2,4],6

返回值:[2,3]

说明:因为 2+4=6 ,而 2的下标为2 , 4的下标为3 ,又因为 下标2 < 下标3 ,所以返回[2,3]

示例2

输入:[20,70,110,150],90

返回值:[1,2]

说明:20+70=90

【答案解析】

在数组中拿到一个数字 num 后,在剩下的数字中查找是否有等于 target - num 的数字即可。文章来源地址https://www.toymoban.com/news/detail-627346.html

int* twoSum(int* numbers, int numbersLen, int target, int* returnSize) 
{
	*returnSize = 2;
	static ret_arr[2] = { 0 };
	memset(ret_arr, 0x00, sizeof(ret_arr));//静态空间不会二次初始化,因此手动初始化
	for (int i = 0; i < numbersLen; i++) 
	{//从第0个位置开始一个一个数字找
		for (int j = i + 1; j < numbersLen; j++) 
		{//从第一个数字往后的数字中找出另一个数字
		 //与numbers[i]相加等于target的数字找到了则i和j就是对应两个数字下标
			if (numbers[i] + numbers[j] == target)
			{
				ret_arr[0] = i + 1;//题目要求下标从1开始
				ret_arr[1] = j + 1;
				return ret_arr;
			}
		}
	}
	*returnSize = 0;//没有符合的下标则返回数组大小为0;
	return NULL;
}

到了这里,关于C语言假期作业 DAY 14的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 国庆假期day5

    1.OSI七层模型: 应用层--------提供函 表示层--------表密缩 会话层--------会话 传输层--------进程的接收和发送 网络层--------寻主机 数据链路层----相邻节点的可靠传输 物理层--------二进制比特流 OSI四层(五层)模型: 应用层 传输层 网络层 数据链路层+物理层-----网络接口和物理

    2024年02月07日
    浏览(35)
  • 【驱动开发day2作业】

    head.h mychrdev.c led.c

    2024年02月15日
    浏览(38)
  • 【驱动开发day4作业】

    头文件代码  应用层代码  驱动代码

    2024年02月15日
    浏览(37)
  • 【驱动开发day3作业】

    head.h  应用层代码 灯驱动代码 蜂鸣器驱动代码 风扇驱动代码 马达驱动代码  测试结果:    

    2024年02月15日
    浏览(38)
  • 【驱动开发day8作业】

     作业1: 应用层代码 驱动代码 作业2 驱动代码

    2024年02月14日
    浏览(34)
  • C语言:选择+编程(每日一练Day14)

    目录 选择题: 题一: 题二: 题三: 题四: 题五: 编程题: 题一:珠玑妙算 思路一: 题二:两数之和 思路一: 本人实力有限可能对一些地方解释和理解的不够清晰,可以自己尝试读代码,或者评论区指出错误,望海涵! 感谢大佬们的一键三连! 感谢大佬们的一键三连

    2024年02月09日
    浏览(60)
  • C语言入门 Day_14 for循环

    目录 1.for循环 2.循环执行顺序 3.易错点 4.思维导图 我们定义了一个数组以后,要使用(读取或者修改)数组元素的话,可以一个一个的读取,就前两课学的那样, 代码 类似这个结构。 假如我们对一个有10000个元素的数组,挨个打印输出他们的元素呢,难不成还要写一万行

    2024年02月10日
    浏览(37)
  • Day14-2-NodeJS后端开发流程

    apifox是目前最好的接口调试工具 1 环境搭建 安装 登录 创建项目 接口里面创建对应文件夹 在指定的文件夹里面创建接口 2 GET请求 1 apifox发送GET请求 2 后端接收GET请求

    2024年02月12日
    浏览(23)
  • Wpf 使用 Prism 实战开发Day14

    备忘录控制器(MemoController)和待办事项控制器 (ToDoController)功能实现差不多一样。基本套路就是: 定义控制器(Controller) 定义数据传输层(Dto) 配置实体类(Entity)和数据传输类(Dto) 关系映射(Auto Mapper) 定义服务接口(IService) 实现服务接口 (Service) 把服务注入控

    2024年01月22日
    浏览(43)
  • 假期学习资源:WEB网页网站开发入门基础课

    HTML入门到精通视频教程免费下载  链接: https://pan.baidu.com/s/1NyBZOgy6Iyolo2qXL819vg?pwd=adfc 提取码: adfc HTML5基础知识教程视频教程免费下载 链接: https://pan.baidu.com/s/129pvlmnYdMyT9FhWd14KEw?pwd=icbv 提取码: icbv CSS零基础入门到精通视频教程免费下载  链接: https://pan.baidu.com/s/1VbZONTL9Ez-ZDyZnC

    2024年02月13日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包