第二章作业

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

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

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

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

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

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

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


作业1

例2.1

/*******布尔类型使用举例*******/

#include <iostream>

#include <iomanip>
using namespace std;

int main()
{
	bool flag = true;
	cout<<flag<<endl;
	cout<<boolalpha<<flag<<endl;
	cout<<flag+5<<endl;
	flag = 0;
	cout<<"执行语句flag=0;后flag的值为:"<<boolalpha<<flag<<endl;
	flag = 0.0;
	cout<<"执行语句flag=0.0;后flag的值为:"<<boolalpha<<flag<<endl;

	return 0;
}

例2.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;
}

例2.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;
}

例2.4
/*******自增自减*******/
#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;
}

例2.5
/*******条件运算符及条件表达式的应用*******/
#include <iostream>
using namespace std;

int main()
{
	char ch;
	cout<<"please input a character: ";
	cin>>ch;
	ch = ch>='a'&&ch<='z'?ch-'a'+'A':ch;
	cout<<"The result is: "<<ch<<endl;

	return 0;
}

例2.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;
	x = b/2/x;
	y = b/y/2;
	cout<<"a= "<<a<<endl
		<<"x= "<<x<<endl
		<<"y= "<<y<<endl;

	return 0;
}

例2.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;
}

作业1只是自己简单地输入例题,这是在练习我们的基础功,我们要在打例题的时候要学会去思考,思考为什么要这样去编,要把书本的东西变成自己的,这才是打例题的根本。


作业2

作业2看上去简单,但是要把程序做出来是不容易的,因为要思考到2种情况,就是用户输入的三角形三边长度能否构成一个三角形,这就要用到if语句去筛选用户输入的数据,以免只是盲目地去计算用户输入的数据而缺乏逻辑性。还有这一次要用到sqrt数学函数,要学会去调用软件本身有的数学函数库,这就要知道数学调用的头文件形式是#include<math.h>

/******计算三角形的面积与周长******/

#include <iostream>
#include <math.h>	                            //由于用到sqrt()函数,要用到数学调用,头文件形式为<math.h>
using namespace std;

int main()
{
	float a, b, c, p, S, C;                       //定义三角形的三边变量a、b、c,面积S,周长C
	cout<<"请输入三角形的三边长度:"<<endl;
	cin>>a>>b>>c;                                 //用户自行输入三角形的三边长度

	if(a+b>c&&a+c>b&&b+c>a)                       //用if语句判断能否构成三角形
	{
		p = (a+b+c)/2;
		S = sqrt(p*(p-a)*(p-b)*(p-c));           //三角形的面积公式
		C = a+b+c;
		cout<<"三角形的面积是: "<<S<<endl;
		cout<<"三角形的周长是: "<<C<<endl;
	}
	else                                        //若不能构成三角形,再次输入数据
	{
		cout<<"您输入的三边长度不能构成三角形,请再输入:"<<endl;
		cin>>a>>b>>c;
	}
	return 0;
}

作业3

作业3是做课后题,课后题的目的是为了让我们熟悉自动转换类型和强制转换类型的区别。

/******习题三第一题******/

#include <iostream>
#include <math.h>	                            //数学函数调用头文件<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;     //n的类型强制转换为doubhle型
	cout<<"k = "<<k<<endl;

	return 0;
}

/******习题三第二题******/

#include <iostream>
using namespace std;

int main()
{
	float x = 2.5, y = 4.7;
	int a = 7;
	cout<<x+a%3*(int(x+y)%2)/4<<endl;     //(x+y)强制转换成int类型

	return 0;
}

作业4

这次是要求一元二次方程的解,难度比三角形的题目上了一个层次,因为求解要考虑多种情况,所以我用到了if语句的嵌套,把各种情况的包含关系清晰地呈现出来。

/******计算一元二次方程******/

#include <iostream>
#include <math.h>                        //数学函数调用
using namespace std;

int main()
{
	float a, b, c;                          //定义变量a,b,c
	double x1, x2, k;
	cout<<"请输入二次项系数: "<<endl;
	cin>>a;
	cout<<"请输入一次项系数: "<<endl;
	cin>>b;
	cout<<"请输入常数项: "<<endl;
	cin>>c;

	k = b*b-4*a*c;                         //用一元二次方程的求根公式求出解x1, x2
	x1 = (-b+sqrt(k))/(2*a);
	x2 = (-b-sqrt(k))/(2*a);
	
	if(k>=0)								//根据k的值不同分类讨论
	{		
		if(x1==x2)
		{
			cout<<"一元二次方程的解只有1个,x= "<<x1<<endl;
		}
		else
		{
			cout<<"一元二次方程的解有2个,x1= "<<x1
				<<"   x2= "<<x2<<endl;
		}
	}
	else
	{
		cout<<"一元二次方程有虚根,x1=i* "<<x1           //求出一元二次方程的虚根
			<<"   x2=i* "<<x2<<endl;
	}

	return 0;
}

请问老师为什么求虚根时,值的后面会有.#IND的字样??


作业5

这个加密与解密的程序我是参考光荣榜的同学做的,还有一些不懂,需要研究研究。委屈委屈

/******加密与解密程序******/

#include <iostream>
using namespace std;

int main()
{
char a[25],b[25],c[25],e[25];          //定义四个一维字符型数量组  
    int k;    
    cout<<"欢迎进行名字加密与解密程序"<<endl;        //加密解密选择  
    cout<<"加密请输入“1”,解密请输入任意数字"<<endl;  
    cin>>k;   
      
    if(k==1)                                        //加密                        
    {  
        int i;  
        cout<<"请输入你要加密的名字"<<endl;         //输入要加密的名字  
        fflush(stdin);                              //清除输入缓存  
		cin>>a;                                     //从键盘获取字符                                   
        cout<<"该名字的加密成果为:"<<endl;         //加密结果输出  
        for(i=0;i<25;i++)  
        {  
            if(a[i]==0)  
            {  
                break;  
            }  
            b[i]=a[i];  
            b[i]=b[i]+10;                           //加密方法  
            c[i]=b[i];  
            cout<<c[i];
  
        }  
        cout<<endl;  
    }  
    else                                           //解密                                              
    {  
          
        cout<<"请输入你要解密的名字"<<endl;        //输入要解密的名字  
        fflush(stdin);                             //清除输入缓存  
        cin>>a;  
          
        cout<<"该名字的解密成果为:"<<endl;        //解密结果输出   
        for(int i=0;i<25;i++)  
        {  
            if(a[i]==0)  
            {  
                break;  
            }  
            b[i]=a[i];  
            b[i]=b[i]-10;                          //解密方法  
            e[i]=b[i];  
            cout<<e[i];  
        }  
        cout<<endl;  
    }  

	return 0;
}

作业6

老师,作业6我实在看不明白题目。无从下手大哭大哭大哭


作业7:错误原因

1.我们打代码的基础还不够扎实,有时会犯些小错误,通常忘记语句后面加分号,还有一些语句的不熟悉。

2.调用函数时忘记了在预处理中打入头文件,以致程序无法运行。

3.暂时还没收集到,以后补上。。偷笑偷笑

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值