本文主要是介绍印度国王蛇罕褒奖宰相达依尔(国际象棋发明者),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
国王只要在国际象棋的棋盘第一格子放一粒麦子,第二格放2粒麦子,第三格放4粒麦子,依此比例每一格增加一倍,一直放到64格(国际象棋棋盘时8*8=64格)
根据估算,1立方米小麦约有1.42*10的8次方粒。
#include<stdio.h>
#include<math.h>
#include<windows.h>
//国王只要在国际象棋的棋盘第一格子放一粒麦子,第二格放2粒麦子,第三格放4粒麦子,依此比例每一格增加一倍,一直放到64格(国际象棋棋盘时8*8=64格)
//根据估算,1立方米小麦约有1.42*10的8次方粒
//错误程序,p,t,为赋值,运算出错,会运算出负数导致结果错误
void test01()
{
double p, t, v; /*p = 麦子粒数,t=麦子总粒数,v为麦子的总体积*/
int i;
for(i = 1; i < 64; i++) //执行63此循环
{
p = p * 2;
t = t + p;
}
v = t / 1.42e8;
printf("total=%e\n", t);
printf("volume=%e\n", v);
}
//正确程序如下
void test02()
{
double p = 1, t = 1, v; /*p = 麦子粒数,t=麦子总粒数,v为麦子的总体积*/
int i;
for(i = 1; i < 64; i++)
{
p = p * 2;
t = t + p;
}
v = t / 1.42e8;
printf("total=%e\n", t);
printf("volume=%e\n", v);
}
void main()
{
test01();
test02();
system("pause");
}
增加测试类型如下:
#include<stdio.h>
#include<math.h>
#include<windows.h>
//国王只要在国际象棋的棋盘第一格子放一粒麦子,第二格放2粒麦子,第三格放4粒麦子,依此比例每一格增加一倍,一直放到64格(国际象棋棋盘时8*8=64格)
//根据估算,1立方米小麦约有1.42*10的8次方粒
//错误程序,p,t,为赋值,运算出错,会运算出负数导致结果错误
void test01()
{
double p, t, v; /*p = 麦子粒数,t=麦子总粒数,v为麦子的总体积*/
int i;
for(i = 1; i < 64; i++) //执行63此循环
{
p = p * 2;
t = t + p;
}
v = t / 1.42e8;
printf("total=%e\n", t);
printf("volume=%e\n", v);
}
//正确程序如下
void test02()
{
double p = 1, t = 1, v; /*p = 麦子粒数,t=麦子总粒数,v为麦子的总体积*/
int i;
for(i = 1; i < 64; i++) //可使用这种方法,for循环也可以从1到63次 共循环了63次,得到正确运算结果
{
p = p * 2;
t = t + p;
}
v = t / 1.42e8;
printf("total=%e\n", t);
printf("volume=%e\n", v);
}
void test03()
{
double p =1 , t = 1 , v; /*p = 麦子粒数,t=麦子总粒数,v为麦子的总体积*/
int i;
for(i = 1; i <= 64; i++) //执行64此循环的错误结果,多运算一次结果刚好翻倍
{
p = p * 2;
t = t + p;
}
v = t / 1.42e8;
printf("total=%e\n", t);
printf("volume=%e\n", v);
}
void test04()
{
double p = 1 , t = 1 , v; /*p = 当前一格中麦子粒数,t=当前麦子总粒数,v为麦子的总体积*/
int i;
for(i = 0; i < 64; i++) //错误循环,for循环也可以从0词到63次 共循环了64次,多了一次结果翻倍,从0循环后面总循环数需要减一
{
p = p * 2;
t = t + p;
}
v = t / 1.42e8;
printf("total=%e\n", t);
printf("volume=%e\n", v);
}
void test05()
{
double p = 1 , t = 1 , v; /*p = 当前一格中麦子粒数,t=当前麦子总粒数,v为麦子的总体积*/
int i;
for(i = 0; i < 63; i++) //可使用这种方法,for循环也可以从0词到62次 共循环了63次,多了一次结果翻倍,从0循环后面总循环数需要减一
{
p = p * 2;
t = t + p;
}
v = t / 1.42e8;
printf("total=%e\n", t);
printf("volume=%e\n", v);
}
void main()
{
test01();
test02();
test03();
test04();
test05();
system("pause");
}
这篇关于印度国王蛇罕褒奖宰相达依尔(国际象棋发明者)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!