1、第一阶段程序代码中国矿业大学软件课程设计1. 编程序 用迭代法求a的立方根,求立方根的迭代公式为 :Xi+1=(2*Xi)/3+a/(3*Xi*Xi) 假定X的初值为a,迭代到|Xi+1-Xi|10的-5次方为止. 显示a=3,27的值,并通过调用pow(a,1.0/3)函数加以验证.。程序代码:#include stdafx.h#include #include using namespace std;double cbrt (double x) double x1, x2; if (x = 0.0) return 0.0; x1 = x; x2 = (2.0 * x1 + x / (x1
2、* x1) / 3.0; while (fabs(x2 - x1) / x1) = 1E-5) x1 = x2; x2 = (2.0 * x1 + x / (x1 * x1) / 3.0; return x2;int main(int argc,char* argv) int iNumber = 0; cout Please input an integer: iNumber; cout cbrt(iNumber) endl; cout pow(iNumber,1.0/3) endl; return 0;2 / 编程序,从键盘输入正整数n,求出n与其反序数之和并输出。/ 例如,输入2038,输
3、出应为 2038+8302=10340。.cpp:#include stdafx.h#include using namespace std;int main(int argc, char* argv) int iNumber = 0,iTemp = 0,iInsert = 0; cout Please input an integer: iNumber; int a = iNumber; while (iNumber 0) iTemp = iNumber % 10; iInsert = iInsert * 10 + iTemp; iNumber = iNumber / 10; cout a
4、+ iInsert = a + iInsert endl; return 0;3. 编程序,使用如下所谓的简单变量“数据平移”方法来求出Fibonacci数列的第n项(的具体项值)并显示在屏幕上(正整数n通过键盘输入):说明变量old1=1,old2=1,newItem;新的Fibonacci项newItem总是“距它最近”的前两项(old1与old2)的累加和。而后通过“old1=old2; old2=newItem;”进行所谓的“数据平移”。接着计算另一个新的Fibonacci项newItem,依次循环,直到求出数列的第n项时为止。Fibonacci数列的计算公式如下: fib(1) =
5、1;fib(2) = 1;fib(n) = fib(n-1) + fib(n-2); /对大于等于3的任意n。拓展编程(选做),设计递归函数double fib(int n);用于求出Fibonacci数列的第n项(的具体项值)并返回,而后编制主函数对它进行调用。程序代码:#include stdafx.h#include using namespace std;long Fib(long lNum) long lF1 = 1,lF2 = 1,lFx = 0; for (int i = 1;i lNum - 1; + i) lFx = lF1 + lF2; lF1 = lF2; lF2 = l
6、Fx; return lFx;int main(int argc,char* argv) long iNum = 0; cout Please input an integer(整?数y要a大于3): iNum; cout 第 iNum 次? 的?个?数y为a endl; cout Fib(iNum) endl; return 0;4.编程序,输入正整数m,它代表一个人民币钱数(元数)。求取这样一个方案,使用最少张数的人民币纸币,凑成上述的钱数m,并输出求取结果。注意,现在共有7种元以上面值的人民币纸币,分别为:100,50,20,10,5,2,1。程序代码:#include stdafx.h
7、#include #include using namespace std;int main() cout number; int baiyuan=number/100, wushiyuan=number%100/50, ershiyuan=number%100%50/20, shiyuan=number%100%50%20/10, wuyuan=number%100%50%20%10/5, eryuan=number%100%50%20%10%5/2, yiyuan=number%100%50%20%10%5%2/1; coutt100元asetw(7)baiyuan张? endl t50元
8、asetw(9)wushiyuan张? endl t20元asetw(9)ershiyuan张?endl t10元asetw(9)shiyuan 张?endl t5元asetw(9)wuyuan 张?endl t2元asetw(9)eryuan张?endl t1元asetw(9)yiyuan 张?endl;5. 编程序,循环进行如下的处理过程:由计算机生成简单的四则运算题;用户给出答案;计算机判断对错。直到用户回答说不再继续做了时结束程序。提示:可让用户选择指定出加、减、乘、除哪一种运算题,以及出一位数还是两位数的运算题;而后通过使用“rand()%10”或“rand()%100”来获得一个0
9、到9的一位整数随机值或得到0到99的两位整数随机值来为用户出题。还可进一步对用户所做算术题的对错次数进行记录,结束程序时给出一个某种形式的成绩。#include #include #include using namespace std;void Addition();void Multi();void Division();void Subtraction();int iCounter;int main(int argc, char* argv) cout 欢迎来到考吧测试中心: endl; cout 系统正在载入,请稍后 endl; cout 载入成功,请选择要测试的种类:A:加法;B:减
10、法;C:乘法;D:除法 endl; char chA = ; cout 请输入:ABCD(注意锁定大写) chA; cout 欢迎来到数学训练中心 endl; if (chA = A) Addition(); cout 你的测试结果如下所示: 10) cout 您答对了 iCounter 道试题! endl; cout 你的水平不错,可以进入高级测试! endl; if (iCounter 5) cout 靠,你只做对了 iCounter 道试题! endl; cout 你真是菜鸟一个,重新练习吧! endl; if (chA = C) Multi(); cout 你的测试结果如下所示: 10
11、) cout 您答对了 iCounter 道试题! endl; cout 你的水平不错,可以进入高级测试! endl; if (iCounter 5) cout 靠,你只做对了 iCounter 道试题! endl; cout 你真是菜鸟一个,重新练习吧! endl; if (chA = B) Subtraction(); cout 你的测试结果如下所示: 10) cout 您答对了 iCounter 道试题! endl; cout 你的水平不错,可以进入高级测试! endl; if (iCounter 5) cout 靠,你只做对了 iCounter 道试题! endl; cout 你真是菜
12、鸟一个,重新练习吧! endl; if (chA = D) Division(); cout 你的测试结果如下所示: 10) cout 您答对了 iCounter 道试题! endl; cout 你的水平不错,可以进入高级测试! endl; if (iCounter 5) cout 靠,你只做对了 iCounter 道试题! endl; cout 你真是菜鸟一个,重新练习吧! endl; return 0;void Addition() cout 请选择要训练的类型:A:十以内的;B:一百以内的 ch; srand(time(0); int a = 0,b = 0,t = 0; cout 如果
13、想要结束测试,请按6个8键 endl; while(1) if (ch = A) a = rand() % 10; b = rand() % 10; if (ch = B) a = rand() % 100; b = rand() % 100; cout a + b t; if (t = a + b) iCounter +; else if (t = 888888) break; else cout Your input is wrong! endl; void Multi() cout 请选择要训练的类型:A:十以内的;B:一百以内的 ch; srand(time(0); int a = 0
14、,b = 0,t = 0; cout 如果想要结束测试,请按6个8键 endl; while(1) if (ch = A) a = rand() % 10; b = rand() % 10; if (ch = B) a = rand() % 100; b = rand() % 100; cout a * b t; if (t = a * b) iCounter +; else if (t = 888888) break; else cout Your input is wrong! endl; void Subtraction() cout 请选择要训练的类型:A:十以内的;B:一百以内的 c
15、h; srand(time(0); int a = 0,b = 0,t = 0; cout 如果想要结束测试,请按6个8键 endl; while(1) if (ch = A) a = rand() % 10; b = rand() % 10; if (ch = B) a = rand() % 100; b = rand() % 100; cout a - b t; if (t = a - b) iCounter +; else if (t = 888888) break; else cout Your input is wrong! endl; void Division() cout 请选
16、择要训练的类型:A:十以内的;B:一百以内的 ch; srand(time(0); int a = 0,b = 0,t = 0; cout 如果想要结束测试,请按6个8键 endl; while(1) if (ch = A) a = rand() % 10; b = rand() % 10; if (ch = B) a = rand() % 100; b = rand() % 100; cout a / b t; if (t = a / b) iCounter +; else if (t = 888888) break; else cout Your input is wrong! endl;
17、 6. 编程序,使用户任意输入一个年份以及该年的1月1日是星期几,而后任意指定某一天(再输入该年的任意一个月份日期),由程序计算出这一天是星期几。注意,2月份闰年为29天,非闰年为28天;可被4整除而不可被100整除的年份、或者可被400整除的年份均为闰年。 思考:利用元年元月元日(即1年1月1日)是星期一的已知事实,可对程序进行改造,让用户仅输入一个表示日期的年月日,则程序就应计算出那一天是星期几。程序代码:#include stdafx.h#include using namespace std;bool IfLeapYear(long);int main(int argc,char* a
18、rgv) long lYear = 0; int iWeek = 0; cout Please input the year and what the first day is: lYear iWeek; int iMonth12 = 31,28,31,30,31,30,31,31,30,31,30,31; cout Please input one day of the year:(mon & day) iMon iDay; for (int i = 0;i 7) cout That day is 星?期 iWeek + iLast - 7 endl; cout That day is 星?
19、期 iWeek + iLast endl; return 0;bool IfLeapYear(long year) if (year % 4 = 0 & year % 100 != 0 | year % 400 = 1) return true; return false;7. 罗马数字问题转换程序代码:#include StdAfx.h#include#includeusing namespace std;int main() cout 请输入一个包含“MDCLXVI”的字符串: st1; for (int i = 0;i 7;+ i) if (st1i = chAi) iSum += iD
20、atai; else cout You have input a wrong letter! endl; iSum = 0; / iSum 置零; break; cout iSum endl; return 0;把十进制转换成罗马数制程序代码:#include StdAfx.h#include#includeusing namespace std;int main() int iNumber = 0; cout 请输入一个十进制数字(10000): iNumber; int iData7 = 1000,500,100,50,10,5,1; /*char chA7 = M,D,C,L,X,V,I
21、;*/ int iM = iNumber / 1000; int iD = (iNumber - iM * 1000) / 500; int iC = (iNumber - iM * 1000 - iD * 500) / 100; int iL = (iNumber - iM * 1000 - iD * 500 - iC * 100) / 50; int iX = (iNumber - iM * 1000 - iD * 500 - iC * 100 - iL * 50) / 10; int iV = (iNumber - iM * 1000 - iD * 500 - iC * 100 - iL
22、 * 50 - iX * 10) / 5; int iI = iNumber - iM * 1000 - iD * 500 - iC * 100 - iL * 50 - iX * 10 - iV * 5; for (int i = 0;i iM; + i) cout M ; for (i = 0;i iD; + i) cout D ; for (i = 0;i iC; + i) cout C ; for (i= 0;i iL;+ i) cout L ; for (i = 0;i iX;+ i) cout X ; for (i = 0;i iV; + i) cout V ; for (i = 0;i iI; + i) cout I ; cout endl; cout endl; cout 恭喜你,做出来了! endl; return 0;8. 编写程序求解骑士巡游问题:程序代码:#include StdAfx.h#incl
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1