实验作业
1.输入课本各个例题,调试运行程序,并分析程序,将每一个程序改写2到3个版本,自己分析程序结果,然后再调试运行,核对分析结果的对错。
2.编写程序输入一个三角形的三条边,计算其面积和周长;
3.编写程序计算并输出课本本章习题3表达式的值并分析结果。
4.编写一个程序,输入一个一元二次方程的三个系数,并计算其方程的解,然后输出。
5.编写程序,自己确定一个加密算法,将自己的音标姓名(英文)加密,并输出加密后结果,请注释你的加密算法。
6.在一个自动控制设备中,控制字位数16位,控制设备产生机械动作(如削,压等)的是指令字的低8位,其中保护强制停机动作的控制命令是低8位是全为0,控制报警声音是指令的高第1位,0为报警,1为不报警。请编写程序,在紧急状况启动时,向控制器输入控制指令。
7.积累调试程序经验,收集错误信息原因(每个同学收集3-5条错误信息原因,并输入电脑形成文字)。
例2.1
/*************************************
** 功能:布尔类型使用举例 ***
*************************************/
#include<iostream> //编译预处理命令
#include<iomanip> //使用控制符boolalpha需使用此头文件
using namespace std; //使用标准名空间std
int main() //主函数
{
bool flag=true ; //定义布尔型变量flag,并初始化为true
cout<<flag<<endl; //默认情况下为非bool字母(noboolalpha),输入整型值1
cout<<boolalpha<<flag<<endl; //使用输出格式控制符boolalpha,输出布尔型值
cout<<flag+8<<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;
}
改:因为true表示的是1,而false表示的是0,所以改了之后答案会不同。
/*************************************
** 功能:布尔类型使用举例 ***
*************************************/
#include<iostream> //编译预处理命令
#include<iomanip> //使用控制符boolalpha需使用此头文件
using namespace std; //使用标准名空间std
int main() //主函数
{
bool flag=false; //定义布尔型变量flag,并初始化为false
cout<<flag<<endl; //默认情况下为非bool字母(noboolalpha),输入整型值1
cout<<boolalpha<<flag<<endl; //使用输出格式控制符boolalpha,输出布尔型值
cout<<flag+8<<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.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;
}
改:
/*****************************************
*** 功能:赋值表达式语句的使用 **
*****************************************/
#include<iostream>
using namespace std;
int main()
{
int a,b,c,d;
a=4;
b=a*a;
a=5;
c=d=6;
c*=a;
d%=b%a;
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; //先对变量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;
}
例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
/************************************
** 功能:计算三角形周长面积 **
************************************/
#include<iostream>
#include <math.h>
using namespace std;
int main()
{
double a,b,c,l,p,s;
cout<<"输入三角形边长a:"<<endl;
cin>>a;
cout<<"输入三角形边长b:"<<endl;
cin>>b;
cout<<"输入三角形边长c:"<<endl;
cin>>c;
l=a+b+c; //根据周长公式为各条边长相加得出周长
p=l/2;
s=sqrt(p*(p-a)*(p-b)*(p-c)); //根据海伦公式得出三角形面积公式
cout<<"三角形周长:"<<l<<endl;
cout<<"三角形面积:"<<s<<endl;
return 0;
}
因为不会切换循环公式,所以在三条边是否可以成为一个三角形这个方面不会弄出来,所以只有自己去判断这三条边长时候可以成为
三角形之后再去带入计算。
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)/double(g)+sqrt((double)n)*1.2/g+m;
cout<<"k="<<k<<endl;
return 0;
}
答案:
#include <iostream>
#include <math.h>
using namespace std ;
int main()
{
float x=2.5,y=4.7,z;
int a=7;
z=x+float(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,k,x1,x2;
cout<<"输入方程 a*x*x+b*x+c=0 中的a,b,c:"<<endl;
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;
cout<<"方程的解为:x2="<<x2<<endl;
return 0;
}
else(k<0) ;
cout<<"一元二次方程没有解"<<endl;
return 0;
}
答案:
5
这个程序自己一点也不知道怎么做,只有看了看别人的东西是怎么做的,然后自己打了一遍别人的东西上去。
/**********************************
** 加密程序 **
**********************************/
#include<iostream>
using namespace std;
int main()
{
char a[20],b[20],c[20]; //定义数组a,数组b和数组c为字符型变量,每组数组有20个数组元素
int i; //定义整型变量i
cout<<"输入你的姓名拼音进行加密"<<endl; //显示输出“请输入你的姓名拼音进行加密”
cin.get(a,20); //cin.get(字符数组名,接收字符数目)用来接收一行字符串,可以接收空格
cout<<"加密完成"<<endl; //显示输出“加密完成”
for(i=0;i<20;i++) //对所输入的字符串进行加密
{
if(a[i]==0) //当数组a[i]==0时,结束循环
{
break;
}
c[i]=a[i]; //把数组a中的每一个元素一一赋值给相对应数组c中的元素
c[i]=c[i]+5; //数组c中每个元素加上5后再一一赋值给数组c,也就是说这里就是进行加密
b[i]=c[i]; //把数组c中的每一个元素一一赋值给相对应数组b中的元素
cout<<b[i]; //输出数组b中的字符
}
cout<<endl;
return 0;
}
第六题不会做,等有时间再完成吧。
7.
自己在打程序的之后总是忘记加上符号",:,;,这几个符号。
自己有时候会卡在一个地方,在别人提醒的时候就突然想到,说明基础不够好。
一开始在自己打函数的时候总是以为自己直接在一行输入所有的系数。总是不行,最后在
一次偶然中,一个数字一个数字输出来的时候程序就可以正常显示出结果,一直都是自己不会
怎么输出,现在学会了。希望自己在接下来的日子里继续努力。加油!