第二章作业
2014-03-22 21:25
281 查看
第二章 数据类型、运算符和表达式----作业
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我真心不懂,看了其他同学的程序之后,感觉还是不清晰,所以希望老师可以在课堂上讲一下,到时我再将作业补充进来。
相关文章推荐
- ios数据持久化
- 黑马程序员 《ios零基础教程》 ----switch、while、do while 2014-3-22总结
- 连载:面向对象葵花宝典:思想、技巧与实践(6) - 不要说你懂“类”
- 阿里实习生电面题 我的解法
- 不能从const char指针转换为LPCWSTR的原因及解决方法
- malloc和new的区别
- 设计模式之状态模式
- java j=j++有感
- 开发者必备的四个云开发平台
- dom4j
- JUnit中assertEquals和assertSame方法的不同
- 【转】对初学LoadRunner朋友的建议
- ios程序的启动过程
- IoC框架---通俗概述
- [DataTable]控件排序事件中用DataView及DataTable排序
- 解决 Errors running builder 'DeploymentBuilder' on project '
- 哥德巴赫猜想
- AppleScript
- inter
- ACM练习建议