第二章作业

第二章实验作业

1.输入课本各个例题,调试运行程序,并分析程序,将每一个程序改写2到3个版本,自己分析程序结果,然后再调试运行,核对分析结果的对错。

2.编写程序输入一个三角形的三条边,计算其面积和周长;

3.编写程序计算并输出课本本章习题3表达式的值并分析结果。

4.编写一个程序,输入一个一元二次方程的三个系数,并计算其方程的解,然后输出。

5.编写程序,自己确定一个加密算法,将自己的音标姓名(英文)加密,并输出加密后结果,请注释你的加密算法。

6.在一个自动控制设备中,控制字位数16位,控制设备产生机械动作(如削,压等)的是指令字的低8位,其中保护强制停机动作的控制命令是低8位是全为0,控制报警声音是指令的高第1位,0为报警,1为不报警。请编写程序,在紧急状况启动时,向控制器输入控制指令。

7.积累调试程序经验,收集错误信息原因(每个同学收集3-5条错误信息原因,并输入电脑形成文字)。

答:

1、

例题1

/***************   功能:布尔类型使用举例  *****************/
#include<iostream>           //编译预处理命令

#include<iomanip>            //使用控制符boolalpha需使用此头文件
using namespace std;         //使用标准名空间std

int main()                   //主函数
{
	bool flag = true;        //定义布尔型变量flag,并初始化为true
	cout<<flag<<endl;        //默认情况下为非bool字母(noboolalpha),输出整型值
	cout<<boolalpha<<flag<<endl;//使用输出格式控制符boolalpha,输出布尔型值
	cout<<flag+5<<endl;      //在算术运算中,把布尔数据当作整型数据,输出6
	flag=0;                  //可以给bool类型的变量赋任意类型的值
	cout<<"执行语句 flag=0;后flag的值为:"<<boolalpha<<flag<<endl;
	flag=0.0;                //0.0为double类型的数值
	cout<<"执行语句flag=0.0;后flag的值为:"<<boolalpha<<flag<<endl;

	return 0;
}

例题2

/**************  功能:赋值表达式语句的使用  ****************/
#include<iostream>
using namespace std;

int main()
{
	int a,b,c,d;
	a=4;
	b=a;
	a=5;
	c=d=6;
	c*=a;
	d%=a+b;
	cout<<"a="<<a<<endl
		<<"b="<<b<<endl
		<<"c="<<c<<endl
		<<"d="<<d<<endl;

	return 0;
}
例题3
/************* 数据溢出举例 **************/
#include<iostream>
using namespace std;

int main()
{
	short i,j,m,n;
	i=1000;
	j=1000;
	m=i+j;
	n=i*j;
	cout<<"m="<<m<<endl;
	cout<<"n="<<n<<endl;

	return 0;
}
例题4
/************  功能:++运算符的使用  ***************/
#include<iostream>
using namespace std;

int main()
{
	int i=6,j,k;
	j=++i;      //先对变量i自增,i的值变为7,之后把i的值7赋给变量j
	k=i++;      //先把变量i的值7赋给变量k,然后i的值自增,i的值变为8
	++i=1;      //++i可以作为左值,执行完该语句后变量i的值为1
	cout<<"i="<<i<<endl
		<<"j="<<j<<endl
		<<"k="<<k<<endl;

	return 0;
}
例题5
/************ 小写字母转换为大写字母  **********/
#include<iostream>
using namespace std;

int main()
{
	char ch;
	cout<<"请输入一个字符:";
	cin>>ch;
	ch=ch>='a'&&ch<='z'?ch-'a'+'A':ch;
	//上述语句等价于ch=ch>='a'&&ch<='z'?ch-32:ch;
	cout<<"运算结果是:"<<ch<<endl;

	return 0;
}
例题6
/**********  自动类型转换  ************/
#include<iostream>
using namespace std;
int main()
{
	char ch='c';
	int a,b=13;
	float x,y;
	x=y=2.0;
	a=ch+5;
	cout<<"a="<<a<<endl
		<<"x="<<x<<endl
		<<"y="<<y<<endl
		<<"ch="<<ch<<endl;
	x=b/2/x;
	y=b/y/2;
	cout<<"b="<<b<<endl
		<<"x="<<x<<endl
		<<"y="<<y<<endl;
	
		return 0;
}
例题7
/******* 强制类型转换  *********/
#include<iostream>
using namespace std;
int main()
{
	int ab,ac;
	double b=3.14;
	char c='A';
	ab=int(b);
	ac=int(c);
	cout<<"b="<<b<<endl
		<<"ab="<<ab<<endl
		<<"c="<<c<<endl
		<<"ac="<<ac<<endl;

	return 0;
}

2、计算三角形的周长和面积
/******** 计算三角形的面积及周长*****/
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
	float a,b,c,a1,b1,c1,l,s,p;
f:
	do
	{
		cout<<"请输入三角形的三条边:";
		cin>>a>>b>>c;
		a1=a-b-c;
		b1=b-a-c;
		c1=c-a-b;
        cout<<"输入有误,请重新输入!!!"<<endl;
	}
    
	while(a1*b1*c1>=0);
	
	l=a+b+c;
	p=(a+b+c)/2;
	s=sqrt(p*(p-a)*(p-b)*(p-c));
	cout<<"三角形周长为:"<<l<<endl
		<<"三角形面积为:"<<s<<endl;

	goto f;
	return 0;
}

3、
/*** 习题3***/
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
	int e=1,f=4,g=2;
	float m=10.5,n=4.0,k;
	k=(e+f)/g+sqrt((double)n)*1.2/g+m;
	cout<<"第一小题结果k="<<k<<endl;


	float x=2.5,y=4.7,z;
	int a=7;
	z=x+a%3*(int(x+y)%2)/4;
	cout<<"第二小题结果z="<<z<<endl;
	return 0;
}

4、求一元二次方程的根

/*** 求一元二次方程的根 ***/
#include<iostream>
#include<math.h>
using namespace std;

int main()
{
	double a,b,c,x1,x2,k;
	cout<<"请输入一元二次方程的三个系数a,b,c的值:";
	cin>>a>>b>>c;
	k=b*b-4*a*c;
	if(k>=0)
	{
		x1=(-b+sqrt(k))/(2*a);
        x2=(-b-sqrt(k))/(2*a);
		cout<<"x1="<<x1<<endl
			<<"x2="<<x1<<endl;
	}
	else
	{
		cout<<"方程有虚根:";
	     x1=(-b+sqrt(k))/(2*a);
	      x2=(-b-sqrt(k))/(2*a);
		cout<<"x1="<<x1<<endl
			<<"x2="<<x1<<endl;
	}

		return 0;
}

6、自控程序输出信号问题

/**输出一个控制信号,使设备急停的程序**/ 
#include<iostream> 
#include <bitset> 
using namespace std; 
int main() 
{ 
f:long a,b; 
	cout<<"信号输入(可以是字母):"; 
	cin>>a;
	cout<<bitset<16>(a)<<endl;//看看a的二进制数是什么样的,方便对照结果
	if((a&0x8000)==0)
	{
		cout<<'\a'<<'\a'<<'\a';
	b=0xff00; //1111111100000000 
	a=a&b; //按位与之后a的高8位不变,低8位全为0,即急停,是否报警 
	//得看输入的信号,若急停时必须报警,只需将b的高1位改为0,即0xfe00 
	//若不需要报警,即高一位必须为1,只需将结果与0x0100按位或再赋值给a 
	//b=0x0100; 
	//a=a|b; 
	cout<<"a="<<a<<endl; //这是十进制数 
	cout<<bitset<16>(a)<<endl; //输出二进制看看是否符合要求
	cout<<"已保护自动停机!!"<<endl;
	}
	else
	{
		cout<<"安全"<<endl;
	goto f;
	}
	return 0; 
}
7、错误收集

常见错误1:error C2143: syntax error : missing ';' before '}'——原因是在return 0后缺少“;”;

常见错误2:error C2239: unexpected token '{' following declaration of 'main'——原因是main后缺少“()”;

常见错误3:error C2065: 'a' : undeclared identifier——原因是没有说明标识符的类型。

归根结底范常见错误的主要原因都是编写程序是太过粗心,所以在以后编写程序时一定要细心!!!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值