第三周

课本例题1:

#include "stdafx.h"
#include<iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
 cout<<"numerb of bytes in int is "<<sizeof(int)<<endl;
 cout<<"numerb of bytes in long int is "<<sizeof(long)<<endl;
 cout<<"numerb of bytes in shott int is "<<sizeof(short)<<endl;
 cout<<"numerb of bytes in float is "<<sizeof(float)<<endl;
 cout<<"numerb of bytes in double is "<<sizeof(double)<<endl;
 cout<<"numerb of bytes in long double is "<<sizeof(long double)<<endl;
 cout<<"numerb of bytes in char is "<<sizeof(char)<<endl;
 return 0;
}

课本例题2:

// 课本第二章.cpp : 定义控制台应用程序的入口点。
//功能:布尔类型使用举例

#include "stdafx.h"
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
 bool a=true;
 cout<<a<<endl;
 cout<<boolalpha<<a<<endl;
 cout<<a+5<<endl;
 a=0;
 cout<<"执行语句a=0;后a的值为:"<<boolalpha<<a<<endl;
 a=0.0;
 cout<<"执行语句a=0.0;后a的值为:"<<a<<endl;
 cout<<"执行语句a=0.0;后a的值为:"<<boolalpha<<a<<endl;
 return 0;
}


程序3

// 课本第二章.cpp : 定义控制台应用程序的入口点。
//功能:赋值语句表达式语句的运用

#include "stdafx.h"
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
 int a,b,c,d,t;
 a=4;
 b=a;
 a=5;
 c=d=6;
 cout<<"a="<<a<<endl;
 cout<<"b="<<b<<endl;
 cout<<"c="<<c<<endl;
 cout<<"d="<<d<<endl;
 c*=a;
 d%=a+b;  
 //等价于:
 //d=d%(a+b);
 t=a;  //交换a b的值
 a=b;  //
 b=t;  //
 cout<<"a="<<a<<endl;
 cout<<"b="<<b<<endl;
 cout<<"c="<<c<<endl;
 cout<<"d="<<d<<endl;
 return 0;
}

 

程序4

// 课本第二章.cpp : 定义控制台应用程序的入口点。
//功能:数据溢出举例

#include "stdafx.h"
#include<iostream>
using namespace std;
int main()
{
 short a,b,c,d;
 char i,j;
 a=10000;
 b=10000;
 c=a+b;
 d=a*b;
 i=a;
 j=225;
 cout<<"c="<<c<<endl;
 cout<<"d="<<d<<endl; //
 cout<<"i="<<i<<endl; //
 cout<<"j="<<j<<endl;
 return 0;}

程序6

// 课本第二章.cpp : 定义控制台应用程序的入口点。
//功能:强制类型转换


#include "stdafx.h"
#include<iostream>
using namespace std;
int main()
{
 int ab,bc;
 double b=3.14;
 char c='A';
 ab=int(b);
 bc=int(c);
 cout<<"b="<<b<<endl;
 cout<<"ab="<<ab<<endl;
 cout<<"c="<<c<<endl;
 cout<<"bc="<<bc<<endl;
 return 0;
}

 


// 课本第二章.cpp : 定义控制台应用程序的入口点。
//功能:强制类型转换


#include "stdafx.h"
#include<iostream>
using namespace std;
int main()
{
 int ab,bc;
 double b=3.14;
 char c='A';
 ab=int(b);
 bc=int(c);
 cout<<"b="<<b<<endl;
 cout<<"ab="<<ab<<endl;
 cout<<"c="<<c<<endl;
 cout<<"bc="<<bc<<endl;
 return 0;
}

 

 

 

2.输入三角形三个边,求周长和面积

// 课本第二章.cpp : 定义控制台应用程序的入口点。
//功能:已知三角形三边求面积和周长

#include "stdafx.h"
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
 double a,b,c,S,P,t;//a,b,c为三边,S为面积,P为周长
 char key=1,exit,K;
 while(key)
 {
 cout<<"请分别输入三角形的三个边:"<<endl;
 cin>>a>>b>>c;
 P=a+b+c;
 t=P/2;
 S=sqrt(t*(t-a)*(t-b)*(t-c));
 cout<<"该三角形的面积为:"<<S<<endl
  <<"该三角形的周长为:"<<P<<endl;
 K=1;
 cout<<"是否计算下一个?enter:Y or N"<<endl;
 while (K)
 {
 cin>>exit;
 if(exit=='Y'||exit=='y')
 {key=1;K=0;}
 else if(exit=='N'||exit=='n')
 {key=0;K=0;}
 else
  cout<<"无效按键,按N结束,按Y计算下一个"<<endl;
 
  }
 }
 return 0;
}

 

课本习题3

// xiti31.cpp : 定义控制台应用程序的入口点。
//课本习题3.(1)(2)编成一个了

#include "stdafx.h"
#include<iostream>
#include<math.h>
using namespace std;

int main()
{
 int e=1,f=4,g=2,a=7;
 float m=10.5,n=4.0,k;
 float x=2.5,y=4.7,z;
 k=(e+f)/g+sqrt((double)n)*1.2/g+m;
 //(e+f)/g=2,
 //sqrt((double)n)=2.0,
 //sqrt((double)n)*1.2/g=1.2;
 //k=2+1.2+10.5
 z=x+a%3*(int(x+y)%2)/4;
 //括号优先int(x+y)=7,
 //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
 cout<<"k="<< k<<endl
  <<"z="<<z<<endl;
 return 0;
}

4.编写一个求一元二次方程的程序

// jieercifangc1.cpp : 定义控制台应用程序的入口点。  
/**********************************
**输入一元二次方程的系数求解方程***
**可以输出虚数! ! ! ! ! ! ! ! ! **/  
 
#include "stdafx.h"  
#include<iostream>  
#include<math.h>  
using namespace std; 
 
int main() 

    double a,b,c,x1,x2,t,Re,Im; 
    cout<<"请分别输入方程二次项、一次项、常数项系数"<<endl; 
    cin>>a>>b>>c; 
    t=b*b-4*a*c; 
    //可以使用幂函数pow(),  
    //t=pow(b,2)-4*a*c;  
    if(t>=0) 
    { 
        x1=(-b+sqrt(t))/(2*a); 
        x2=(-b-sqrt(t))/(2*a); 
        cout<<"x1="<<x1<<endl 
           <<"x2="<<x2<<endl; 
    } 
    else 
 {
  Re=(-b)/(2*a);
  Im=sqrt(-t)/(2*a);
  cout<<"X1="<<Re<<"+"<<Im<<"i"<<endl;
  cout<<"X2="<<Re<<"-"<<Im<<"i"<<endl;
 } 
    return 0; 

5.确定一个加密算法,将自己的音标姓名(英文)加密,并输出加密后结果

// jiamijiemin1.cpp : 定义控制台应用程序的入口点。
//设计算法加密和解密

#include "stdafx.h"
#include<iostream>
#include<cstring>
using namespace std;
#define uchar unsigned char 
uchar jiami(uchar s); //加密函数
uchar jiemi(uchar s); //解密函数
uchar _crol_ (uchar a,int b);//自定义循环左移函数
uchar _cror_ (uchar a,int b);//自定义循环右移函数
int main()
{
 uchar i,k,mima,yuanma; 
    char xm[20]; //姓名存放数组
 char jxm[20]; //解码字符存放数组
    cout<<"请输入您的英文名"<<endl; 
    cin.get(xm,20); 
    k=strlen(xm);
 cout<<"加密之后:";
    for(i=0;i<k;i++)
 {
    mima=jiami(xm[i]);
 cout<<mima;
 jxm[i]=mima;
 }
    cout<<endl;
 cout<<"解密效果:";
 for(i=0;i<k;i++)
 {
  yuanma=jiemi(jxm[i]);
 cout<<yuanma;
 }
 cout<<endl;
 return 0;
}

uchar jiami(uchar s) 

uchar a,b; 
a=~s;   //先求反码
a=_crol_(a,3);//循环左移3位
b=a+5;
a=_cror_(b,2);//加5后循环右移2位
b=~a;  //再求反码
return b; //返回b
}
uchar jiemi(uchar s) //解密函数,算法与加密相反即可
{
 uchar a,b;
 a=~s;
 a=_crol_(a,2);
 b=a-5;
 a=_cror_(b,3);
 b=~a;
 return b;
}
uchar _crol_ (uchar a,int b)
{
 uchar i,j,k,m;
 for(i=0;i<b;i++)
 {
 j=a&0x01;
 if(j)
  k=1;
 else
  k=0;
 m=a>>1;
 if(k)
  a=m|0x80;
 else
  a=m|0x00;
 }
 return a;
}

uchar _cror_ (uchar a,int b)
{
 uchar i,j,k,m;
 for(i=0;i<b;i++)
 {
 j=a&0x80;
 if(j)
  k=1;
 else
  k=0;
 m=a<<1;
 if(k)
  a=m|0x01;
 else
  a=m|0x00;
 }
 return a;
}

6·设计一个程序控制设备

 

// Cokzg1.cpp : 定义控制台应用程序的入口点。
//输出一个控制信号,使设备急停的程序

#include "stdafx.h"
#include<iostream>
#include <bitset>
using namespace std;

int main()
{
short a,b;
cout<<"信号输入(输入一个两位数,可以是字母)"<<endl;
cin>>a;
cout<<bitset<16>(a)<<endl;//看看a的二进制数是什么样的,方便对照结果
b=0xff00;  //1111111100000000
a=a&b;   //按位与之后a的高8位不变,低8位全为0,能急停,是否报警
//得看输入的信号,若急停时必须报警,只需将b的高1位改为0,即0xfe00
//若不需要报警,即高一位必须为1,只需将结果与0x0100按位或再赋值给a
//b=0x0100;
//a=a|b;
cout<<"a="<<a<<endl; //这是十进制数
cout<<bitset<16>(a)<<endl; //输出二进制看看是否符合要求
 return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值