1.输入课本各个例题,调试运行程序,并分析程序,将每一个程序改写2到3个版本,自己分析程序结果,然后再调试运行,核对分析结果的对错。
2.编写程序输入一个三角形的三条边,计算其面积和周长;
3.编写程序计算并输出课本本章习题3表达式的值并分析结果。
4.编写一个程序,输入一个一元二次方程的三个系数,并计算其方程的解,然后输出。
5.编写程序,自己确定一个加密算法,将自己的音标姓名(英文)加密,并输出加密后结果,请注释你的加密算法。
6.在一个自动控制设备中,控制字位数16位,控制设备产生机械动作(如削,压等)的是指令字的低8位,其中保护强制停机动作的控制命令是低8位是全为0,控制报警声音是指令的高第1位,0为报警,1为不报警。请编写程序,在紧急状况启动时,向控制器输入控制指令。
7.积累调试程序经验,收集错误信息原因(每个同学收集3-5条错误信息原因,并输入电脑形成文字)。
课本例题
一
/*********************************************
** 功能:显示输出各种整形变量所占的字节数 **
*********************************************/
#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(long)<<endl;
return 0;
}
二
#include<iostream> //编译预处理命令
#include<iomanip> //使用控制符boolalpha需要此头文件
using namespace std; //使用标准名空间
int main() //主函数
{
bool flag = ture; //定义布尔型变量flag,并初始化为ture
cout<<flag<<endl; //默认情况下为非bool字母(noboolalpha),输出整型数值1
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;
return 0;
}
/*D:\Microsoft Visual Studio\MyProjects\第二章\作业.cpp(26) : error C2065: 'ture' : undeclared identifier
D:\Microsoft Visual Studio\MyProjects\第二章\作业.cpp(26) : warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)
这代表布尔类型只能赋值true和flase,其他任何值都不能识别。*/
三
#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;
cout<<"b= "<<b<<endl;
cout<<"c= "<<c<<endl;
cout<<"d= "<<d<<endl;
return 0;
}
/*D:\Microsoft Visual Studio\MyProjects\第二章\作业.cpp(55) : error C2059: syntax error : '='
D:\Microsoft Visual Studio\MyProjects\第二章\作业.cpp(56) : error C2059: syntax error : '='
执行 cl.exe 时出错.这里代表着赋值语句语法的错误,复合赋值表达式的运算符号必须是紧挨着的。不能有空格*/
正确的:
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;
cout<<"b= "<<b<<endl;
cout<<"c= "<<c<<endl;
cout<<"d= "<<d<<endl;
return 0;
}
四
#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;
}
五
#include<iostream>
using namespace std;
int main()
{
int i = 6,j,k,temo;
j = ++j; //先对变量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;
}
六
#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;
}
七
#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;
}
编写程序输入一个三角形的三条边,计算其面积和周长
#include<iostream>
#include<math.h>
using namespace std;
#define uchar unsigned char
int main()
{
uchar a,b,c,s,m,D;
cout<<"输入三角形的三条边:"<<endl;
cin>>a>>b>>c;
if(a+b>c)
{ D=a+b+c;
m=(D)/2;
s=sqrt(m*(m-a)*(m-b)*(m-c));
cout<<"三角形的面积:"<<s<<endl;
cout<<"三角形的周长:"<<D<<endl;
}
else
cout<<"a,b,c不能构成三角形:"<<endl;
return 0;
}
//这个程序运行时面积和周长的值并没有显示出来可能是因为变量的类型取错了,应该是双精度类型。
正确的
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
while(1)
{
double a,b,c,s,m,D;
cout<<"输入三角形的三条边:"<<endl;
cin>>a>>b>>c;
D=a+b+c;
m=D/2;
s=sqrt(m*(m-a)*(m-b)*(m-c));
if(a+b>c)
cout<<"三角形的面积:"<<s<<"\n"<<"三角形的周长:"<<D<<endl;
else
cout<<"a,b,c不能构成三角形"<<endl;
}
return 0;
}
编写程序计算并输出课本本章习题3表达式的值并分析结果
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int e=1,f=4,g=2,a=7;
float m=10.5,n=4.0,k,x=2.5,y=4.7,d;
k = (e+f)/g + sqrt((double)n)*1.2/g+m;
d = x+a%3*(int(x+y)%2)/4;
cout<<"k= "<<k<<endl;
//(e+f)/g=2,
//sqrt((double)n)=2.0,
//sqrt((double)n)*1.2/g=1.2;
//k=2+1.2+10.5
cout<<"d= "<<d<<endl;
//int(x+y)%2=1,
//a%3=1,
//a%3*(int(x+y)%2)=1,
//a%3*(int(x+y)%2)/4=0,
//z=x+a%3*(int(x+y)%2)/4=2.5+0=2.5
/*按运算的优先等级:括号最优先,然后算术运算符>赋值运算符
同等级的运算符顺序从左向右
return 0;
}
编写一个程序,输入一个一元二次方程的三个系数,并计算其方程的解,然后输出
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
double a,b,c,p,x1,x2,imag,real;
cout<<"请按顺序输入二元一次方程的二次项,一次项,常数项系数:"<<endl;
cin>>a>>b>>c;
p=b*b-4*a*c;
if(p>=0)
{
if(p>0)
{
x1=(-b+sqrt(p))/(2*a);
x2=(-b-sqrt(p))/(2*a);
cout<<"一元二次方程的两个实数根是:"<<endl;
cout<<"x1= "<<x1<<"\t\t"<<"x2= "<<x2<<endl;
}
else
x1=x2=-b/2*a;
cout<<"一元二次方程有且仅有一个实数根:"<<"x1=x2= "<<x1<<endl;
}
else
{
imag=sqrt(-p)/(2*a);
real=-b/(2*a);
cout<<"一元二次方程的两个虚数根是:"<<endl;
cout<<"x1= "<<real<<"+"<<"("<<real<<")"<<"*i"<<endl;
cout<<"x2= "<<real<<"-"<<"("<<real<<")"<<"*i"<<endl;
}
return 0;
}
编写程序,自己确定一个加密算法,将自己的音标姓名(英文)加密,并输出加密后结果,请注释你的加密算法。
#include<iostream>
using namespace std;
int main()
{
int i;
char mingzi[20],a;
cout<<"请输入您的音标姓名:"<<endl;
cin.get(mingzi,20);
for(i=strlen(mingzi);i>=0;i--)
{
a=mingzi[i]+2;
cout<<a;
}
cout<<endl;
return 0;
//把输入音标姓名中的字符先加2并且顺序是反向输出。
}
在一个自动控制设备中,控制字位数16位,控制设备产生机械动作(如削,压等)的是指令字的低8位,其中保护强制停机动作的控制命令是低8位是全为0,控制报警声音是指令的高第1位,0为报警,1为不报警。请编写程序,在紧急状况启动时,向控制器输入控制指令。
这一题有点不理解题目的意思。。
#include<iostream>
#include <bitset>
using namespace std;
int main()
{
short a,b,c,d;
b=0x0000;
c=0x80ff;
d=0xff00;
cout<<"如需设备急停请按0"<<endl;
cout<<"如需启动报警系统请按1"<<endl;
cout<<"如需启动急停并且报警的请按2"<<endl;
cin>>a;
switch(a)
{
case 0:cout<<bitset<16>(b)<<endl;break;
case 1:cout<<bitset<16>(c)<<endl;break;
case 2:cout<<bitset<16>(d)<<endl;break;
default:cout<<"您输入的指令无效"<<endl;
}
return 0;
}
积累调试程序经验,收集错误信息原因(每个同学收集3-5条错误信息原因,并输入电脑形成文字
第一条:error C2059: syntax error : '='
执行 cl.exe 时出错.这里代表着赋值语句语法的错误,复合赋值表达式的运算符号必须是紧挨着的。不能有空格
第二条:error C2143: syntax error : missing ';' before 'switch'
代表着在switch语句前面少了一个分号。
第三条:'ture' : undeclared identifier
这里是代表ture没有被定义。类似的错误也是差不多的意思。