c++作业题

更新时间:2024-06-24 09:51:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

编写程序,定义两个整数,用户通过键盘输入两个整数,程序计算它们的和、差、积、商并输出。注意:在 C++ 语言中,整数的除法运算“ / ”结果仍为整数。因为要计算整数的商,第二个整数不能为 0 。

程序输出结果如下:(假设输入的两个整数分别为 3 和 2 ): The first number: 3 The second number: 2 3 + 2 = 5 3 – 2 = 1 3 * 2 = 6 3 / 2 = 1

编写程序,接受用户通过键盘输入的 4 个整数,输出它们的和与平均值。

本实验的输入为 4 个整数,输出为它们的和与均值。如果使用整数表示平均值,除法结果可能并不准确。 实验样例:

假设输出的整数为 1 、 2 、 3 、 4 ,则输出为: Sum = 10 Aver = 2.5

编写程序,计算两个星球之间的万有引力。

两个星球的质量m1,m2由用户从键盘输入,单位为kg(千克)。

两个星球的质量R由从用户从键盘输入,单位为m(米)。

万有引力衡量为G=6.67E-11( N.m.m/(kg.kg) 牛顿.米.米/(千克.千克)。 万有引力的计算公式为: F=G*m1*m2/R/R

程序的运行结果如下所示:输入(三个数据依次为:m1, m2和R): 1.987E30 5.975E24 1.495E11 3.54307e+022

为例2-2添加数据检验部分。用户输入三个边长,检验其是否能构成一个三角形(检查是否任意两边和均大于第三边),如果构成三角形,计算面积并输出;如果不构成三角形,输出信息“Error Data!”。程序能连续接收两组数据,给出两组结果。

程序运行结果如下: 输入: 3 4 5 1 2 3 输出: 6

Error Data!

从键盘输入任意四个整数,计算其平均值并显示。再对平均值四舍五入并显示。

程序运行结果如下: 输入: 1 2 3 4 输出: 2.5 3

编写一个程序,将字符串“Love”译成密码,译码方法采用替换加密法,其加密规则是:将原来的字母用字母表中其后面的第N个字母的来替换,N由用户输入。如果N=3,字母c就用f来替换,字母y用b来替换。 提示:

(1)分别用4个字符变量来存储'L'、'o'、'v'和'e'。 (2)加密公式为:

如果x为大写字母,密文y为 y=((x-'A')+N)&+'A'; 如果x为小写字母,密文y为 y=((x-'a')+N)&+'a'; 其中N为密钥,为一整数。

程序运行结果如下: 输入: 3 输出: Oryh

注意,其中Oryh是加密后的单词

输入两个角度值x,y,计算如下式子的值。 z=sin(|x|+|y|)/SQRT(|cos(x+y)|)

其中,SQRT表示开方。如果|cos(x+y)|小于1.0E-5,输出“divided by zero!”。 程序能连续接收两组输入,给出两组结果。 提示:两组输入可用下列循环实现: for(int i=0;i<2;i++) { …… }

程序运行结果如下: 输入: 3 6

1.5707963 0 输出: 0.43175 divided by zero!

计算e = 1+1/1!+1/2!+1/3!+…+1/n!+… , 当通项1/n! 小于一个很小的正数k(如10e-7)时停止计算。正数k由用户输入。

程序的运行结果如下所示: 输入: 10e-7 输出: 2.71828

编写程序,求圆周率的近似值。圆周率的近似值=4*(1-1/3+1/5-1/7+1/9- …),精度要求:计算到括号内的通项小于k为止, k由用户输入。

程序运行结果如下: 输入: 1.0e-4 输出: 3.14139

利用迭代公式求平方根。由用户输入数据a,而后计算其平方根。 算法描述:

设x=sqrt(a), 设初值为x[0],则迭代公式为 x[n+1]=(x[n]+a/x[n])/2

由此公式产生序列x[1],x[2],x[3],...将逐渐接近a的平方根。 设迭代结束条件为: fabs((x[n+1]-x[n])/x[n+1]) <1.0e-10

程序运行结果如下: 输入: 2 输出: 1.41421

十一(pow什么玩意?)

利用下列公式求反正弦函数近似值。

arcsin(x)=x+pow(x,3)/(2*3)+1*3*pow(x,5)/(2*4*5)+...., 其中 |x|<1 其中通项公式为:

(2n)!*pow(x,2n+1)/(pow(2,2n)*pow(n!,2)*(2n+1)) 结束条件可用|u|< 1.0e-7,其中u为通项。 要点分析:本题关键是找到通项的递推公式, 由前一项计算后一项。 程序运行结果如下: 输入: 0.77 输出: 0.878841

十二

如果一个三位数的个位数、十位数和百位数的立方和等于该数自身,则称该数为水仙花数。编一程序求出所有的水仙花数。 例如153就是一个水仙花数: 153=1^3 +5^3 +3^3

程序运行结果如下:

输出(153后的***为其它的水仙花数,要求输出所有的): 153 *** … ***

十三 调试pow

编写程序求斐波那契数列的第n项和前n项之和。斐波那契数列是形如 0, 1, 1, 2, 3, 5, 8, 13, ... 其通项为: F[0]=0 F[1]=1

F[n]=F[n-1]+F[n-2]

程序运行结果如下: 输入: 6 输出:

8 20

十四

编写一个程序,寻找用户输入的几个整数中的最小值。并假定用户输入的第一个数值指定后面要输入的数值个数。

程序运行结果如下: 输入:

5 20 15 300 9 700 输出: 9

十五

有一分数序列如下:

2/1, 3/2, 5/3, 8/5, 13/8, 21/13, ....

即后一项的分母为前一项的分子,后项的分子为前一项分子与分母之和,求其前n项之和。

程序运行结果如下: 输入: 6 输出: 10.0071

十六

求a+aa+aaa+aaaa+... ...+aa...a(n个),其中a为1~9之间的整数。 例如:当a = 1, n = 3时,求1+11+111之和;

当a = 5, n =7时,求5+55+555+5555+55555+555555+5555555之和。

程序运行结果如下: 输入: 2 3 输出: 246

十七

所谓孪生素数是指间隔为2的相邻素数,如最小的孪生素数是3和5,5和7也是。找出2-k之间的所有孪生素数,每行打印1对输出。k由键盘输入(K>=200,k<=10000)

十八

从键盘输入一个正整数,然后将该整数分解为1和各个质因子相乘,如果输入的整数本身就是质数,则分解为1和该数本身相乘。如 输入: 6 输出: 6=1*2*3

十九

给一维数组输入7个整数,找出该数组中的最大数。 程序运行结果如下: 输入:

234 12 34 56 34 23 89 输出: 234

二十

编写一个用于对整型数组(长度<10)进行排序的程序,排序方法使用简单的交换排序法

程序运行结果如下(输入的第一个数为的数组中元素的个数): 输入: 6

45 12 345 56 7 89 输出:

7 12 45 56 89 345

二十一

利用整型数组计算N!N比较大,所以不能直接用int等数据类型计算。

程序运行结果如下: 输入: 50 输出:

30414093201713378043612608166064768844377641568960512000000000000

二十二

编写一个程序,要求用户输入一个十进制正整数,然后分别转换成为二进制数、八进制数和十六进制数输出。

程序运行结果如下(输出依次为二进制、八进制和十六进制数): 输入: 16 输出: 10000 20 10

二十三

恺撒加密法加密规则是:将原来的小写字母用字母表中其后面的第3个字母的大写形式来替换,大写字母按同样规则用小写字母替换,

对于字母表中最后的三个字母,可将字母表看成是首未衔接的。如字母c就用F来替换,字母y用B来替换,而字母Z用c代替。

编程实现以下功能:输入一个字符串,将其加密后输出。

程序运行结果如下: 输入: AMDxyzXYZ 输出: dpgABCabc

二十四

所谓回文数是指其各位数字左右对称的整数,例如12321、789987、1等都是十进制回文数。

程序运行结果如下:

请输入回文数起始和结束位置: 1000 2000

1001 1111 1221 1331 1441 1551 1661 1771 1881 1991 注:元素之间空一个空格。

二十五(数组作为参数 无法非引用?

编写字符串反转函数mystrrev,该函数的功能为将指定字符串中的字符顺序颠倒排列。然后再编写主函数验证之。函数原型为 void mystrrev(char string[]) 程序运行结果如下: 输入: Hello,everyone 输出: enoyreve,olleH

二十六

编写函数isprime(int a)用来判断变量a是否为素数,若是素数,函数返回1,否则返回0。调用该函数找出任意给定的n个整数中的素数。

程序运行结果如下:

输入(n个整数,输入0表示结束): 9 8 7 210 101 0 输出(只输出素数): 7 101

二十七

编写一组求数组中最大最小元素的函数。该组函数的原型为 int imax(int array[], int count); // 求整型数组的最大元素 int imin(int array[], int count); // 求整型数组的最小元素

其中参数count为数组中的元素个数,函数的返回值即为求得的最大或最小元素之值。要求同时

编写出主函数进行验证。

程序运行结果如下:

输入(第一个数为数组元素的个数): 5

90 89 30 45 55

输出(第一个数为最大值,第二个数为最小值): 90 30

课外作业(无需上交)

整副单张扑克牌随机生成

编写函数 void GenerateCard() ,生成 1 ~ 52 之间的数,返回对应的牌张信息。

在随机数为 1 ~ 13 时对应? C ?(梅花, club ), 14 ~ 26 时对应? D ?(方块, diamond ), 27 ~ 39 时对应? H ?(红桃, heart ), 40 ~ 52 时对应“ S ”(黑桃, spade )。例如,若随机数为 1 则输出“ CA ”(梅花 A ),为 2 则“ C2 ”(梅花 2 ),为 52 则输出“ SK ”(黑桃 K )。读者可以尝试使用 ASCII 码值代替花色名称, ASCII 值为 3 时代表红桃符号,为 4 时代表方块符号,为 5 时代表梅花符号,为 6 时代表黑桃符号。注意,部分操作系统中这些特殊字符可能无法显示。编写程序,连续调用 GenerateCard ,随机生成 13 张牌验证结果。

课外思考题

编程模拟扑克牌发牌过程。将去除大小王的 52 张扑克牌平均分配给四个玩家,每家 13 张牌。即程序需要连续生成 52 张扑克牌,按东南西北的顺序一次一张地发给四方牌手,共发 13 轮,在屏幕上输出这四个牌手的扑克牌。

在随机数为 1 ~ 13 时对应? C ?(梅花, club ), 14 ~ 26 时对应? D ?(方块, diamond ), 27 ~ 39 时对应? H ?(红桃, heart ), 40 ~ 52 时对应“ S ”(黑桃, spade )。例如,若随机数为 1 则输出“ CA ”(梅花 A ),为 2 则“ C2 ”(梅花 2 ),为 52 则输出“ SK ”(黑桃 K )。读者可以尝试使用 ASCII 码值代替花色名称, ASCII 值为 3 时代表红桃符号,为 4 时代表方块符号,为 5 时代表梅花符号,为 6 时代表黑桃符号。注意,部分操作系统中这些特殊字符可能无法显示。编写程序,随机生成 4 组各 13 张牌。

问题分析: 一副完成的扑克牌生成要比简单生成部分牌张要复杂得多。我们需要使用四个数据对象分别表示东南西北四家,按照顺序逐一发牌。整个程序执行期间,都必须保持东南西北四家的牌张记录,因而必须使用数组存储这些数据。

实现要点: 在随机生成时,不允许出现重复生成的扑克牌。例如,如果已经发出了 CA (梅花 A ),则再次生成的随机数 1 必须被抛弃。

二十八 ()

编写一个字符串复制函数mystrcpy,将一个字符串复制到另一个字符串中。

程序运行结果如下: 输入: I am simple. 输出: I am simple.

注:单词之间最多只有一个空格,句点为英文符号

二十九

编写程序,将某一个输入的位数不确定的正整数按照标准的三位分节格式输出,例如,当用户输入82668634时,程序应该输出82,668,634。 程序运行结果如下: 输入: 82668634 输出: 82,668,634

三十(记一下ascii码表)

用指针编写一个程序,当输入一个字符串后,要求不仅能够统计其中字符的个数,还能分别指出其中大、小写字母、数字以及其他字符的个数。

程序运行结果如下: 输入:

I am 21 years old.

输出(五个数值依次为大、小写字母、数字、其他字符和总共含有的字符个数): 1 10 2 5 18

三十一

用指针编写一个程序,当输入一个字符串后,要求不仅能够统计其中字符的个数,还能分别指出其中大、小写字母、数字以及其他字符的个数。

程序运行结果如下:

输入:

I am 21 years old.

输出(五个数值依次为大、小写字母、数字、其他字符和总共含有的字符个数): 1 10 2 5 18

三十七

设计点类和圆类。在二维平面空间上,使用x-y坐标可以确定一个点,确定了圆心坐标和半径可以确定一个圆。

声明一个点类,并使用这个点类的对象为数据成员声明圆类。输入圆心坐标和半径,输出圆心坐标、半径和圆的面积。

在Point类中,坐标设为私有成员x,y,公有成员有: void SetPoint( int, int ) // 设置坐标, int GetX() { return x; } // 取x坐标, int GetY() { return y; } // 取y坐标, void Print() //输出点的坐标。

在Circle类中,坐标设为私有成员Radius和Point类的Center,公有成员有: void SetRadius(double)//设置半径, void SetCenter(Point) //设置圆心坐标, double GetRadius() //取半径, Point GetCenter()//取圆心,

double Area()//计算面积, void Print()//输出圆心坐标和半径。

编写主函数对两个类进行测试。 Circle类的数据成员Center是Point类的对象,因此对Center的操作可以使用Point类的成员函数进行。

程序的运行结果如下所示: 输入(依次为x,y and r): 100 90 15

输出(依次为圆心坐标、半径和圆的面积): [100,90] 15 706.858

三十八

设计一个完整的Date类,包含属性day, month, year以及对这些属性操作的方法。实现并测试这个类。

根据类的封装性要求,把day, month, year声明为私有的数据成员。输入输出函数为 void init(int,int,int)、void print_ymd()、void print_mdy()。

程序的运行结果如下所示: 输入: 1 12 2010 输出: 2010-12-1 12-1-2010

三十九

编写日期类Date,数据成员年、月、日,数据类型为整型。编写三个构造函数,并用以下方法初始化函数中数据成员:

(1)第一个构造函数无参数,使用参数初始化表将数据成员赋为固定值1900-1-1(在主函数中创建对象date1)。

(2)第二个构造函数有3个参数,2个有默认值(月和日)为1。(在主函数中创建对象date2、date3、date4)。

(3)第三个为拷贝构造函数,参数为Date & 型(在主函数中创建对象date5,用date4为其初始化)。

程序运行结果如下: 输入: 2011 5 4 输出:

date1: 1900-1-1 date2: 2011-1-1 date3: 2011-5-1 date4: 2011-5-4 date5: 2011-5-4

其中,date1是固定值,date2是“月”、“日”缺省时初始化的结果,date3是“日”缺省时初始化的结果,date5是用date4初始化的结果。

四十

设计一个Dog类,包含name、age、sex和weight等属性,在有参数的构造函数中对数据成员进行初始化。

公有成员函数有:GetName()——、GetAge()、GetSex()和GetWeight()可获取名字、年龄、性别和体重。编写成员函数speak() 显示狗的叫声。 编写主函数,输入狗的名字、年龄、性别和体重;

声明Dog对象并用输入的数据通过构造函数初始化对象,通过成员函数获取狗的属性并显示出来。

程序运行结果如下: 输入: Tom 4 m 2.4 输出:

Dog?s name:Tom Dog?s age:4 Dog?s sex:m Dog?s weight:2.4 Dog speak:Arf!Arf!

四十一

设计一个Time类,设计多个重载的构造函数,可以设置时间,进行时间的加减运算,按各种可能的格式(24小时制、12小时制)输出时间。 注意:

(1)请考虑设置的时间的合理性(时0-23; 分0-59;秒0-59)。 (2)12小时制中,12:00:00前为AM, 12:00:00及以后为PM (3)加减运算的加数、减数是一个时间的长度,单位为“时、分、秒”

(4)构造函数:没参数时,设置时间为0时 0分 0秒;有参数时,设置成给定的时、分、秒。

在主函数中

(1)声明两个对象t1,t2,并通过构造函数初始化它们(时间为8:10:30) (2)显示按12、14小时制显示t1、t2的时间。 (3)再设置t1的时间,数据由用户输入。 (4)再输入待加减的时间。

(5)t1加输入的时间,并按12小时和24小时制显示。 (6)t2减输入的时间,并按12小时和24小时制显示。

程序运行结果如下:

输入(第一行为t1的时间,第二行为待加减的时间): 11 30 30 5 15 20 输出:

t1_12 00:00:00 AM t1_24 00:00:00 t2_12 08:10:30 AM t2_24 08:10:30 04:45:50 PM 16:45:50 02:55:10 AM 02:55:10

本文来源:https://www.bwwdw.com/article/gwt3.html

Top