约分
#include<iostream>
using namespace std;
class Fract
{
int m_m;
int m_z;
public:
Fract(int z,int m)//没有返回值 (构造函数)
{
m_m=m;
m_z=z;
}
Fract()//没有返回值 (构造函数)
{
m_m=100;
m_z=10;
cout<<"Fract construct"<<endl;
}
void set(int z,int m)
{
m_m=m;
m_z=z;
}
void print()
{
redu();
cout<<m_z<<"/"<<m_m<<endl;
}
void redu()
{
for(int i=m_m;i>0;i--)
{
if((m_m%i==0)&&(m_z%i==0))
{
m_m/=i;
m_z/=i;
break;
}
}
}
};
int main()
{
Fract f(10,20);
// f.set(16,48);
f.print();
Fract f1(30,5);
// f1.set(16,48);
f1.print();
}
运行结果:
1/2
6/1
int main()
{
//Fract f(10,20);
// f.set(16,48);
//f.print();
Fract f1[5];//构造类对象数组,只能调用无参数构造函数,调用了5次
}
运行结果:
Fract construct
Fract construct
Fract construct
Fract construct
Fract construct
时钟
#include<stdio.h>
#include<iostream>
#include <stdlib.h>
//#include<unistd.h>
#include<windows.h>
using namespace std;
class Time
{
int m_iHour;//小时
int m_iMinute;//分钟
int m_iSecond;//秒
public:
void set(int h,int m,int s)
{
m_iHour=h;
m_iMinute=m;
m_iSecond=s;
}
void show()
{
cout<<m_iHour<<":";
cout<<m_iMinute<<":";
cout<<m_iSecond<<endl;
}
void tick()
{
Sleep(1000);
m_iSecond++;
if(m_iSecond==60)
{
m_iMinute++;
m_iSecond=0;
if(m_iMinute==60)
{
m_iHour++;
m_iMinute=0;
if(m_iHour==24)
{
m_iHour=0;
}
}
}
}
void run()//死循环
{
while(1)
{
show();
tick();
system("Cls");//清屏
}
}
};
int main(void)
{
Time t;
t.set(23,59,50);
t.run();
}
时钟2
#include<iostream>
#include<windows.h>
using namespace std;
class Clock{
public:
Clock(short h=0,short m=0,short s=0):h(h),m(m),s(s){
}
void displayTime();
private:
short h;
short m;
short s;
};
void Clock::displayTime()
{
while(true)
{
cout<<h<<':'<<m<<':'<<s<<" ";
Sleep(1000);
cout<<'\r';
if(!(s=++s%60))
if(!(m=++m%60))
h=++h%24;
}
}
int main()
{
Clock A(23,59,55);
A.displayTime();
return 0;
}
析构函数
#include<iostream>
using namespace std;
class A
{
int m_a;
public:
A(int a)
{
m_a=a;
cout<<"A construct"<<m_a<<endl;
}
~A()//析构函数 (有且只有一个)
{
cout<<"~~~~~A"<<m_a<<endl;
}
};
class Test
{
A m_t1;
A m_t2;
public:
Test():m_t2(222),m_t1(111)//方法一:函数的初始化 (先输出m_t1,在输出m_t2)
{
cout<<"Test construct"<<endl;
}
~Test()//析构函数 (有且只有一个)
{
cout<<"~~~~~Test"<<endl;
}
};
int main()
{
Test t;//先调A再调Test函数
}
输出结果:
A construct111
A construct222
Test construct
~~~~~Test //构造函数输出顺序正好相反
~~~~~A222
~~~~~A111
分配空间和释放空间
#include<iostream>
#include<malloc.h>
using namespace std;
class Test
{
int *p;
public:
Test()
{
p=(int*)malloc(sizeof(int));
*p=4;
cout<<"Test construct"<<endl;
}
~Test()//析构函数最后运行,释放空间
{
free(p);
p=NULL;
cout<<"~~~~~Test"<<endl;
}
void print()
{
cout<<*p<<endl;
}
};
int main()
{
Test t;
t.print();
cout<<"===="<<endl;
return 0;
}
运行结果:
Test construct
4
====
~~~~~Test
字符
#include<iostream>
using namespace std;
int main()
{
string s;
// string s("weiwei");
//string s1(5,'a');
//string s(s1);
s="hello shangqian";//赋值
s+="sq1409";//追加、连接
s="hello";
//s.clear; //清空
cout<<"size="<<s.size()<<endl;//求长度
cout<<"s是否为空"<<(s.empty()?"空":"非空")<<endl;
cout<<"s="<<s<<endl;
//string 类型和char*类型转换
const char *buf=s.c_str();
cout<<"buf="<<buf<<endl;
//字符串比较,可以直接使用比较运算符//== != >< ......
if(s=="hello")
{
cout<<"s=hello"<<endl;
}
//查看某个位置上的字符
//at()越界访问会抛出异常
//[]不会
cout<<"s[3]="<<s[3]<<endl;
cout<<"s[3]="<<s.at(3)<<endl;//可以通过异常捕捉
return 0;
}
字符2
#include <iostream>
#include <string.h>
using namespace std;
class MyString
{
char* m_str;
int m_nLength;
public:
int size(){return m_nLength;}
bool empty(){return m_nLength == 0;}
MyString()
{
m_str=new char[1];
m_str[0]=0;
m_nLength=0;
}
~MyString()
{
if( NULL != m_str)
delete []m_str;
m_str=NULL;
}
//MyString s(5,'c');
MyString( unsigned int length, const char& ch )
{
m_nLength=length;
m_str=new char[m_nLength+1];
for (int i=0;i<m_nLength;++i)
{
m_str[i]=ch;
}
m_str[m_nLength]='\0';
}
//MyString s(NULL);
MyString(const char* str)
{
if (NULL==str)
{
m_str=new char[1];
m_str[0]=0;
m_nLength=0;
}
else
{
m_str=new char[strlen(str)+1];
strcpy(m_str,str);
m_nLength=strlen(str);
}
}
MyString( const MyString& s )
{
m_str= new char[strlen(s.m_str)+1];
strcpy(m_str,s.m_str);
m_nLength=strlen(s.m_str);
}
};
int main()
{
MyString a("niho");
cout<<a.size()<<endl;
}
//
//The larger of 10, 20 is 0 ,为什么不是
//20呢?问题在于输出操作符的优先级高于条件操作符
//所以输出 val1和 val2比较结果的 true/false 。
//
点菜
#include<iostream>
using namespace std;
class Waiter
{
string m_name;//姓名
public:
Waiter(string name):m_name(name)
{
}
~Waiter()
{
}
string getName()
{
return m_name;
}
void Serve(int iCount,string szFood);
};
void Waiter::Serve(int iCount,string szFood)
{
cout<<m_name<<"上了"<<iCount<<"份"<<szFood<<endl;
return ;
}
class Guest
{
string m_name;
public:
Guest(string name):m_name(name)
{
}
~Guest()
{
}
void order(Waiter &w);
void pay(Waiter &w);
};
void Guest:: order(Waiter &w)
{
cout<<"**********点菜过程********"<<endl;
int iCount=0;
string szFood;
cout<<"请输入菜名";
cin>>szFood;
cout<<"请输入菜的份数";
cin>>iCount;
cout<<"**************************"<<endl;
cout<<m_name<<"向服务员"<<w.getName()<<"点了"<<iCount<<"份数"<<szFood<<endl;
w.Serve(iCount,szFood);
return ;
}
void Guest::pay(Waiter &w)
{
cout<<"**********付款过程********"<<endl;
double money=0;
cout<<"请输入付款金额:";
cin>>money;
cout<<"**************************"<<endl;
cout<<m_name<<"吃完中饭,向服务员"<<w.getName()<<"支付了" <<money<<"元餐费,离开了老盛兴"<<endl;
return ;
}
int main()
{
Waiter w("小张");
Guest g("小肥");
g.order(w);
g.pay(w);
return 0;
运行结果:
**************点菜过程****************
请输入菜名:宫保鸡丁
请输入菜的份数:2
****************************************
小肥向服务员小张点了两份宫保鸡丁
小张上了2份宫保鸡丁
**************付款过程****************
请输入付款金额:45
****************************************
小肥吃完午饭,向服务员小张支付了45元餐费,离开了老盛兴
运行的先后顺序
#include<iostream>
using namespace std;
class Test
{
int m_data;
public:
Test(int data):m_data(data)
{
cout<<"test("<<m_data<<")"<<endl;
}
~Test()
{
cout<<"test("<<m_data<<")"<<endl;
}
};
Test t1(10);
void fun()
{
Test t4(40);
return ;
}
void show()
{
static Test t5(50);
return ;
}
int main()
{
Test t2(20);
Test t3(30);
fun();
show();
}
Test t6(60);
运行结果:
test(10)
test(60)
test(20)
test(30)
test(40)
test(40)
test(50)
test(30)
test(20)
test(50)
test(60)
test(10)
true or false(甩锅还是美女)
#include<iostream>
using namespace std;
int main()
{
bool bSet=true;
cout<<"请输入你的性别:"<<endl;
cin>>bSet;
cout<<"我叫Jack,是一位"<<(bSet?"甩锅":"美女")<<endl;
cout<<"ture="<<true<<endl;
cout<<"false"<<false<<endl;
return 0;
}
网友评论