c++基础实验1

练习1

利用循环求1到10的和`

#include <iostream>
using namespace std;
int main()
{
	int sum = 0;//用来记录和
	int i = 1;
	do{
		sum += i;
		++i;
	}while(i<=10);
	//注意while后面的条件是进入循环的条件
	//注意do-while循环至少运行一次
	cout<<sum<<endl;
	return 0;
}
#include <iostream>
using namespace std;
int main()
{
	int sum = 0;
	int i = 1;
	for(i;i<=10;i++)
	{
		sum += i;
	}
	cout<<sum<<endl;
	return 0;
}
#include <iostream>
using namespace std;
int main()
{
	int sum = 0;
	int i = 1;
	while(i<=10)
	{
		sum += i;
		i++;
	}//循环中要有改变循环的条件最后要跳出循环
	cout<<sum<<endl;
	return 0;
}
练习2

编程计算图形的面积:程序可选择计算圆形、长方形、正方形的面积,运行时先提示用户选择图形的类型,然后对圆形要求用户输入半径值,对长方形要求用户输入长和宽的值,对正方形要求用户输入边长的值,计算出面积的值后将其显示出来
圆形,长方形,正方形是图形的三种情况我们之选其一,三者属于并列关系所以应用switch语句,注意switch语句中的break


#include <iostream>
using namespace std;
const float PI = 3.1416;//定义一个常量一定要给出常量的数据类型
int main() 
{
	int iType;
	float radius, a, b, area;
	cout << "图形的类型为(1-圆形 2-长方形 3-正方形):";
	cin >> iType;
	switch (iType)
	{
	case 1:
		cout << "请输入圆的半径:" << endl;
		cin >> radius;
		area = PI * radius * radius;
		cout << "面积为:" << area << endl;
		break;
	case 2:
		cout << "请输入矩形的长与宽:" << endl;
		cin >> a >> b;
		area = a * b;
		cout << "面积为:" << area << endl;
		break;
	case 3:
		cout << "请输入正方形的边长:" << endl;
		cin >> a;
		area = a * a;
		cout << "面积为:" << area << endl;
		break;
	default:
		cout << "不是输入合法的值" << endl;
	}
	return 0;

}
练习3

声明一个表示时间的结构体,可以精确表示年、月、日、小时、分、秒;
提示用户输入年、月、日、小时、分、秒的值,然后完整的显示出来

声明
  • Struct结构的作用就是把一组相互关联的数据整合在一起

#include <iostream>
using namespace std;
struct MyTimeStruct
{
	unsigned int year;
	unsigned int month;
	unsigned int day;
	unsigned int hour;
	unsigned int min;
	unsigned int sec;

};
int main()
{
	MyTimeStruct myTime = {};
	cout << "please input year:" << endl;
	cin >> myTime.year;
	cout << "please input month:" << endl;
	cin >> myTime.month;
	cout << "please input day:" << endl;
	cin >> myTime.day;
	cout << "please input hour:" << endl;
	cin >> myTime.hour;
	cout << "please input min:" << endl;
	cin >> myTime.min;
	cout << "please input sec:" << endl;
	cin >> myTime.sec;
	cout << "the time is set to:" << myTime.year << "/"
		<< myTime.month << "/"
		<< myTime.day << " "
		<< myTime.hour << ":"
		<< myTime.min << ":"
		<< myTime.sec << endl;
	return 0;

}

如何利用枚举类型来限定月份(Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec),天数(Mon,Tur,Wed,Thu,Fri,Sat,Sun)的取值
如何利用if-else选择条件句来限制月份,天数的取值

enum day{monday=1,tuesday=2,wednesday=3,thursday=4,friday=5,saturday=6,sunday=7};
//整数值不能直接赋给枚举变量,如需要将整数赋值给枚举变量,应进行强制类型转换
//枚举值可以赋值给整型变量
练习4

确定比赛的结果


#include <iostream>
using namespace std;
enum GameResult {Win,Lost,Tie,Cancel};
int main() 
{
	GameResult result;//定义枚举变量
	enum GameResult omit = Cancel;//定义一个枚举变量也可以给它赋值
	for (int count = Win; count <= Cancel; count++) //枚举变量给整数型赋值
	{
		result = GameResult(count);
		//count是整型,result是枚举类型,先要进行强制类型转换
		//如果count在枚举变量内即可强制转换
		if (result == omit)
			cout << "The game was cancelled" << endl;
		else 
		{
			cout << "The game was played";
			if (result == Win)
				cout << "and we win!";
			if (result == Lost)
				cout << "and we lost.";
			cout << endl;
		}
	}
	return 0;
}
练习5

计算x的n次方


#include <iostream>
using namespace std;
double power(double x, int n)
{
	double res = 1.0;
	while (n > 0)
	{
		res *= x;
		n--;
	}
	return res;
};
int main()
{
	double x;
	double res;
	int n;
	cout << "请输入x,请输入n" << endl;
	cin >> x >> n;
	res = power(x, n);
	cout << "x的n次方是" << res << endl;
	return 0;
}
练习6

数制转换:输入一个8位二进制数,将其转换为十进制数输出


#include <iostream>
using namespace std;
double power(double x, int n)
{
	double res = 1.0;
	while (n > 0)
	{
		res *= x;
		n--;
	}
	return res;
};
int main() 
{
	int res = 0;
	cout << "请输入一个八位二进制数" << endl;
	for (int i = 7; i >= 0; i--) 
	{
		char ch;
		cin >> ch;
		if (ch == '1')
			res += static_cast<int>(power(2, i));
	}
	cout << "Decimal value is " << res << endl;
	return 0;
}
练习7

求圆周率Π的值
在这里插入图片描述


#include <iostream>
using namespace std;
double arctan(double x)
{
	double sqr = x * x;
	double e = x;
	double r = 0;
	int i = 1;
	while (e / i > 1e-15) 
	{
		double f = e / i;
		r = (i % 4 == 1) ? r + f : r - f;
		e = e * sqr;
		i += 2;
	}
	return r;
}
int main() 
{
	double m;
	double a = 16.0 * arctan(1 / 5.0);
	double b = 4.0 * arctan(1 / 239.0);;
	cout << "圆周率的值为" << a - b << endl;
	return 0;
}
练习8

在这里插入图片描述


#include <iostream>
using namespace std;
//判断是否为回文数
bool symm(unsigned n) 
{
	unsigned i = n;//用i表示想要测试的值
	unsigned m = 0;//用m表示回文后的值
	while (i > 0) 
	{
		m = m * 10 + i % 10;
		i /= 10;
	}
	return m == n;
}
int main() 
{
	for(unsigned m=11;m<=1000;m++)
		if (symm(m) && symm(m * m) && symm(m * m * m)) 
		{
			cout << "m=" << m;
			cout << "m*m=" << m * m;
			cout << "m*m*m=" << m * m * m << endl;
		}
	return 0;
}
练习9

函数的嵌套调用
求两个整数的平方和


#include <iostream>
using namespace std;
int fun2(int x) 
{
	int y;
	y = x * x;
	return y;
}
int fun1(int m, int n) 
{
	int res;
	res = fun2(m) + fun2(n);
	return res;
}
int main() 
{
	cout << "请输入两个整数" << endl;
	int m, n;
	int res;
	cin >> m >> n;
	res = fun1(m, n);
	cout << "两个数的平方和为" << res << endl;
	return 0;
}
练习10

用函数的递归调用来计算n的阶乘


#include <iostream>
using namespace std;
int fun1(int x)
{
	int res;
	if (x == 0)
		res = 1;
	else
		res = fun1(x - 1) * x;
	return res;
}
int main() 
{
	cout << "请输入一个整数" << endl;
	int x;
	cin >> x;
	int res;
	res = fun1(x - 1) * x;
	cout << x << "的阶乘为" << res << endl;
	return 0;
}
练习11

#include <iostream>
using namespace std;
int comm(int n, int k);
int main()
{
	int n, k;
	cout << "请输入n的值" << endl;
	cin >> n;
	cout << "请输入k的值" << endl;
	cin >> k;
	cout << "C(n,k)=" << comm(n, k) << endl;
	return 0;
}
int comm(int n, int k)
{
	if (k > n)
		return 0;
	else if (n == k || k == 0)
		return 1;
	else
		return comm(n - 1, k) + comm(n - 1, k - 1);
}
发布了42 篇原创文章 · 获赞 2 · 访问量 1023

猜你喜欢

转载自blog.csdn.net/soulmate______/article/details/104664369