} do{
先执行一次do,然后判断,条件为真就执行do
}while(条件);//注意分号
while(条件){条件为真就执行 }
for(i=0;i<10;i++)//for就是把真正控制循环的提取出来 {
cin>>x;//只有这一句是循环真正要做的 }
等价于 int i=0; while(i<10) {
cin>>x; i++; }
echo 10 20 30 40 50 > input将这些数追加到文件中 cat input从文件中看这些数 a.outinput把执行结果写入文件
continue:是跳出循环体,结束本次循环,而不结束整 个循环,循环还向下继续 continue到调整部分即i++,再到循环条件。 例:continue与break的对照 int main() {
int score=0; int sum; int cnt=0;
for(int i=1;;i++)//注意这里不控制次数 {
cout<<\学生\的成绩\ cin>>score; if(score==-1) break;
if(score<0||score>100) {
cout<<\无效成绩\ continue;
}
sum+=score;//若continue,break程序都没有执行 cnt++; }
cout<<\ cout<<\ return 0; }
Fibonacci数列:1 1 2 3 5 8 13 21 34 55 89
(第1 2个数为1,1从第3个数开始,每个数是其前面两个数之各) 即:F1=1 (n=1) F2=1 (n=2) Fn=Fn-1+Fn-2 (n>=3)
用typef声明一个新的类型名来代替已有的类型名。(注意它不能创造新的类型) 如:typedef int INTEGER; 如:typedef struct{ int month; int day; int year;
}DATE;----------------------------DATE是新的类型名,而不是结构体变量名;
type int NUM[100];-------------------------声明NUM为整型数组类型,包含100个元素
NUM n;-------------------------定义n为包含100个整型元素的数组
type char *STRING;---------------声明STRIGN为字符指针类型
STRING p,s[10];--------------------p为字符指针变量,s为指针数组(有10个元素)
type int(*POINTER)()-------------------声明POINTER为指向函数类型,函数返回整数型
POINTER p1,p2;-------------------------p1,p2为POINTER类型的指针变量
typedef unsigned short int USI;//给类型起新名。就是把无符号短整形起名USI
测试因为USI最大是655535,USI a=65536;//会有警告,结果回到最小值 ,输出a为0
计算机或输出inf表无穷大,-inf表负无穷大
enum枚举类型 :是对整数的细分,让原本没有函义的数值变得有直观的函义( 定义方法:----------enum 枚举类型名{枚举常量列表};
如)
enum WeekDay{MON=1,TUE,WED,THU,FRI,SAT,SUN=0}; //默认0表MON,1表TUE。。。。。。
也可以指定:现在就变成1 2 3 4 5 6 0
enum Radix{BIN=2,OCT=8,DEC=10,HEX=16};//用整 数表进制
enum Suit{HEARTS,SPADES,DIAMONDS,CLUBS};//红桃,黑桃,方片,梅花
enum Rank{TWO=2,THREE,FOUR,FIVE,SIX,SEVEN,EIGHT,NINE,TEN,JACK,QUEEN,KING,ACE=1}; //扑克牌
枚举类型也是一个变量 Suit s=CLUBS;
cout<
s=(Suit)n;//必须强制转换,int不会自动转换成enum类型。
直接定义枚举变量----------- enum{sun,mon,tue,wed,thu,fri,sat}workday,week_end;
数组:有序数据的集合,数组中的数据称为数组元素(数组名和下标可以唯一标识一个数组元素。)
在内存中占有一片连续的存储空间。
定义一维数组:-----------------int a[10]; 类型标识符 数组名[常 量表达式]; //常量表达式:可以是常量,常变量,符号常量 经典: int n; cin>>n;
int a[n];(以上三行错误) 可以改为:
const int n=5;//代表n是常量 int a[n];
数组初始化:可以int a[]={1,2,3,4,5};系统会自动定义数组长度为5
初始化可以成组初始化,但赋值必单个赋值。
sizeof(数组名) 如char a[6]; int i[6]; sizeof(a)=6;
sizeof(i)=24;//表明数组所占的字节数,而不是元素的个数。
注意:在vc中不可以int a[6]={}; 要定成int a[6]={0}; 使用数组不要越界,
二维数组
int a[3][5]={{1,2,3,4},{6},{7,8}};//相当于3个含有5个元素的一维数组 for(i=0;i<3;i++) {
for(j=0;j<5;j++) cout<
*********************************************************************************************** 区别:
C++:new:动态分配 delete:撤销内存的运算符(是运算符,执行快) C: malloc free来来分配和撤消内存空间(是函数) new运用方法:
如new int(100)-----------------------new 类型[初值] 用new分配数组空间时不能定初值,如果因为内存不足等原因无法分配空间,用new会返回一个空指针NULL,用户会根据该指针的值判断分配空间是否成功;
new int;开辟一个整 数的存储空间,返回一个指向该存储空间的地址 new int(100);开辟一个整数的空间,并指定该整 数的初值为100,返回一个指向该存储空间的地址
new char[10];开辟一个存放字符数组
***********************************************************************************************
*********************2010年09月08日 星期三 09时12分20秒 (第五天)***********************************
用户自定义的类型:结构体struct,共用体union,枚举类型。类类型class
(结构体与共用体的变量都不可以直接输出,只能输出变量的成员。如p1.name) 数组:数组中的各元素素是属于同一类型。
结构体:可以把不同类型的数据组合成一个有机整体
结构体类型的定义方法:
struct 结构体类型名{成员列表};----------C++中的成员列表中可以有函数,但有class就不用了 成员声明:
类型名 成员名;
变量的定义
如定义班级类型的数组
struct Class{//在自定义类型名时关键字的首字母总是大写,防止与系统关键字冲突 int id;//班号
int student_namber;//学号
string teacher;//老师 string course;//课程 int date[3];// }
共用体union:所有的成员共用同一块内存。 共用体类型数据的特点:
1、使用共用体的目的时希望使用同一个内存段存入几种不同类型 的数据。
2、能够访问的是共用体最后一次被赋值的成员,在对一个新的成员赋值后原有的成员就失去了作用。
3,共用体变量的地址和它各成员的地址是同一个地址。如&p1=&p1.name=&p1.age 4、不能对共用体变量名赋值,不能企图引用变量名来得到一个值
5、不能在定义共用体变量时对它初始化,不用用共用体变量名作为函数的参数。 #include
unsigned int addr;//占4个字节
unsigned char byte[4];//重复使用addr的4个字节, };
int main() {
int i;
union IP myip;
cout<<\以下是一个小用途 myip.addr=0x41424344; for(i=0;i<4;i++)
cout< return 0; } /* int 数在内存实际存储是:低字节---->到高字节; 小用途:利用共用体,可以求出多字节类型数据,在内存中各个字节上所存的数据 ` 共用体与结构体的区别: 共用体:变量所占的内存长度等 于最长的成员的长以。 结构体:变量所占的内存长度等 于是各成员所占内存长度之和。,每个成员分别占有自已的内存单元。 */ 输出十六进制cout<