问题:1. 6中的n的阶乘太大时发生溢出怎么处理。
分割线 -------------------------------------------------------------------------------------
1.双精度浮点类型的定义:double 输出%lf 。单精度浮点类型的定义:float 输出:%f。
2鸡兔同笼问题,判断所给样例是否有解。
先在抄稿纸上列出x和y的二元一次方程组,然而解得x和y的表达式,在程序中将所给样例带入表达式,计算得到x和y,判断x和y是否为有效解,即x和y即不是负数也不是非整数。
3列举形如aabb的完全平方数。
for(int a=0;a<10;a++) {
for(int b=0;b<10;b++){
n = a*1000+a*100+b*10+b;
//int tpn = (int)sqrt(n);//这里直接使用强制类型转换是不合适的,因为强制类型转换是直接将小数部分舍去,而不是四舍五入,由于浮点的运算会
// 因为精度问题而产生误差,如sqrt(100)的值是9.999999而不是10.所以我们应该首先对sqrt的结果进行四舍五入。
int tpn = (int)(sqrt(n)+0.5);
if(tpn*tpn == n){
printf("%d\n",n);
}
}
}
在计算机中的浮点运算存在误差问题,即使是简单的加法也是如此比如下面的代码不会进入if语句跳出。
for(double i=0.1;i<5.0;i+0.1) {
printf("%lf\n",i);
if(i==1.0){
break;
}
}
4.有符号int的范围是-21亿到21亿
5.模拟人对开关操作
先用一个循环模拟人,再用一个循环模拟人对灯的操作
6.计算n的阶乘
阶乘公式的计算思路:写一个计算阶乘的函数,然后根据公式向函数中传参数就可以。
7 递归函数
出现栈溢出问题往往是递归边界不够严谨,没有将边界的所有情况考虑到。