【C++】 练习题1

1、实现:一元二次方式,求方程ax2+bx+c=0的根

二元一次方式:

        含有两个未知数,并且含有未知数的项的次数都是1的整式方程叫做二元一次方程。所有二元一次方程都可化为ax+by+c=0(a、b≠0)的一般式与ax+by=c(a、b≠0)的标准式,否则不为二元一次方程。但是,若在平面直角坐标系中,例如直线方程“x=1”,直线上每一个点的横坐标x都有与其相对应的纵坐标y,这种情况下“x=1”是二元一次方程。此时,二元一次方程一般式满足ax+by+c=0(a、b不同时为0)。适合一个二元一次方程的每一对未知数的值,叫做这个二元一次方程的一个解。每个二元一次方程都有无数对方程的解,由二元一次方程组成的二元一次方程组才可能有唯一解,二元一次方程组常用加减消元法代入消元法转换为一元一次方程进行求解。

1、 一元二次方程的特殊形式

(1)当b=0,c=0时,有: ax2 =0,∴ x2 =0,∴x=0

(2)当b=0,0≠0时,有: ax2+c=0 ,∵a≠0,此方程可转化为:

①当a与c异号时, −ca>0 ,根据平方根的定义可知, x=±−ca ,即当b=0,c≠0,且a与c异号时,一元二次方程有两个不相等的实数根,这两个实数根互为相反数。

②当a与c同号时, −ca<0 ,∵负数没有平方根,∴方程没有实数根。

(3)当b≠0,c=0时,有 ax2+bx=0 ,此方程左边可以因式分解,使方程转化为x(ax+b)=0,即x=0或ax+b=0,所以x1=0,x2=-b/a。由此可见,当b≠0,c=0时,一元二次方程 ax2+bx=0 有两个不相等的实数根,且两实数根中必有一个为0。

#include <iostream>
using namespace std;

int main()
{
	double a, b, c;
	printf("请输入三个指数a,b,c:");
	cin >> a >> b >> c;
	double x1, x2;
	if (a == 0)
	{
		x1 = x2 = -(c / b);
		cout << x1 << endl;
	}
	int d = b * b - 4 * a * c;
	if (d < 0)
	{
		cout<<"无解"<<endl;
	}
	if (d == 0)
	{
		x1 = -b / 2 * a;
		cout << "x1=x2=" << x1 << endl;

	}
	if(d > 0)
	{ 
		x1 = (-b + sqrt(d)) / (2 * a);
		x2 = (-b - sqrt(d)) / (2 * a);
		cout << "x1=" << x1 << ",x2=" << x2 << endl;

	}
	
	system("pause");
	return 0;
}

3、sqrt()详解

double sqrt(double x);

函数作用:sqrt() 用来求给定值的平方根。

2.输入10个数,统计其中正数、负数和零的个数

#include <iostream>
using namespace std;

int main()
{
	int positive_number=0, negative_number = 0, zore_number = 0;
	int a[20];//int a[]  --->是错误的
	cout << "请输入二十个整数" << endl;
	int i = 0;
	while (i < 10)
	{
		cin >> a[i];
		i++;
	}
	for (int j = 0; j < 10; j++)
	{
		if (a[j] > 0)
		{
			positive_number += 1;
		}
		else if (a[j] == 0)
		{
			zore_number++;
		}
		else if (a[j < 0])
		{
			negative_number++;
		}
	}
	cout << "正数有:" << positive_number << endl;
	cout << "负数有:" << negative_number << endl;
	cout << "零有:" << zore_number << endl;
	system("pause");
	return 0;
}

几个零散的注意点:

1.

int positive_number=0, negative_number = 0, zore_number = 0;

positive_number定义时需要初始化,若不定义初始化会报错  ---->  使用了未初始化的局部变量“positive_number”    

2.数组定义

int a[20];//int a[]  --->是错误的

①int a[]为错误定义,必须定义大小!

②int a[] = {0};这样就不报错了,得进行初始化就可以不用在[]里面写大小了

③资料补充:

数组定义格式:

                        数据类型[]数组名;    int[] array;

                        数据类型 数组名[];    int arrat[];

数组初始化:

        动态:

                  格式: 数据类型[ ] 数组名  =   new 数据类型 [ 数组长度];   

                  int[] arr = new int[3];     

        静态:            

                 格式:数据类型[ ]数组名= new 数据类型[ ]{元素1,元素2,…};

                 int[] arr = new int[]{1,2,3};  <==>int[] arr = {1,2,3};

3.输入3个double类型的值,判断这3个值是否可以表示一个三角形的三条边

#include <iostream>
using namespace std;

int main()
{
	double a, b, c;
	cout << "请输入三角形的三边 a,b,c\n" << endl;
	cin >> a >> b >> c;
	if ((a + b) > c and (a + c) > b and (b + c) > a)
	{
		cout << "可以组成三角形" << endl;
	}
	else
		cout << "bu可以组成三角形" << endl;
	system("pause");
	return 0;
}

4.下面是一个类的测试程序,设计出能使用如下测试程序的类。

题目:

int main()
{
	Test a, b;
	a.Init(68,55);
	b.Init(18,36);
	a.Print();
	b.Print();
	return 0;
}

最后结果:

68-55=13
18-36=-18
 

#include <iostream>
using namespace std;
class Test
{
public:
	int an, bn;
	Test()
	{ 
		
	}
	void Init(int ab, int bb)
	{
		an = ab;
		bn = bb;
		int a = ab - bb;

		//cout << ab << "-" << bb << endl;
	}
	void Print()
	{
		cout << an << "-" << bn<<"=" <<an-bn<< endl;
	}
};
int main()
{
	Test a, b;
	a.Init(68, 55);
	b.Init(18, 36);
	a.Print();
	b.Print();
	system("pause");
	return 0;
}

5.设计一个立方体类Box,它能计算并输出立方体的体积和表面积

(1)包含成员变量m_a(立方体边长)。
(2)包含函数SetA(double a)(设置立方体边长)、GetVolume()(计算体积)、GetArea()        (计算表面积)。
(3)包含函数Display(),用来输出计算的结果。
(4)设计测试用主函数main(),用来测试Box类。

#include <iostream>
using namespace std;
class Box
{
public:
	//	边长
	int m_A;
	void SetA(double a )
	{
		m_A = a;
	}
	//计算体积
	int Getvalue()
	{
		int V = m_A * m_A * m_A;
		return V;
	}
	int GetArea()
	{
		int Area = m_A * m_A * 6;
		return Area;
	}
	void Display(int a,int b)
	{
		cout<<"V=" <<b<< endl;
		cout << "Area=" <<a<< endl;

	}
};
int main()
{
	Box cbox;
	cbox.SetA(1);
	cbox.Display(cbox.GetArea(), cbox.Getvalue());
	system("pause");
	return 0;
}

display()函数可以修改成成员函数内部的调用其他成员函数

void Display()
	{
		cout<<"V=" <<GetArea() << endl;
		cout << "Area=" <<Getvalue() << endl;

	}

6.设计一个Rectangle类

(1)包含两个成员变量m_length和m_width,其默认值为1。
(2)包含成员函数Perimeter()计算长方形的周长,Area()计算长方形面积。
(3)包含成员函数SetWidth()和GetWidth()用来设置和得到m_width的值,SetLength()和GetLength()用来设置和得到m_length的值。Set…()函数应验证m_length和m_width均为0.0到20.0之间的浮点数。
(4)编写主函数,测试Rectangle类。

#include <iostream>
using namespace std;
class Rectangle
{
private:
	int m_length;
	int m_width;
public:
	Rectangle(int l,int w)
	{
		m_length = l;
		m_width = w;
	}
	int Perimeter()
	{
		return m_length + m_width;
	}
	int Area()
	{
		return m_length * m_width;
	}
};

int main()
{
	Rectangle crec(3,9);
	cout << crec.Area() << endl;
	cout << crec.Perimeter() << endl;
	system("pause");
	return 0;
}

第三点我觉得可以用一个构造函数进行概括所以就没有写!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

K-Pioneer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值