【C/C++题目】基础题目合集——杨辉三角;字符串大小写转换;日期及星期打印;

一、杨辉三角打印

杨辉三角中第n行第k个数的值,也就是
在这里插入图片描述

1、实现代码

#include<iostream>
#include <iomanip>
using std::cout;
using std::cin;
using std::setw;
using std::endl;

//求阶乘的函数
long long factorial(int num)
{
	if (num == 0)	//第一行
		return 1;
	else
	{
		long long  result = 1;
		for (int i = 1; i <= num; ++i)
			result *= i;
		return result;
	}
}

//打印杨辉三角的函数
void function(int rowNum)
{
	long long value;
	for (int n = 1; n <= rowNum; ++n) //每一行
	{
		for (int i = 0; i <= rowNum - n; ++i)  //打印每行前的空格
			cout << setw(3 * i);
		for (int k = 1; k <= n; ++k)  //打印每行的每个数
		{
			value = factorial(n - 1) / (factorial(k - 1) * factorial(n - k));	//利用阶乘求得
			cout << value << setw(6);
		}
		cout << endl;
	}
}

int main()
{
	int rowNum;
	cout << "请输入要打印的行数:";
	cin >> rowNum;
	function(rowNum);
	system("pause");
	return 0;
}

2、运行结果

在这里插入图片描述
 

二、输入任意长度字符串, 将其中的小写字母替换为大写字母, 大写字母替换为小写字母, 其他不变

利用ASCII码进行功能实现

1、实现代码

#include <iostream>
#include <string>
using std::cout;
using std::cin;
using std::string;
int main()
{
	cout << "样例输入:";
	string str;
	getline(cin, str);

	for (int i = 0; i < str.length(); i++)
	{
		if (str[i] > 65 && str[i] < 90)
			str[i] += 32;	//大写转小写
		else if (str[i] > 97 && str[i] < 122)
			str[i] -= 32;	//小写转大写
	}

	cout << "样例输出:";
	for (auto it = str.cbegin(); it != str.cend(); ++it)	//打印
		cout << *it;

	return 0;
}

2、运行结果

在这里插入图片描述
 

三、获取当前的年月日并打印出来

使用系统的时间函数

1、实现代码

#include <iostream>
#include <time.h>
using namespace std;
#pragma warning( disable : 4996 )//去掉4996类型报错,解决localtime函数的问题
struct NowDate//创建类
{
    char tmp0[16]; //年月日
    char tmp1[16]; //时分秒
};
NowDate getTime()//创建类的方法
{
    time_t timep;//time_t,存储从1970年到现在经过了多少秒
    time(&timep); //time函数会返回自1970年1月1日0点走过的秒数,同时把这个返回值保存在传进来的那个time_t* 指向的变量timep中
    NowDate date;//NowDate的一个实例化date
    //strftime()函数将时间格式化为我们想要的格式           //localtime()将时间数值变换成本地时间
    strftime(date.tmp0, sizeof(date.tmp0), "%Y-%m-%d", localtime(&timep));//格式%Y-%m-%d年月日
    strftime(date.tmp1, sizeof(date.tmp1), "%H:%M:%S", localtime(&timep));//格式"%H:%M:%S"时分秒
    return date;
}
int main()
{
    NowDate time = getTime();//实例化
    cout <<"年月日:"<< time.tmp0 << endl;
    cout <<"时分秒:"<< time.tmp1 << endl;
    return 0;
}

2、运行结果

在这里插入图片描述
 

四、已知1970/1/1是周四, 求2020429是周几( 禁止使用语言本身提供的日期函数)

计算出迄今为止的总天数,在除以7,求余数得星期几。

1、实现代码

#include <iostream>
using namespace std;
int main()
{
	int year, month, day, n;
	int a[13], sum1, sum2, sum;
	cout << "输入当前年月日:";
	cin >> year >> month >> day;
	sum1 = 0; sum2 = day; sum = 0;

	for (int i = 1970; i < year; i++)
	{
		if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0)     //闰年天数366
			n = 366;
		else n = 365;
		sum1 = sum1 + n;    //每年天数和
	}

	//利用数组给每一个月确定天数
	if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)        //闰年二月29
		a[2] = 29;
	else a[2] = 28;
	for (int i = 1; i <= 12; i++)
	{
		if (i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12)
			a[i] = 31;
		else if (i == 4 || i == 6 || i == 9 || i == 11)
			a[i] = 30;
	}

	for (int i = 1; i < month; i++)     //每月天数和
		sum2 = sum2 + a[i];
	sum = sum1 + sum2;      //1970至今的总天数

	cout << "计算结果:";
	switch (sum % 7)        //因为1970/1/1为星期四
	{
	case 0:cout << "星期三\n"; break;
	case 1:cout << "星期四\n"; break;
	case 2:cout << "星期五\n"; break;
	case 3:cout << "星期六\n"; break;
	case 4:cout << "星期日\n"; break;
	case 5:cout << "星期一\n"; break;
	case 6:cout << "星期二\n"; break;
	default:break;
	}
	return 0;
}

2、运行结果

在这里插入图片描述
 

如有不足之处,还望指正 1


  1. 如果对您有帮助可以点赞、收藏、关注,将会是我最大的动力 ↩︎

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章