C++基础知识

这篇博客介绍了C++的基础知识,包括数学函数的使用、图形绘制、循环与数组操作、选择结构、递归算法、二维数组、字符串处理、结构体的定义以及查询日期差值的方法。适合C++初学者复习巩固。
摘要由CSDN通过智能技术生成

来自一个小白期末复习时的挣扎,希望大佬们不要笑话我。。。
第一次写博客,排版出了点问题,,

1.数学函数

头文件:cmath/math.h
常用函数: 求绝对值 abs(int x) 变量x必须是int型。
Fabs(float x) 变量x必须是float型。
求反余弦值 acos(float x) 变量x是float型且为弧度,定义域[-1,1]。
类似函数acos,atan,sin,cos,tan
求e的x次幂 exp(float x) 变量x和函数的返回值均为float型。
勾股定理 hypot(float x, float y) 变量x,y为直角三角形的两条直角 边,返回斜边(直接用函数可以节约 时间)
求自然对数 log(float x) 返回值为float型且变量x应该大于零。
类似函数log10
分解浮点数 modf(float num, float i) 将变量num分解并返回小数部 分(float)将整数部分存到i中。
求x的y次幂 pow(float x, float y) 变量x需大于零,返回值为float型。
求平方根 sqrt(float x) 变量x应大于等于0,返回值为float。
根据题目要求确定变量的类型,像边、角用double/float型即可,这类题型相对简单。

2.图形

合理利用for循环,分段输出,比如:

   #
  ###
 #####

可以先输出空格,再输出#,这样的题目难度较低,而像这样的:

     A
   ABA
  ABCBA

则分为空格,左半部分和右半部分并找出规律,比如这道题空格数依次减一,左半部分输出数和行数相等并从A即65依次加一,右半部分输出数为行数减一并从左半部分倒数第二个数即65+行数减一开始依次减一。这种题目稍加分析难度同样不会太大。

    #
   ###
  #####
   ###
    #

而这样的题目也只需要分为上下两部分即可解决。

3.循环(数组)

这类题型只要分析好题目,也不难解决。
比如最常见的求n!的题目,只需要用for循环从1循环到n同时进行累乘,记录最后结果的变量应该初始为1,如果累加初始为0,比如:

#include<bits/stdc++.h>
using namespace std;
int main(){
   
	int j=1,n;
	cin>>n;
	for(int i=1;i<=n;i++){
   
		j*=i;
	} 
	cout<<j<<endl;
	return 0;
} 

之所以没有累加做循环的例子是因为累加可以用n * (n + 1) / 2公式,减少程序运行时间。
对于部分需要多重循环的题目就像图形题行数是第一层循环并被套一层循环输出每行的内容,比较简单就不加代码和详解分析了。

4.选择

选择的问题可以用判断进行选择switch函数或者if函数,我建议用多个if函数进行套用,这样比较灵活也对这个函数比较熟悉。
比如判断是否为闰年的题目:

#include<bits/stdc++.h>
using namespace std;
int main(){
   
	int n;
	cin>>n;
	if(n%4==0&&n%100!=0||n%400==0){
   
		cout<<"Y"<<endl;
	}else{
   
		cout<<"N"<<endl;
	}
	return 0;
} 

这类选择的题目比较简单,而在真假话判断的题目中则需要多重循环并找对选择的条件,比如Assignment 5.10则运用多重循环进行枚举,然后分辨判断每种情况

#include<iostream>
using namespace std;
int main()
{
   
	int a, b, c, d, e;
	for(a = 1; a < 6; a ++)
	{
   
		for(b = 1; b < 6; b ++)
		{
   
			for(c = 1; c < 6; c ++)
			{
   
				for(d = 1; d < 6; d ++)
				{
   
					for(e = 1; e < 6; e ++)
					{
   	//为枚举每一种情况
						if((b == 2 && a != 3 || b != 2 && 3 == a)
							&& ((b == 2) + (e == 4) == 1)
							&& ((c == 1) ^ (d == 2))
							&& ((c == 5) != (d == 3))
							&& !((4 == e) == (a 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

铁憨憨子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值