第三周作业

实验作业

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

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

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

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

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

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

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


课本例题1:

// Thomework2.cpp : Defines the entry point for the console application.
//
//********功能:显示输出各种整型变量所占的字节数********//
#include "stdafx.h"
#include<iostream>                  //编译预处理命令
using namespace std;                //使用标准名空间 std

int main()                          //主函数
{
	 cout<<"number of bytes in int is: "<<sizeof(int)<<endl;
	 cout<<"number of bytes in long int is: "<<sizeof(long)<<endl;
	 cout<<"number of bytes in short int is: "<<sizeof(short)<<endl;
	 cout<<"number of bytes in signed int is: "<<sizeof(signed)<<endl;
	 cout<<"number of bytes in unsigned int is: "<<sizeof(unsigned)<<endl;
	 cout<<"number of bytes in unsigned long int is: "<<sizeof(unsigned long)<<endl;
	 cout<<"number of bytes in unsigned short int is: "<<sizeof(unsigned short)<<endl;

	 return 0;
}
输出整型数分别是4、4、2、4、4、4、2。



课本例题2:

// Thomework.cpp : Defines the entry point for the console application.
//**************功能:布尔类型使用举例***********//


#include "stdafx.h"
#include<iostream>                  //编译预处理命令

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

int main()                          //主函数
{   
	bool flag =true;                 //定义布尔型变量flag,并初始化为true
	cout<<flag<<endl;               //默认情况下为非bool字母(noboolapha),输出布尔型值
	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;
	flag= 1.1;
	cout<<"执行语句flag =1.1;后flag的值为:"<<boolalpha<<flag<<endl;
	flag= 1.0;
	cout<<"执行语句flag =1.0;后flag的值为:"<<boolalpha<<flag<<endl;
	flag= 0.1;
	cout<<"执行语句flag =0.1;后flag的值为:"<<boolalpha<<flag<<endl;

	return 0;
}


分析:布尔类型就是用来判断正确与否,默认情况下为非bool字母(noboolalpha),输出数字。

 

课本例题3:

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

	
	return 0;
}


 

分析:我把d%=a+b;删去了,结果没有变化,这个验证了“=”有变的表达式未求值之前是无法对其左边的变量赋值的。

// homework.cpp : Defines the entry point for the console application.
//********功能:赋值表达式语句的使用*************//

#include "stdafx.h"
#include<iostream>
using namespace std;

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

	
	return 0;
}


分析:我把a=5,与a=b交换位置,结果取后面运算的值。

 

课本例题4:

// Thomework.cpp : Defines the entry point for the console application.
//**************功能:溢出举例***********//


#include "stdafx.h"
#include<iostream>                  //编译预处理命令

using namespace std;                //使用标准名空间std

int main()                          //主函数
{   
	long i,j,m,n;
	i=1000000;
	j=1000000;
	m=i+j;
	n=i*j;
	cout<<"m="<<m<<endl;
	cout<<"n="<<n<<endl;


	return 0;
}


分析:把short 型变成long型,只要超过了其字节大小就会随便输出一个数。

 

课本例题5:

// homework3.cpp : Defines the entry point for the console application.
//***********++运算符号使用举例*******//

#include "stdafx.h"
#include<iostream>
using namespace std;

int main()
{
	int i=6,j,k,temp;
	j=++i;
	k=i++;
	i++=1;
	cout<<" i= "<<i<< endl
		<<" j= "<<j<< endl
		<<" k= "<<k<< endl;

	
return 0;
}


程序中的语句++i=1;改为i++=1;则编译时回出错,说明“=”的左操作数必须为左值,而i++为右值,所以会出错。


课本例题6:

// homework3.cpp : Defines the entry point for the console application.
//***********++运算符号使用举例*******//

#include "stdafx.h"
#include<iostream>
using namespace std;

int main()
{
    char ch;                                      //定义字符型变量ch//
	cout<<"please input a character:";            //显示“please input a character”关键符
	cin>>ch;                                      //输入ch
	ch=ch>='1'&&ch<='10'?ch-'1'+'2':ch;           //运算符号
	cout<<"The result is:"<<ch<<endl;             //输出结果为ch

	
return 0;
}


即该式为:若数值在1到10之间。则若值为1到8之间的数,则输出为数+1.若数为0则为0,为9则为:。超过10则都为2

课本例题7:

// homework3.cpp : Defines the entry point for the console application.
//***********++强制类型转换使用举例*******//

#include "stdafx.h"
#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;
	cout<<"ab= "<<ab<<endl;
	cout<<"c= "<<c<<endl;
	cout<<"ac= "<<ac<<endl;

	
return 0;



 强制类型转换的精度会有些损失。


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

// HOMEWORK03.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include<iostream>
#include<cmath>
using namespace std;

int main()
{
	double a,b,c,S,C,P;
	cout<<"请输入三角形的三边长:";
	cin>>a>>b>>c;
	P=(a+b+c)/2;
	if (a+b>c&a-b<c)
	{C=a+b+c;
		S=sqrt(P*(P-a)*(P-b)*(P-c));
	cout<<"C="<<C<<endl;
	cout<<"S="<<S<<endl;
	}
	else
	{cout<<"输入有误,无法求出!"<<endl;}
	
	return 0;
}



作业三:

#include <iostream>
#include<math.h>
using namespace std;
int main()
{
	double a,b,c,x1,x2,D,Re,Im;
	cout<<"请输入一元二次方程的系数a,b,c:";
	cin>>a>>b>>c;
	D=b*b-4*a*c;
	if(D>=0)
	{
		x1=(-b+sqrt(D))/2*a;
		x2=(-b-sqrt(D))/2*a;
		cout<<"x1="<<x1<<endl;
		cout<<"x2="<<x2<<endl;
	}
	else
	{
		cout<<"该方程有虚根!";
		Re=(-b)/(2*a);  
        Im=sqrt(-D)/(2*a);  
        cout<<"X1="<<Re<<"+"<<Im<<"i"<<endl;  
        cout<<"X2="<<Re<<"-"<<Im<<"i"<<endl;  
	}
	return 0;
}


作业四(自动控制):

#include<iostream>   
#include <bitset>   
using namespace std;  
int main()
{
	long a,b;
	cout<<"输入信号(数字或者字母):";
	cin>>a;
	cout<<bitset<16>(a)<<endl;//看看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;    //输出二进制看看是否符合要求  
    return 0;  
}


感觉这题挺难的参考了好几位同学的才写出来,主要是进制的转换不熟练,以后练习多些应该能改善。

作业五:错误集锦:

1、在输入的时候如果英文字符和中文字符没有转换过来,容易导致建立不了程序,出错了还挺难找错的,所以每次都得注意。

2、在写程序的时候容易少写了头文件,以后要注意把程序中对应的头文件写上。

3、cout对应的是<<;cin对应的是>>。




评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值