HFUT2020计科上机实验报告1

实验目的

  1. 使用C++语言编写简单的计算机程序,掌握C++程序从编辑、编译到运行的全过程,初步了解C++程序的特点。
  2. 掌握C++语言的数据类型(包括对各种数据类型变量的定义、初始化、赋值等)、运算符和表达式的使用。
  3. 掌握赋值语句的使用。
  4. 掌握数据的输入输出方法。

实验设备

学校机房电脑,本人电脑

实验内容

  1. 编写几个函数求值的程序
  2. 阅读代码,指出含义
  3. 编写程序求解问题
  4. 思考题

算法分析与设计

  1. 直接法
  2. 使用循环

源代码

  1. 根据随机从键盘输入的圆半径值,求圆的周长和半径并输出。
#define pi 3.1415926
void test01()
{
	double r,c,s;
	cin>>r;
	c = 2*pi*r;
	s = pi * r*r;
	cout<<c<<endl<<s; 
 } 
  1. 读入三个整数a、b、c,交换它们中的数,使a存放b的值,b存放c的值,c存放a的值。
void test02()
{
	int a,b,c;
	cin>>a>>b>>c;
	int temp = a;
	a = b;
	b = c;
	c = temp;
	cout<<a<<endl<<b<<endl<<c<<endl;
}
  1. 对任意输入的四位整数,分别求出其各位数字,并按从后到前的顺序依次输出。例如,输入为1234时,输出结果为4,3,2,1。
 void test03()
 {
 	int a , b[4]{};
 	cin>>a;
 	int n = 10 ;
 	for(int i = 0 ; i < 4 ; i++)
 	{
 		b[i] = a%10;
 		a=a/10;
 		n*=10;
	 }
	 	for(int i = 0 ; i < 4 ; i++)
 	{
 		cout<<b[i];
	 }
 }
  1. 在这里插入图片描述
#include <iostream>
#include <cmath>
using namespace std;

class Mycul
{
public:
	double m_a;
	double m_b;
	double m_c;
	double m_d;
	double m_x;
	double m_y;
	int FirstCul()
	{
		if(m_c == m_d) 
			return 0;
		double cul1;
		cul1 = m_x + (m_a+m_b) / (m_c-m_d) ; 
		cout<<"计算的结果为"<<cul1<<endl;
	}
	double SecondCul()
	{	double res;
		res = sqrt (1 + 1 / (m_x +( 1 / (m_x + 1) ) )  );
		return res;
	}
	double ThirdCul()
	{
		return sin(m_x) + cos(m_x) + 1/tan(m_x);
	}
	double FourthCul()
	{
		return pow(M_E,m_x+m_y)+ pow(M_E,m_x-m_y);
	}
	double FifthCul()
	{
		return log10(1+ sqrt(1+ m_x * m_x));
	}
	double SixthCul()
	{
		return abs(m_x * m_x - m_y * m_y) + int(m_x - m_y);
	}
	Mycul( double a , double b ,double c , double d,double x ):m_a(a),m_b(b),m_c(c),m_d(d),m_x(x){} 
	Mycul( double x):m_x(x){}
	Mycul(double x,int):m_x(x){}
	Mycul(double x,double y):m_x(x),m_y(y){}
};

void test01()
{
	cout<<"请输入a,b,c,d,x的值"<<endl;
	double a,b,c,d,x;
	cin>>a>>b>>c>>d>>x;
	Mycul cul1( a,b,c,d,x);
	cul1.FirstCul();
}

void test02()
{
	cout<<"请输入x的值"<<endl;
	double x;
	cin>>x;
	Mycul cul1(x);
	double res = cul1.SecondCul();
	cout<<res;
	
}

void test03()
{
	
	cout<<"请输入x的值"<<endl;
	double x;
	cin>>x;
	Mycul cul1(x);
	double res = cul1.ThirdCul();
	cout<<res;
}

void test04()
{
	cout<<"请输入x,y的值"<<endl;
	double x,y;
	cin>>x>>y;
	Mycul cul1(x,y);
	double res = cul1.FourthCul();
	cout<<res;
}

void test05()
{
	cout<<"请输入x的值"<<endl;
	double x;
	cin>>x;
	Mycul cul1(x);
	double res = cul1.FifthCul();
	cout<<res;
}

void test06()
{
	cout<<"请输入x,y的值"<<endl;
	double x,y;
	cin>>x>>y;
	Mycul cul1(x,y);
	double res = cul1.SixthCul();
	cout<<res;
}
int main() 
{
	test06();
	return 0;
}

  1. 阅读下列程序,写出(由指定的输入)所产生的运行结果,并指出其功能。

   #include <iostream.h>
   void main()
   {
   	char ch;

   	cin >> ch ;
   	ch = ( ch >= ’A’ && ch <= ’Z’ ) ? ( ch + 32 ) : ch ;
   	ch = ( ch >= ’a’ && ch <= ’z’ ) ? ( ch – 32 ) : ch ;
   	cout << ch << endl;
}
//首先,这个程序并不能正常运行,包含的问题有
// 编译器不支持旧式的库的命名方式
//编译器不支持void main
//中文字符应当为英文
//缺少命名空间

//将一个小写字母转换称大写的,大写字母值不变
#include <iostream.h>
void main()
{
		int m;
		float x;
		bool bi,br;

		cout << "\n int m=";
		cin >> m;
		bi = m > 1000;
		cout << "\n float x=";
		cin >> x;
		br = x <= 1e3;
		cout << bi << ',' << br << endl;
}
//分别输入100  40,2000  3000,1000  1000,2000  300,100  4000 运行。
//0,1 1,0 0,1 1,1 0,0
//判断第一个数字是否大于1000 大于为1,小于为0
//判断第二个数字是否小于1000 小于为1,大于为0
void main()
{ 
int n;
cin >> n ;
if ( n ++ < 10 ) 
cout << n << endl ;
else 
cout << n -- << endl ;
}

// 输出了这个数字+1

代码测试

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

测试过程和运行结果分析

过程顺利,结果正常。

思考题解答

在这里插入图片描述

 //* 对任意输入的小于1的并且只有3位尾数的实数,分别求出其各位数字并输出。
 //要求输出的各数字之间要空2格。例如,输入为0.368时,输出结果为'0  3  6  8'。
 void test04()
 {
 	double a;
 	int b[4]{};
 	cin>>a;
 	for(int i = 1 ; i < 4 ; i++)
 	{
 		a*=10;
 		b[i] = a;
		a = a - int(a);
	 }
	 	for(int i = 0 ; i < 4 ; i++)
 	{
 		cout<<b[i]<<"  ";
	 }
 }
 //这是一个错解,原因是计算机在储存浮点数的时候并不是输进去多少就是多少的,比如你输入0.368 ,答案确是 0,3,6,7,原因是在某一步小数之间的减法运算中,储存的小数变为0.36799...并不是0.368

正确答案

 //* 对任意输入的小于1的并且只有3位尾数的实数,分别求出其各位数字并输出。
 //要求输出的各数字之间要空2格。例如,输入为0.368时,输出结果为'0  3  6  8'。
 void test04()
 {
 	double a;
 	int b[4]{};
 	cin>>a;
 	a*=10000;
 	for(int i = 1 ; i < 4 ; i++)
 	{
		b[i] = int(a/pow(10,4-i))%10;
	 }
	 	for(int i = 0 ; i < 4 ; i++)
 	{
 		cout<<b[i]<<"  ";
	 }
 }
 //放弃对小数进行操作,*10000之后对整数进行操作

实验总结

  1. cmath库中有很多数学公式可以直接拿来使用
  2. 利用除法和取余运算可以方便的获取一个整数的各位数字
  3. 使用中间变量可以方便的交换数值(其实c中自带swap函数。。。。)
  4. 不要对浮点数进行运算操作,会造成极其小的误差

参考资料

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值