【C和数据结构-5+1】习题第一天

news2024/11/17 3:36:46

文章目录

  • 一.选择题
    • 1.整型在内存中的存储
    • 2.大小端字节序
    • 3.指针的大小
    • 4.形参一级指针或二级指针的区别
    • 5.二维数组传参降维成数组指针
  • 二.编程题
    • 1.自守数
    • 2.质数判断

一.选择题

1.整型在内存中的存储

猜一猜打印的结果?

int main()
{
	char a = 101;

	int sum = 200;

	a += 27; sum += a;

	printf("%d\n", sum);//72

	return 0;
}

答案:72

image-20230102095530182

整型在内存中的存储:

image-20230102103737347

整型提升的规则:

整型提升分为有符号和无符号两种,**有符号的:**整型提升时是按照变量的补码被截断时的最高位是什么进行补位的,如果截断后最高位即最左面的一位数为 1 则在最高位前补 1 ,如果最高位是 0 则在前面补 0 ,补够32位即int类型即可。 无符号的: 直接在被截断的前面补 0 即可。

image-20230102095820131

2.大小端字节序

猜一猜打印的结果?

int main()
{
	int value = 1024;
	char condition = *((char*)(&value));
	if (condition) value += 1; condition = *((char*)(&value));
	if (condition) value += 1; condition = *((char*)(&value));
	printf("%d %d\n", value, condition);
	return 0;
}

结果:1024 0

image-20230102100835027

无论大端模式还是小端模式, condition拿到的都是0000 0000(十进制的0),两个if语句都不执行!

大小端字节序:

字节序,就是 大于一个字节类型的数据在内存中的存放顺序。是在跨平台和网络编程中,时常要考虑的问题。

分类:

  1. Big-Endian(大端):高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。
  2. Little-Endian(小端):低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。

3.指针的大小

假设在32位机器上,读代码选结果

void func(int b[])
{
	printf("%d\n", sizeof(b));

}
int main()
{
	int a[10] = { 0 };
	func(a);
	return 0;
}

这里a是数组名,表示的是数组首元素的地址,在传参的时候数组名会降维成指针

所以形参b也是一个指针,而非数组名,所以在32位机器下,大小是4个字节.

4.形参一级指针或二级指针的区别

区分这三种操作

void func1(char* p1)
{
	p1 = p1 + 1;
}
void func2(char* p2)
{
	*p2 = *p2 + 1;
}
void func3(char** p3)
{
	
}

int main()
{
	char s[4] = { '1','2','3','4' };
	func1(s);
	printf("%c\n", *s);
	func2(s);
	printf("%c\n", *s);
	func3(&s);

	return 0;
}

结果: 1 2

image-20230102110018298

5.二维数组传参降维成数组指针

image-20230102110341424

答案:C和D

二.编程题

1.自守数

自守数是指一个数的平方的尾数等于该数自身的自然数。请求出n(包括n)以内的自守数的个数 例如: 25^2 = 625 , 76^2 = 5776 , 9376^2 = 87909376 。 输入描述:int型整数 输出描述:n以内自守数的数量。题目链接

V6水平解题(我):

#include <stdio.h>

int main()
{
    int n=0,cnt=0;
    scanf("%d",&n);
    while(n>=0)
    {
        int tem=n;
        int sq=n*n;
        while(n!=0)
        {
            if(n%10!=sq%10)
            {
                break;
            }
            n/=10;
            sq/=10;
        }
        if(n==0) cnt++;
        n=tem;
        n--;
    }
    printf("%d\n",cnt);
    return 0;
}

V1水平解题:

对 [0, n] 区间内的每个数字求平方,然后对n的几位数字进行是否相等判断,若相等则 count++ 但是 这样做效率较低,每个数字都要计算每一位数是否相等, n 是 m 位数,则需要进行循环 n*m 次才能得到结果.

更优思想 :两位数的时候只需要对平方取模100进行比较,三位数平方取模1000, 四位数取模10000…

#include<stdio.h>
#include<math.h>
int main()
{
    int n;
    while(~scanf("%d",&n))
    {
        long cnt=0,base=10;
        for(int i=0;i<=n;i++)
        {
            int pow_num=pow(i,2);
            if(i==base) base*=10;
            if(pow_num%base==i) cnt++;
        }
        printf("%d\n",cnt);
    }
    return 0;
}

2.质数判断

质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。

题目链接

#include <stdio.h>
#include<math.h>
int isPrime(int n)
{
    for(int i=2;i<=sqrt(n);i++)
    {
        if(n%i==0) return 0;//不是质数
    }
    return 1;
}
int main()
{
    int n;
    while(~scanf("%d",&n))
    {
        int cnt=0;
        for(int i=2;i<=n;i++)//0和1不是质数
        {
            if(isPrime(i))
            {
                cnt++;
            }
        }
        printf("%d\n",cnt);
    }
    return 0;
}

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

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

相关文章

2023年,无所谓,我会出手整合SSM

目录 一、简介&#xff1a; 二、Maven构建框架&#xff1a; 三、依赖配置 四、web.xml配置文件 五、创建SpringMVC的配置文件 六、Spring.xml配置环境 七、其他配置 八、Mapper.xml配置文件&#xff1a; 九、mybatis-config.xml配置文件&#xff1a; 十、log4j.xml日志…

Dropout详解:Dropout解决过拟合问题

Dropout 是一种能够有效缓解过拟合的正则化技术&#xff0c;被广泛应用于深度神经网络当中。但是被 dropout 所丢掉的位置都有助于缓解过拟合的吗&#xff1f; 中山大学 和 Meta AI 在 NeurIPS 2022 接收的论文在研究了注意力中的 dropout 后发现&#xff1a;不同注意力位置对过…

C++string类介绍

目录 一、介绍 二、string类对象的构造 string类有如下构造方法&#xff1a; 类对象的容量操作 类对象访问及遍历 string对象的修改操作&#xff1a; std::string::insert std::string::erase std::string::c_str std::string::find std::string::substr 一、介绍…

Linux学习笔记 超详细 0基础学习(上)

定义 linux是一个操作系统&#xff0c;与Windows、macos一样&#xff0c;是常见的操作系统之一&#xff0c;一般服务器会部署在Linux操作系统中&#xff0c;稳定应用广泛&#xff0c;Android系统是基于Linux内核的&#xff0c;所以了解Linux相关知识对于程序员来说是很重要的。…

人脸AI识别实战:用AI生成了这些人一生的样貌变化 | 附源码

这是来自斯坦福和华盛顿大学研究员发表的论文&#xff0c;提出了基于GAN的新方法&#xff0c;仅需要一张照片即可生成一个人从小时候到老了的样子。 论文&#xff1a;https://arxiv.org/abs/2003.09764 项目地址&#xff1a; https://github.com/royorel/Lifespan_Age_Trans…

windows上安装并使用exiftool修改图像exif信息

使用exiftool可以对图像的exif信息进行读取、修改、写入等操作。在linux系统上可以直接通过命令行安装&#xff0c;非常方便。但是在windows上&#xff0c;一开始我看了这篇博客&#xff0c;感觉里面写的还挺详细的&#xff0c;就跟着做了一下。里面是说要先安装perl&#xff0…

特斯拉突飞猛进背后带给自己的深思

引言 2013年开始接触汽车行业&#xff0c;那时候所做的事情也是跟着导师去解析整车CAN信号&#xff08;Message&#xff09;&#xff0c;也是从那时才知道车身现场总线——CAN总线。在那时候汽车给自己的感觉还是整车成本所占比重是机械高&#xff0c;软件比重低的可怜&#x…

【目标检测】语义分割之FCN算法学习

目录&#xff1a;FCN一、CNN与FCN的比较二、FCN上采样理论讲解2.1 双线性插值上采样2.2 反卷积上采样2.3 反池化上采样三、FCN的过程四、跳级结构一、CNN与FCN的比较 CNN&#xff1a;在传统的CNN网络中&#xff0c;在最后的卷积层之后会连接上若干个全连接层&#xff0c;将卷积…

字符串去重整理 哈希映射解题

目录 给你一个字符串数组&#xff0c;删除他们之间相同的元素&#xff0c;&#xff08;保留一个重复值&#xff09; 【方法一】使用迭代器进行区间删除 【方法二】原地删除 【方法三】使用计数跳过 1002. 查找共用字符 【解法一】我的第一个理解题意出错的解法 【解法二】初…

稀疏矩阵向量乘法的openmp并行优化

稀疏矩阵向量乘法 添加链接描述本人在这篇博客已经介绍过稀疏矩阵向量乘法以及相关的一些存储方式,这里重点开始介绍openmp的并行优化。 下面这个图片就是采用CSR格式读取稀疏矩阵向量乘法的主体架构,全称为Compressed Sparse Row Matrix压缩稀疏矩阵行格式,该格式对矩阵进…

MyBatis【MyBatis的增删改查操作与单元测试】

MyBatis【MyBatis的增删改查操作与单元测试】&#x1f34e;一.单元测试&#x1f352;1.1 什么是单元测试&#xff1f;&#x1f352;1.2 单元测试好处&#x1f352;1.3 Spring Boot 框架 单元测试使用&#x1f352;1.4 单元测试实现&#x1f352;1.5 断言&#x1f34e;二.MyBati…

性能测试-微服务性能压测监控和调优【重点】【杭州多测师_王sir】【杭州多测师】...

本文主要内容一、何为压力测试1.1、 大白话解释性能压测是什么&#xff1a;就是考察当前 软件和硬件环境下&#xff0c;系统所能承受的最大负荷&#xff0c;并帮助找出系统的瓶颈所在。性能压测的目的&#xff1a;为了系统在线上的 处理能力和稳定性维持在一个标准范围内&#…

【MySQL】MySQL存储过程与存储函数实战(MySQL专栏启动)

&#x1f4eb;作者简介&#xff1a;小明java问道之路&#xff0c;专注于研究 Java/ Liunx内核/ C及汇编/计算机底层原理/源码&#xff0c;就职于大型金融公司后端高级工程师&#xff0c;擅长交易领域的高安全/可用/并发/性能的架构设计与演进、系统优化与稳定性建设。 &#x1…

LeetCode题解 二叉树(九):106 中序和后序遍历序列构造二叉树;105 从前序与中序遍历序列构造二叉树

下面要讲的两道题&#xff0c;从二叉树的角度来讲&#xff0c;是非常重要的&#xff0c;此前一直是遍历二叉树&#xff0c;现在就要根据数组&#xff0c;构造二叉树 106 从中序与后序遍历序列构造二叉树 medium 示例&#xff1a;中序遍历 inorder [9,3,15,20,7] 后序遍历 po…

SpringBoot做个埋点监控

JVM应用度量框架Micrometer实战 前提 spring-actuator做度量统计收集&#xff0c;使用Prometheus&#xff08;普罗米修斯&#xff09;进行数据收集&#xff0c;Grafana&#xff08;增强ui&#xff09;进行数据展示&#xff0c;用于监控生成环境机器的性能指标和业务数据指标。…

Three.js一学就会系列:04 炫酷3D文字

系列文章目录 Three.js一学就会系列&#xff1a;01 第一个3D网站 Three.js一学就会系列&#xff1a;02 画线 Three.js一学就会系列&#xff1a;03 炫酷3D划线 文章目录系列文章目录前言一、创建一个vue项目二、安装及使用安装创建一个dom元素三、核心代码讲解场景处理“雾”光…

83.【JQuery.Ajax】

Ajax(一)、Ajax简介1.什么是Ajax2.jQuery.ajax介绍(二)、环境搭建1.创建Model并添加web框架2.配置Artifacts的lib文件3.配置web框架下的web.xml4.配置spring-mvc.xml配置文件5.配置汇总文件applicationContexe.xml6.进行测试(三)、伪造Ajax1.iframe内敛框架伪造Ajax(四)、使用真…

【阶段二】Python数据分析NumPy工具使用01篇:NumPy工具介绍、NumPy工具安装与数组的创建

本篇的思维导图: NumPy工具介绍 NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,这个包封装了多个可以用于数组间计算的函数供你直接调用,是一个运行速度非常快的数学库。 NumPy工具安装 代码 结果

从输入URL到渲染的过程中到底发生了什么?

CDN缓存DNSTCP三次握手、四次挥手浏览器渲染过程输入URL到页面渲染过程的一些优化 下面我将“从输入URL到渲染的全过程”大概的描述出来&#xff0c;再对其过程加以解释&#xff0c;了解过程中可以做哪些优化。文章内容有点长&#xff0c;需要有足够的耐心看完哟&#xff01;&…

MySQL数据库高级面试题(2)

✅作者简介&#xff1a;热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏&#xff1a;Java面试题…