练习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);
}