第二章作业

 

第二章 数据类型、运算符和表达式----作业

n      学习要求

了解数据类型概念。

掌握常量和变量的使用。

掌握各种运算符的运算结合性和优先级,掌握各类表达式正确格式。

掌握数据类型转换。

进一步熟悉VC集成编程环境的使用,熟练掌握程序设计过程和步骤,积累程序调试经验。

n      实验作业

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

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

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

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

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

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

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

n      作业要求

网上提交各个程序和相关要求提交的文字。

 

 作业1:

 【例2.1】     布尔类型使用举例

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

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

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

注意:若程序中语句++i =1;改为i++ =1;则编译时会出错,提示为error C2106'=':left operand must be l-value.


【例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;
	//上述语句等价于ch=ch>='a'&&ch<='z'?ch-32:ch;
	cout<<"The result is:"<<ch<<endl;

	return 0;
}

【例2.6】 

char ch='c';               //定义字符型变量ch,并进行初始化
int a,b=13;                //定义基本整型变量a和b,并对变量b进行初始化
float x,y;                 //变量x和y均赋值为float型的2.0,此处吧double类型的2.0自动转换成float型的2.0,编译时会有警告信息
a= ch=5;                   //a赋值为104,ch先转化为int型(即取字符c的ASCII值),再参与运算
x= b/2/x;                  //x赋值为3.0,先做整除运算,然后再转化成double与x运算
y= b/y/2;                  //y赋值为3.25,b和y先转换成double型再做除法,同时2也转化成double型,然后做除法运算

【例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:计算三角形面积和周长

#include<iostream>
#include<math.h>
using namespace std;
int main()
{
	float x,y,z,H,S,C;                    //定义△三个边长变量x,y,z,中间变量H,面积S,周长C
	cout<<"请输入△的三个边长度"<<endl;
	cin>>x;
	cin>>y;
	cin>>z;                               //用户输入三条边长度
	if(x+y>z&&x+z>y&&y+z>x)               //用条件语句判断是否能组成△
	{
		H=(x+y+z)/2;
		S=sqrt(H*(H-x)*(H-y)*(H-z));     //△面积
		C=x+y+z;                          //△周长
		cout<<"△面积S="<<S<<endl;
		cout<<"△周长C="<<C<<endl;
	}
	else                                 
	{
		cout<<"您输入的数据不能组成相应的△"<<endl;
		 
	}
	return 0;
}

老师,如果在这种情况下想让程序继续运行算出第二组数据的结果,要怎么处理?



作业3:课后练习

#include<iostream>
#include<cmath>
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;
	
	return 0;
}

/*(e+f)/g的值为2,因为e,f,g均为整型,其运算结果是整型;sqrt((double)n)*1.2/g的值为1.2,其结果被强制为double型,所以最终结果是13.7*/

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
	float x=2.5,y=4.7,t;
	int a=7;
	t=x+a%3*(int(x+y)%2)/4;
	cout<<"t ="<<t<<endl;
	
	return 0;
}

/*最终结果是2.5*/


作业4

//          计算一元二次方程

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

int main()
{
    float a ,b ,c;
    double anto ;
    cout << "请输入二次项系数 a :";
    cin >> a ;
    cout << "请输入一次项系数 b :";
    cin >> b ;
    cout << "请输入常数项 c :";
    cin >> c ;
    if(a==0&&b==0)
    {
        cout << "该方程不是一元二次方程"<< endl;
    }


    anto = (b*b)-(4*a*c) ; 
    if (anto >= 0){
        if (anto > 0){
            cout << "方程的实数根 X1= " << (-b+sqrt(anto))/(2*a) << endl;
            cout << " 方程的实数根X2= " << (-b-sqrt(anto))/(2*a) << endl;
            }
        else cout << "方程的实数根 X1 = X2 = " << (-b)/(2*a) << endl;
    }
    else {
        anto=abs(anto);
        cout << "方程的虚根X=" << -b/(2*a) <<"±"<<sqrt(anto)/(2*a) <<"j"<< endl;
   
    }




    return 0;
}

老师,作业5和6我真心不懂,看了其他同学的程序之后,感觉还是不清晰,所以希望老师可以在课堂上讲一下,到时我再将作业补充进来。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值