学习C++第柒天

今天是第七天,由于比较忙,只能匆匆作下总结。
1.1e-15表示1×10^(-15)。
2.1/5默认结果为零,因为1/5默认类型为整形。
3.unsigned n=3;默认n的类型为unsigned int。
4.全局变量可与局部变量重名,在局部变量作用域内,全局变量失效。

今日代码,今天主要看代码例题,所以代码比较多。
进制转换:
#include
using namespace std;

double power(double x, int n);

/int main()
{
int value = 0;
cout << “enter an 8 bit binary number”;
for (int i = 7; i >= 0; i–)
{
char ch;
cin >> ch;//循环八次,为什么只输入一次ch?
if (ch == ‘1’)//ch是个字符串为什么和’1‘这个字符比较?不用指定字符串的某位和’1‘比较?
value += static_int(power(2, i));
}
cout << “deciaml value is” << value << endl;
return 0;
}
/

int main()
{
int value = 0;
cout << “enter an 8 bit binary number”;
char ch[]=“11111111”;
cin >> ch;
for (int i = 7; i >= 0; i–)
{
if (ch[i]== ‘1’)
value += int(power(2, i));
}
cout << “deciaml value is” << value << endl;
return 0;
}

double power(double x, int n)
{
double val = 1;
while (n–)
val *= x;
return val;
}

用无穷级数求pi的值
#include
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)//1e-15表示1×10^(-15)
{
double f = e / i;
r = (i % 4 == 1) ? r + f : r - f;
e = e * sqr;
i += 2;
}
return r;
}

int main()
{
double a = 16 * arctan(1 / double(5));//注意1/5默认为整形,因为是两个整数相除,结果为0,这里需要写1/5.0
double b = 4 * arctan(1 / 239.0);
cout << “pi=” << a - b << endl;
return 0;
}

求回文数
#include
using namespace std;

bool symm(unsigned n)
{
unsigned i = n;
unsigned m = 0;//默认unsigned int
while (i >= 1)//老师这个地方写错了
{
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 << “mm=" << m * m;
cout << "m
m*m=” << m * m * m << endl;
}
}
return 0;
}

分段函数求值,主要求sin
#include
#include
using namespace std;

const double TINY_VALUE = 1e-10;

double tsin(double x)
{
double g = 0;
double t = x;
int n = 1;
do
{
g += t;
n++;
t = -t * x * x / (2 * n - 1) / (2 * n - 2);//这里利用递推公式
} while (fabs(t) >= TINY_VALUE);//fabs:求浮点数的绝对值,abs:求整数的绝对值。
return g;
}

int main()
{
double k, r, s;
cout << “r=”;
cin >> r;
cout << “s=”;
cin >> s;
if (r * r <= s * s)
k = sqrt(tsin® * tsin® + tsin(s) * tsin(s));
else
k = tsin(r * s) / 2;
cout << k << endl;
return 0;
}

掷骰子游戏,主要是随机数的产生,这里是伪随机数
#include
#include
using namespace std;

enum gamestastus{win,lose,playing};

int main()
{
int sum,mypoint;
gamestastus status;
unsigned seed;
int rolldice();
cout << “please enter an unsigned integer:”;
cin >> seed;
srand(seed);//这句话没用?
sum = rolldice();
switch (sum)
{
case 7:
case 11:
status = win;
break;
case 2:
case 3:
case 12:
status = lose;
break;
default:
status = playing;
mypoint = sum;
cout << “point is” << mypoint << endl;
break;
}
while (status == playing)
{
sum = rolldice();
if (sum == mypoint)
status = win;
else if (sum == 7)
status = lose;
}
if (status == win)
cout << “player wins” << endl;
else
cout << “player lose” << endl;
return 0;
}

int rolldice()
{
int die1 = 1 + rand() % 6;
int die2 = 1 + rand() % 6;
int sum = die1 + die2;
cout << "player rolled " << die1 << “+” << die2 << “=” << sum << endl;
return sum;
}

今天就这些,曾老师要求看的课程太多了,课上布置的题目也不简单,今天花了好久,明天就要上课了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值