c刷题(二)

目录

加减混合运算

计算n的k次方

计算非负整数各位之和

字符串逆序

双指针 

递归

矩阵计算

 矩阵转置


加减混合运算

题目:计算1 / 1 - 1 / 2 + 1 / 3 - 1 / 4 + 1 / 5 …… + 1 / 99 - 1 / 100 的值,打印出结果。

一般情况我们可以写个循环然后在用条件判断语句对两种情况进行判断,但这里有个更优质的办法,设置一个开关变量在正数和负数进行切换即可。

    int flag = 1;
	double sum = 0;
	for (int i = 1; i < 100; i++)
	{
		sum += flag* (1.0 / i);//注意小数
			flag = -flag;
	}
	printf("%lf", sum);

在计算分数时,除数和被除数至少有一个是小数,否则会被当成整数运算

计算n的k次方

三种情况(递归)

  • n < 0, 1.0 / Pow(n, -k)(利用正向递归后变为倒数)
  • n > 0, n* Pow(n,k-1)
  • n = 0, 1
double Pow(int n, int k)
{
	if (k < 0)
	{
		return 1.0 / n * Pow(n, -k);
	}
	else if (k == 0)
	{
		return 1;
	}
	else return n * Pow(n, k - 1);
}
int main()
{
    int n = 0;
	int k = 0;
	scanf("%d %d", &n, &k);
	double ret = Pow(n, k);
	printf("%lf\n", ret);
	return 0;
}

计算非负整数各位之和

用递归从后往前依次拆分,直到只有一位数。

int DigitSum(unsigned int n)
{
	if (n < 10)
		return n;
	else
        return DigitSum(n / 10) + n % 10;
}
int main()
{
	unsigned int num = 0;
	scanf("%u", &num);
	int sum = DigitSum(num);
	printf("%d\n", sum);
	return 0;
}

字符串逆序

给定一个字符假设abcdef,逆置成fedcba。

双指针 

设置首尾指针,交换后往中间靠拢。

//下标
void reverse_string(char* str)
{
	int len = strlen(str);
	int left = 0;
	int right = len - 1;

	while (left<right)
	{
		char tmp = *(str + left);
		*(str + left) = *(str + right);
		*(str + right) = tmp;
		left++;
		right--;
	}
}
//指针
void reverse_string(char* str)
{
	int len = strlen(str);
	char* left = str;
	char* right = str + len - 1;

	while (left<right)
	{
		char tmp = *left;
		*left = *right;
		*right = tmp;
		left++;
		right--;
	}
}

递归

递归可能不容易想到,因为这是从两头递归到中间结束条件即只剩一个数或没有数可以交换。递归怎么做到两头并进呢?这就要用到我们的\0了,当左边的数变为右边时,先不急着将左边的数换到右边,而是在右边位置补上一个\0,然后指针+1,形成递归,这样交换的时候就不用考虑\0后已交换的内容,实现正确逆置。

上图是递归的具体过程,从图可知,数组长度从手动替换\0开始计算(如果不满足条件就将\0替换成数字)。判断条件为数组长度大于1满足递归条件,但这是偶数的情况,如果是奇数,长度就是4,递归一次后变为2,此后不满足递归条件,所以正确判断条件应该是数组长度大于2

void reverse_string(char* str)
{
	int len = strlen(str);
	char* tmp = *str;
	*str = *(str + len - 1);
	*(str + len - 1) = '\0';
	if (*str > 2)
	{
		reverse_string(str + 1);
	}
	*(str + len - 1) = 'tmp';
}

矩阵计算

 矩阵打印用二维矩阵,在里层输入矩阵的值,判断大于0的数进行累加。 

    int n = 0;
    int m = 0;
    scanf("%d %d", &n, &m);
    int i = 0;
    int k = 0;
    int sum = 0;
	for (i = 0; i < n; i++)
	{
		int j = 0;
		for (j = 0; j < m; j++)
		{
			scanf("%d", &k);
			if (k >= 0)
				sum += k;
		}
	}
		printf("%d\n", sum);

 矩阵转置

注意转置要先将值存放到二维数组里,然后从原先按行打印变为按列打印即可。

	int n = 0;
    int m = 0;
    scanf("%d %d", &n, &m);
    //int arr[n][m];//c99
    int arr[10][10];
    int i = 0;
    int j = 0;
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < m; j++)
        {
            scanf("%d", &arr[i][j]);
        }
    }
	for (j = 0; j < m; j++)
	{
		for (i = 0; i < n; i++)
		{
			printf("%d ", arr[i][j]);
		}
		printf("\n");
	}

如果在一些刷题网站上,我们可以直接使用变长数组初始化数组,如果不使用变长数组,可以直接设置数组大小为题目规定的最大长度即可。

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

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

相关文章

win10 安装ubuntu子系统并安装宝塔

1、安装子系统 2、ubuntu 中安装宝塔 这里需要注意的&#xff1a; 大部分文章上写的是“面板账户登录信息”不能直接访问&#xff0c;要改成127.0.0.1&#xff1a;8888去访问。 这种情况适合“面板账户登录信息”端口就是8888。 想我的就是32757 这时你就要用 http://127.0.0…

开启想象翅膀:轻松实现文本生成模型的创作应用,支持LLaMA、ChatGLM、UDA、GPT2、Seq2Seq、BART、T5、SongNet等模型,开箱即用

开启想象翅膀&#xff1a;轻松实现文本生成模型的创作应用&#xff0c;支持LLaMA、ChatGLM、UDA、GPT2、Seq2Seq、BART、T5、SongNet等模型&#xff0c;开箱即用 TextGen: Implementation of Text Generation models 1.介绍 TextGen实现了多种文本生成模型&#xff0c;包括&a…

Leetcode 977. 有序数组的平方

题目&#xff1a; Leetcode 977. 有序数组的平方 描述&#xff1a; 给你一个按 非递减顺序 排序的整数数组 nums&#xff0c;返回 每个数字的平方 组成的新数组&#xff0c;要求也按 非递减顺序 排序 思路&#xff1a; 双指针法 数组其实是有序的&#xff0c; 只不过负数平方之…

Unity使用C# Protobuf源码

目录 第一步&#xff1a;下载源码 第二步&#xff1a;运行C#构建文件 第三步&#xff1a;处理报错&#xff08;如果你已安装对应的SDK则不会报错&#xff09; 第四步&#xff1a;复制库文件到你的工程 第一步&#xff1a;下载源码 protobuf github源码https://github.com/p…

pom文件---maven

027-Maven 命令行-实验四-生成 Web 工程-执行生成_ev_哔哩哔哩_bilibili 27节.后续补充 一.maven下载安装及配置 1)maven下载 2) settings文件配置本地仓库 3)settings配置远程仓库地址 4)配置maven工程的基础JDK版本 5)确认JDK环境变量配置没问题,配置maven的环境变量 验证…

React Native连接Zebra斑马打印机通过发送CPCL指令打印(Android 和 iOS通用)

自 2015 年发布以来&#xff0c;React Native 已成为用于构建数千个移动应用程序的流行跨平台移动开发框架之一。通常&#xff0c;我们有开发人员询问如何将 Link-OS SDK 与 React Native 应用程序集成&#xff0c;以便在 Zebra 打印机上打印标签。在本教程中&#xff0c;我们将…

Linux基础与应用开发系列九:各类系统函数

open_close函数 OPEN函数 头文件&#xff1a; #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> 函数原型&#xff1a; 当文件存在时 int open(const char* pathname,int flags) 当文件不存在时 int open (const char* pathname,int f…

使用 React Native CLI 创建项目

React Native 安装的先决条件和设置 需要掌握的知识点 掌握 JavaScript 基础知识掌握 React 相关基础知识掌握 TypeScript 相关基础知识 安装软件前需要首先安装Chocolatey。Chocolatey 是一种流行的 Windows 包管理器。 安装 nodejs 和 JDK choco install -y nodejs-lts …

【Docker】Docker中network的概要、常用命令、网络模式以及底层ip和容器映射变化的详细讲解

&#x1f680;欢迎来到本文&#x1f680; &#x1f349;个人简介&#xff1a;陈童学哦&#xff0c;目前学习C/C、算法、Python、Java等方向&#xff0c;一个正在慢慢前行的普通人。 &#x1f3c0;系列专栏&#xff1a;陈童学的日记 &#x1f4a1;其他专栏&#xff1a;CSTL&…

Centos7.9编写分布式集群大数据系统_自启动脚本---Linux工作笔记058

由于为了方便,系统在启动的时候,设置成系统所有的,集群软件都自动启动,这样,可以减少,运维成本,要不然,这么多,工具,有的还不知道放到什么位置了,一个个去启动,非常麻烦. 首先编辑: 编辑这个文件: 然后编辑这个文件,写上自己,自启动脚本的位置,然后保存 :wq 然后再给这个文件…

VSCode-Python传参数进行Debug

新建demo.py import argparse def parse_args():description "debug example" parser argparse.ArgumentParser(descriptiondescription) help "The path of address"parser.add_argument(--host,help help) parser.add_ar…

火车头采集伪原创插件【php源码】

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;python代码大全和用法&#xff0c;python代码大全简单&#xff0c;现在让我们一起来看看吧&#xff01; 火车头采集ai伪原创插件截图&#xff1a; 1、题目&#xff1a;列表转换为字典。 程序源代码&#xff1a; 1 #!/us…

灵眸:2023年上半年中国主要消费领域宏观数据概览报告(附下载)

关于报告的所有内容&#xff0c;公众【营销人星球】获取下载查看 核心观点 2023年上半年中国社会消费品零售总额22.8万化元。2023年上半年中国电商实体商品消费总额达6.1万亿元&#xff0c;同比增长10.8%。2023年上半年中国餐饮、汽车消费均超2万化元&#xff0c;餐饮、金银珠…

C#,数值计算——用于从连续的数据值流估计任意分位数的计算方法与源程序

1 分位数Quantile 分位数&#xff08;Quantile&#xff09;&#xff0c;亦称分位点&#xff0c;是指将一个随机变量的概率分布范围分为几个等份的数值点&#xff0c;常用的有中位数&#xff08;即二分位数&#xff09;、四分位数、百分位数等。 2 常见各类分位数 2.1 二分位…

去了字节跳动,才知道年薪40W的测试有这么多?

今年大环境不好&#xff0c;内卷的厉害&#xff0c;薪资待遇好的工作机会更是难得。最近脉脉职言区有一条讨论火了 哪家互联网公司薪资最‘厉害’&#xff1f; 下面的评论多为字节跳动&#xff0c;还炸出了很多年薪40W的测试工程师 我只想问一句&#xff0c;现在的测试都这么有…

Chrome有些网站打不开,但是火狐可以打开

Chrome有些网站打不开&#xff0c;但是火狐可以打开 问题描述火狐成功界面谷歌报错界面局域网设置使用代理服务器访问成功 解决方案参考 问题描述 开了一个tizi&#xff0c;Chrome不能使用&#xff0c;火狐可以。之前装过插件Ghelper白嫖科学上网&#xff0c;那次之后好像浏览…

uniapp两个单页面之间进行传参

1.单页面传参&#xff1a;A --> B url: .....?code JSON.stringify(param), 2.单页面传参B–>Auni.$emit() uni.$on()

Android Framework解析——WMS原理

作者&#xff1a;bobby_developer 1. WMS原理&#xff1a;WMS角色与实例化过程 window:它是一个抽象类&#xff0c;具体实现类为 PhoneWindow &#xff0c;它对 View 进行管理。Window是View的容器&#xff0c;View是Window的具体表现内容&#xff1b; windowManager:是一个接…

【深度学习中的批量归一化BN和层归一化LN】BN层(Batch Normalization)和LN层(Layer Normalization)的区别

文章目录 1、概述2、BN层3、LN层4、Pytorch的实现5、BN层和LN层的对比 1、概述 归一化(Normalization) 方法&#xff1a;指的是把不同维度的特征&#xff08;例如序列特征或者图像的特征图等&#xff09;转换为相同或相似的尺度范围内的方法&#xff0c;比如把数据特征映射到[…

如何维护自己的电脑

目录 1、关于电脑选择的建议 1.1、价格预算 1.2、明确需求 1.3、电脑配置 1.4、分辨率 1.5、续航能力 1.6、品牌选择 1.7、用户评测 1.8、各个电商平台对比 1.9、最后决策 2、我的选择 3、电脑保养 3.1 外部清洁 3.2 安装软件 3.3 优化操作系统 3.4 维护硬件设…