IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 例题笔记c++ -> 正文阅读

[C++知识库]例题笔记c++


前言

提示:以下是本篇文章正文内容,下面案例可供参考

一.递归

1.李白打酒 (递归)

话说大诗人李白,一生好饮。幸好他从不开车。 一天,他提着酒壶,从家里出来,酒壶中有酒2斗。他边走边唱:
无事街上走,提壶去打酒。
逢店加一倍,遇花喝一斗。
这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了。
请你计算李白遇到店和花的次序,可以把遇店记为a,遇花记为b。则:babaabbabbabbbb 就是合理的次序。像这样的答案一共有多少呢?请你计算出所有可能方案的个数(包含题目给出的)。

代码如下(示例):

#include<iostream>
#include<cmath>
using namespace std;
int i;
void n(int hua, int dian, int jiu)//剩下遇到花的次数,剩下遇到店的次数,此时壶中酒量 
{
	
	if (hua == 0 && dian == 0 && jiu == 1)//最后一次遇见的是花可知酒有一斗
		++i;
	if (hua > 0)
	{
		n(hua - 1, dian, jiu - 1);
	}
	if (dian > 0)
	{
		n(hua, dian - 1, jiu * 2);
	}
}
int main()
{
	n(9, 5, 2);
	cout << i;
	return 0;
}


2.猴子吃桃

有一只猴子吃一堆果子,已知每天吃昨天剩下的果子的一半再多一个,直到第10天才吃完。问原来这堆果子有多少个?

请你使用递归的方法编程。程序命名为Lab3_2.cpp。

#include <iostream>
using namespace std;
int fab(int n);
int fab();
int main()
{
		cout<<"fab(int n): "<<fab(10)<<endl;
		cout<<"fab(): "<<fab()<<endl;
	return 0;
}
//递归 
int fab(int n)//n为天数 
{
	if(n==1)//即第十天 
		return 2;//第十天还没吃桃前一定剩2个桃子 
	else
		return 2*(fab(n-1)+1);
}
//循环 
int fab()
{
	int m=2,x;
	for(int i=1;i<10;i++)
	{
		x=2*(m+1);
		m=x;
	}
	return x;
}
#include<iostream>
using namespace std;
int chitao(int day)
{
	int num;//num为当天剩下的桃子数(当天还没吃前桃子数) 
	if(day==10)
	{
		num=2;
	}
	else
	{
		num=(chitao(day+1)+1)*2;
	} 
	return num;
	
}
int main()
{
int num=chitao(1);
cout<<"原来这堆果子有"<<num<<"个"<<endl;
}

二.素数

1.哥德巴赫猜想

通过网络了解哥德巴赫猜想,然后编写程序。要求是输入任意一个100万之内的偶数N,找出是两个素数A和B,令A+B=N。程序命名为Lab4_4.cpp
//哥德巴赫猜想是说任何一个大于2的偶数都能表示成为两个素数之和。

#include<iostream>
#include<cmath>
using namespace std;

bool isPrime(long x) {
	for (long i = 2; i <= sqrt(x) + 1; i++)
	{
		if (x%i == 0)
			return 0;
		return 1;
	}
}
int main()
{
	long n;
	cout << "请输入一个偶数(4<n<10^6):";
	cin >> n;
	if (n % 2 == 1 || n <3 )exit(0);
	for (long i = 2; i <= 0.5*n; i++)
	{
		if (isPrime(i) && isPrime(n - i))
			cout << i << "+" << n - i << "=" << n << endl;
	}
	return 0;
}

三.

1.至今活了几天

编写一个程序,输入你的出生年月日,以及当前年月日,计算你出生到现在有多少天了。程序命名为Lab3_5.cpp
my

#include<iostream>
using namespace std;
int leap(int y)//判断闰年 
{
	if(y%400==0||y%4==0&&y%100!=0)
	{
		return 1;
	}
	return 0;
}
//计算这一天是这一年的第几天
int dday(int y,int m,int d)
{
  int day=0;
  int month[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
  if(leap(y))
  {
  	month[2]=28;
  }
 	for(int i=0;i<m;i++)
 	{
 		day+=month[i];
	 }
	 day+=d;
	 return day;
}
int main()
{
	int year,month,day,leapCount=0;
	int n_year,n_month,n_day; 
	cout<<"请输入你的出生年月日";
	cin>>year>>month>>day;
	cout<<"请输入当前年月日";
	cin>>n_year>>n_month>>n_day; 
	for(int i=year;i<n_year;i++)
	{
		leapCount+=leap(i);//出生年到当前年份闰年有多少年
	}
	int day1=dday(year,month,day);
	int day2=dday(n_year,n_month,n_day);
	int sum=leapCount+(n_year-year)*365+day2-day1;
	cout<<"出生到现在的天数:"<<sum<<endl;
	return 0;
 } 

邹er

#include <iostream>
#include <ctime>
using namespace  std;
int totalDays(int y ,int m,int d){
	int t=0;
	int prey=y-1;
	int days[]={0,31,59,90,120,151,181,212,243,273,304,334,365};
	t=prey*365+prey/4-prey/100+prey/400+days[m-1]+d;
	if((y%4==0 &&y%100!=0)||y%400==0)
		if(m>2 || (m==2 && d==29 ))
			t++;
	return t;    
}

int main(void)
{
	int day,mon,year;
	int nowYear,nowMon,nowDay;
	int court=0;
	int t1,t2;

	cout<<"请输入您的出生年月日,用空格隔开\n";
	cin>>year>>mon>>day;

	time_t tc=time(NULL);
	tm *t =localtime(&tc);
	nowYear=t->tm_year+1900;
	nowMon=t->tm_mon+1;
	nowDay=t->tm_mday;

	t1=totalDays(year,mon,day);
	t2=totalDays(nowYear,nowMon,nowDay);
	cout<<"这是您来到地球的 "<<t2-t1<<"天"<<endl;
return 0;
}

2.最大数

最大数。输入K个正整数,将它们拼接在一起,找出其中最大的那个拼接数。例如输入:3 31 3 331,输出:333131是所有拼接方案中最大的。程序命名为Lab3_6.cpp。

#include<iostream>
#include<math.h>
using namespace  std;
 
bool Compare(int num1,int num2)
{
	int count1 = 0,count2 = 0;
	int n1 = num1,n2 = num2;
	while(n1)
	{
		count1++;//计算数有几位数 
		n1/=10;
	}
	while(n2)
	{
		count2++;
		n2/=10;
	}
	//pow(a,b):即求得a的b次方,这里是将两个数连接起来进行下一步的比较。
	int a = num1*pow(10.0,count2)+num2;
	int b = num2*pow(10.0,count1)+num1;
 
	return a>b?true:false;
}
int main()
{
	int k;
	cout<<"请输入有多少个数";
		cin>>k;
	int arr[k]={0};
	for(int i = 0;i<k;i++)
	{
		cin>>arr[i];
	}
	int temp;
	for(int i = 0;i<=k-1;++i)
	{
		for(int j = 0;j<k-i-1;j++)
		{
			//如果a>b需要交换,否则,不交换
			if(Compare(arr[j],arr[j+1]))
			{
				temp = arr[j];
				arr[j] = arr[j+1];
				arr[j+1] = temp;
			}
		}
	}
	cout<<"最大的数为:";
		for(int i = k-1;i>=0;--i)
		{
				cout<<arr[i];
		}
		cout<<endl;
		delete []arr;
}




  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-07-14 22:56:44  更:2021-07-14 22:58:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/26 22:12:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码