ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C++学习笔记(4)--练习题

2022-06-19 16:02:29  阅读:148  来源: 互联网

标签:练习题 小写字母 temp -- void C++ 大写字母 int size


 

 

 

 

 

 

 

 给出年、月、日 , 计算该日是该年的第几天? 

//编写函数,将给定的字符串的大写字母转变成小写字母; 其它字符不变。
//ASCⅡ码表:大写字母[65-90]小写字母[97-122]
void exam8()
{
	string s = "Hello World";
	cout << s << endl;
	for (size_t i = 0; i < s.length(); i++)
	{
		if (s[i] >= 'A' && s[i] <= 'Z')s[i] = (char)((int)s[i] + 32);
	}
	cout << s << endl;
}
//给出年、月、日 , 计算该日是该年的第几天?
//“能被400整除,或者能被4整除但不能被100整除的都是闰年,其余的年份均为平年。能被400整除的为世纪闰年,如2000年就是世纪闰年。
bool isLeap(int y)//是否是闰年
{
	return (y % 400 == 0) || ((y % 4 == 0) && (y % 100 != 0));
}
int getDays(int y, int m)//获取某个月的天数
{
	//if (m < 1 || m>12||y<0)return 0;
	switch (m)
	{
	case 2:
		if (isLeap(y))return 29;
		else return 28;
	case 1:
	case 3:
	case 5:
	case 7:
	case 8:
	case 10:
	case 12:
		return 31;
	default: return 30;
	}
}
int getAllDays(int y, int m, int d)
{
	int count = 0;
	for (size_t i = 1; i <= m - 1; i++)//所有月份天数相加
	{
		count += getDays(y, i);
	}
	count += d;
	return count;
}
void exam9()
{
	int y = 2008, m = 3, d = 1;
	int count = getAllDays(y, m, d);
	cout << y << "年" << m << "月" << d << "日" << "	是本年中第" << count << "天" << endl;

	y = 2022, m = 12, d = 31;
	count = getAllDays(y, m, d);
	cout << y << "年" << m << "月" << d << "日" << "	是本年中第" << count << "天" << endl;
}

编写函数,将给定的字符串的大写字母转变成小写字母; 其它字符不变。

//编写函数,将给定的字符串的大写字母转变成小写字母; 其它字符不变。
//ASCⅡ码表:大写字母[65-90]小写字母[97-122]
void exam8()
{
	string s = "Hello World";
	cout << s << endl;
	for (size_t i = 0; i < s.length(); i++)
	{
		if (s[i] >= 'A' && s[i] <= 'Z')s[i] = (char)((int)s[i] + 32);
	}
	cout << s << endl;
}

 

编写一个函数 converse ,将一维数组中的数逆序存放,不允许使用辅助数组。主函数输入原始数据,调用 converse ,实现逆置。并将原数组和逆置后的数组输出

//编写一个函数 converse ,将一维数组中的数逆序存放,不允许使用辅助数组。主函数输入原始数据,调用 converse ,实现逆置。并将原数组和逆置后的数组输出
void converse(int arr[],int len)
{
	int half = len / 2;
	int temp;
	for (size_t i = 0; i < half; i++)
	{
		temp = arr[i];
		arr[i] = arr[len - i - 1];
		arr[len - i - 1] = temp;
	}

}
void showArr(int arr[], int len)
{
	for (size_t i = 0; i < len; i++)
	{
		cout << arr[i] << ",";
	}
	cout << endl;
}

void exam7()
{
	int arr[] = { 1,2,3,4,5,6 };
	int len = sizeof(arr) / sizeof(arr[0]);
	showArr(arr,len);
	converse(arr,len);
	showArr(arr, len);
	int arr2[] = { 10,20,30,40,50,80,90 };
	 len = sizeof(arr2) / sizeof(arr[0]);
	showArr(arr2, len);
	converse(arr2, len);
	showArr(arr2, len);
}

 编一个函数 GCD,求两个无符号整数的最大公约数。主函数输入两个正整数 m 和 n, 调用 GCD,求出 m和 n 的最大公约数和最小公倍数 . 并输出。 

//编一个函数 GCD,求两个无符号整数的最大公约数。主函数输入两个正整数 m 和 n, 调用 GCD,求出 m和 n 的最大公约数和最小公倍数.并输出。
//两个数的乘积等于抄这两个数的最大公约数与最小公倍数的乘积。假设有两个数是a、b,它们的最大公约数是p,最小公倍数是q。那么有这样的关系:ab = pq
int GCD(int m, int n)
{
	int min = m > n ? m : n;
	int commonDivisor=1;
	for (size_t i = 2; i <= min; i++)
	{
		if (m % i == 0 && n % i == 0)commonDivisor = i;
	}
	return commonDivisor;
	
}
void exam6()
{
	int m = 12, n = 15;
	cout << "m=" << m << "	n=" << n << "	最大公约数=" << GCD(m,n) << "	最小公倍数=" << m * n / GCD(m, n) << endl;
	m = 100, n = 75;
	cout << "m=" << m << "	n=" << n << "	最大公约数=" << GCD(m, n) << "	最小公倍数=" << m * n / GCD(m, n) << endl;
	m = 66, n = 666;
	cout << "m=" << m << "	n=" << n << "	最大公约数=" << GCD(m, n) << "	最小公倍数=" << m * n / GCD(m, n) << endl;

}

 

//编程计算 : 1*2*3+3*4*5+ …+99*100*101 的值
void exam5()
{
	int sum = 0;
	for (size_t i = 1; i <= 99; i+=2)
	{
		sum += i * (i + 1) * (i + 2);
	}
	cout << "sum=" << sum << endl;
}

计算: 1+1/ (1+2) +1/ (1+2+3) +…+ 1/ (1+2+…+n) , n 由键盘输入

//计算: 1+1/ (1+2) +1/ (1+2+3) +…+ 1/ (1+2+…+n) , n 由键盘输入
void exam4()
{	
	string s; int n;
	while (true)
	{
		
		cout << "请输入正整数..." << endl;
		getline(cin, s);
		try
		{
			n = stoi(s);
			break;
		}
		catch (const std::exception&)
		{
			cout << "输入错误..." << endl;
			continue;
		}
	}
	float sum = 0, temp = 0;
	for (size_t i = 1; i <= n; i++)
	{
		temp += i;
		sum += 1 / temp;
	}
	cout << "n=" << n << "	temp=" << temp << "	sum=" << sum << endl;
}

求全部水仙花数。所谓水仙花数是指一个三位数,其各位数字立方的和等于该数。如: 153 = 1*1*1+ 5*5*5 + 3*3*3。

//求全部水仙花数。所谓水仙花数是指一个三位数,其各位数字立方的和等于该数。如: 153 = 13+ 5 3 + 3 3。
void exam3()
{
	list<int> flower;
	int a, b, c;//分别表示个位数,十位数,百位数
	for (size_t i = 100; i < 1000; i++)
	{
		a = i % 10;
		b = i / 10 % 10;
		c = i / 100;
		if (i == a * a * a + b * b * b + c * c * c)flower.push_back(i);
	}
	for (list<int>::iterator i = flower.begin(); i !=flower.end();i++)
	{
		cout <<"水仙花数:" << *i << endl;
	}
}

由键盘输入的任意一组字符, 统计其中大写字母的个数 m和小写字母的个数 n

//由键盘输入的任意一组字符, 统计其中大写字母的个数 m和小写字母的个数 n
//ASCⅡ码表:大写字母[65-90]小写字母[97-122]
void exam2()
{
	string s;
	getline(cin,s);
	int m = 0, n = 0, temp = 0;
	for (size_t i = 0; i < s.length(); i++)
	{
		temp = (int)s[i];
		if (temp >= 65 && temp <= 90)m++;
		else if (temp >= 97 && temp <= 122)n++;
	}
	cout << "大写字母个数=" << m << "	小写字母个数=" << n << endl;
}

void exam2_2()
{
	string s;
	getline(cin, s);
	int m = 0, n = 0;
	for (size_t i = 0; i < s.length(); i++)
	{
		
		if (s[i] >= 'A' && s[i] <= 'Z')m++;
		else if (s[i] >= 'a' && s[i] <= 'z')n++;
	}
	cout << "大写字母个数=" << m << "	小写字母个数=" << n << endl;
}

 编程计算: 1!+2!+3!+ …+20! ,并将结果输出 

//编程计算: 1!+2!+3!+ …+20! ,并将结果输出
void exam1()
{
	long long sum = 0;
	long long  fac = 1;
	for (size_t i = 1; i <= 20; i++)
	{
		fac *= i;
		sum += fac;
		cout <<"i="<<i<< "	fac=" << fac << "					sum=" << sum << endl;
	}
	cout << "intMax=" << numeric_limits<int>::max << endl;
	cout << "longMax=" << numeric_limits<long>::max << endl;
	cout << "longlongMax=" << numeric_limits<long long>::max << endl;

}

 

标签:练习题,小写字母,temp,--,void,C++,大写字母,int,size
来源: https://www.cnblogs.com/zhangdezhang/p/16390283.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有