一 程序基本原理
1.什么是計(jì)算機(jī)語(yǔ)言?
計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言是計(jì)算機(jī)可以識(shí)別的語(yǔ)言,用于描述解決問(wèn)題的方法,供計(jì)算機(jī)閱讀和執(zhí)行。
2.什么是指令?
所謂指令,是計(jì)算機(jī)可以識(shí)別的命令。
3.什么是面向?qū)ο螅?BR>面向?qū)ο蟮木庉嬚Z(yǔ)言將客觀事務(wù)看作具有屬性和行為(或稱為服務(wù))的對(duì)象,通過(guò)抽象找出同一類的共同屬性(靜態(tài)特征)和行為(動(dòng)態(tài)特征),形成類。對(duì)象也就是一組屬性和一組行為的構(gòu)成
4.是么是面向?qū)ο蟮姆椒ǎ?BR>首先將數(shù)據(jù)和對(duì)數(shù)據(jù)的操作方法放在一起,作為一個(gè)相互依存,不可分離的整體--對(duì)象。對(duì)同類型的對(duì)象抽象出其共性,形成類。類中大多數(shù)數(shù)據(jù),智能用本類方法進(jìn)行處理。類通過(guò)一個(gè)簡(jiǎn)單的外部接口與外界發(fā)生關(guān)系。對(duì)象與對(duì)象之間通過(guò)消息進(jìn)行通訊。
5.什么是類》
具有相同屬性和服務(wù)一組對(duì)象的集合
6.面向?qū)ο蟮能浖_(kāi)發(fā)
面向?qū)ο蟮姆治觯∣OA) 面向?qū)ο笤O(shè)計(jì)(OOD) 面向?qū)ο缶幊蹋∣OP) 面向?qū)ο鬁y(cè)試(OOT) 面向?qū)ο蟮能浖S護(hù)(OOSM)
7.程序類型
翻譯程序有三種不同的類型
匯編程序 編譯程序 解釋程序
二:C/C++基礎(chǔ)
2.1一個(gè)簡(jiǎn)單的C/C++程序:
#include<iostream.h>
void main()
{ cout<<"hello world!"<<endl;
cout<<"welcome to our c++ \n";
}
2.2字符集
字符集是構(gòu)成C++的基本元素。
英文字母A-Z,a-z;
數(shù)字字符0-9;
特殊字符
空格 ! # % ^&*()+=-<>/\" 等
標(biāo)識(shí)符
以大寫(xiě)字母和小寫(xiě)字母以及下劃線開(kāi)始
可以有大寫(xiě)字母小寫(xiě)字母以及數(shù)字組成
大寫(xiě)字母和小寫(xiě)字母代表不同標(biāo)識(shí)符
不能是C++關(guān)鍵字
2.3 C++的注釋
/* */ 段落間的注釋
// 一行一行的注釋
常量:整型常量 (十進(jìn)制 八進(jìn)制 十六進(jìn)制)
十進(jìn)制 【0-9】
八進(jìn)制 【0/0--9 】
十六進(jìn)制 【0x/0-9】
實(shí)型常量 一般形式 12.5 -12.5
指數(shù)形式 0.34E+2 -34.53e-4 實(shí)型常量 默認(rèn)為double 如果后綴為F 則是float
字符常量
'A','a','d','?','$' \nnn 八進(jìn)制形式 '\X61'='a' 十六進(jìn)制 \xnnn
字符串常量
"this is a string"
布爾常量
只有兩個(gè) false(假) true(真)
變量 變量在使用之前一定要聲明。
數(shù)據(jù)類型 變量名1,變量名2,變量名3,…………變量名N;
例如
int a,b;
folat v,r h;
在聲明一個(gè)變量時(shí)也可以給它賦初值 : int a=3;
double f=4.55;
char c='3';
int a(4);
變量存儲(chǔ)了行, 變量除具有數(shù)據(jù)類型外,還具有存儲(chǔ)類型。
auto: 采用堆棧方式分配內(nèi)存空間,屬于暫時(shí)性存儲(chǔ)。其存儲(chǔ)空間可被若干變量多次覆蓋
register:存放在通用寄存器內(nèi)
extern: 在所有函數(shù)和程序段都可以引用
static: 在內(nèi)存中以固定地址存放,整個(gè)程序運(yùn)行期均有用
符號(hào)常量
符號(hào)常量在使用前一定要聲明
const 類型說(shuō)明符 常量名=常量值;
數(shù)據(jù)類型說(shuō)明符 const 常量名 =常量值;
const float pi=3.1415926;
符號(hào)常量在聲明時(shí)一定要賦初值,否則時(shí)錯(cuò)誤的
以下聲明就是錯(cuò)誤的
const float pi;
pi=3.1415926; // 這是錯(cuò)誤的。
計(jì)算
C=i++; 現(xiàn)把i值賦給C
B=++i; 現(xiàn)使i +1 之后賦值給B
a+=3 等價(jià) a=a+3
a+=a-=a*a 等價(jià)于 a=a+(a=a-(a*a))
逗號(hào)表達(dá)式
int a;
a=3*5,a*4 //最終結(jié)果是60;
條件運(yùn)算符
表達(dá)式1?表達(dá)式2:表達(dá)式3
cout<<(score>=60?"pass":"fail");
sizeof(類型名)
或者sizeof(表達(dá)式)
計(jì)算某種類型的對(duì)象在內(nèi)存所占的字節(jié)數(shù)
數(shù)據(jù)的輸入和輸出
C++中,將數(shù)據(jù)從一個(gè)對(duì)象到令一個(gè)對(duì)象的流動(dòng)抽象為"流"
C++ I/O 流類庫(kù) iomanip.h
dec 數(shù)值數(shù)據(jù)采用十進(jìn)制
Hex 數(shù)值采用16進(jìn)制
Oct 數(shù)值采用8進(jìn)制
Ws 取空白符
endl 換行符,刷新流
ENDS 插入空白符
setprecision(INT) 設(shè)置浮點(diǎn)數(shù)的小數(shù)位數(shù)
setw(int) 設(shè)置域?qū)?/P>
算法基本結(jié)構(gòu)
順序 選擇 循環(huán)
1.用IF語(yǔ)句實(shí)現(xiàn)選擇結(jié)構(gòu)
if(表達(dá)式) 語(yǔ)句1
else 語(yǔ)句2
例如
if(x>y) cout<<x;
else
cout<<y;
if(表達(dá)式) 語(yǔ)句 例如 if(x>y) cout<<x;
判斷一個(gè)年份是否為閏年
分析:
閏年年份被4整除不能被100整除,或者能被400整除。因此
isleapyear((year%4= =0&& year%100 !=0)||(year%400==0) );
if(isleapyear)
{cout<<"this year is leapyear"<<year;}
else
{cout<<"this year is not leapyear"<<year;}
多重選擇結(jié)構(gòu)
if(表達(dá)式1)
if(表達(dá)式2) 語(yǔ)句1
esle 語(yǔ)句2
else
if(表達(dá)式3)語(yǔ)句3
else
語(yǔ)句4
例如
cin>>x>>y;
if(x!=y)
if(x>y)
cout<<x;
else cout<<y;
else
cout<<"x=y"<<endl;
if else if 語(yǔ)句
if(表達(dá)式) 語(yǔ)句1
else if (2) 語(yǔ)句2
esle if(3) 語(yǔ)句3
esle 語(yǔ)句N(xiāo);
switch 語(yǔ)句
switch( 表達(dá)式)
{ case 常量表達(dá)式1:語(yǔ)句1
break;
case 常量表達(dá)式n: 語(yǔ)句N(xiāo)
break;
default:語(yǔ)句N(xiāo)+1
break;
}
例如:
#include<iostream.h>
void main()
{ int day;
cout<<"Please input day"<<endl;
cin>>day;
switch(day)
{ case 0: cout<<"sunday"<<end;
break;
case 1: cout<<"monday"<<endl;
break;
case 6: cout<<"saturday"<<endl;
break;
default: cout<<"the error day!";
break;
}
}
循環(huán)結(jié)構(gòu)
while(i<10)
{ sum+=i[
i++
}
do
{ sum=sum+i;
i++;
} while(i<=10);
輸入一個(gè)整數(shù),將各位數(shù)字翻轉(zhuǎn)后輸出。。。
#include<iostram.h>
void main()
{ int n; right_digit;
cout<<"enter the number";
cin>>n;
do
{ right_digit=n%10;
cout<<right_digit;
n=n/10;
} while(n!=0);
cout<<endl;
}
for yu語(yǔ)句
1..for(i=1;i<10;i++) sum=sum+i;
2..i=1;
for(;i<10;i++) sum=sum+i;
3..for(i=0,j=0;i<=j;i++,j--) k=i+j;
4..for(i=0;i<10;)sum=sum+i;i++;
用FOR可以解決所有循環(huán)問(wèn)題
求出一個(gè)數(shù)的所有因子
#include<iostream.h>
void main()
{ int n,k;
for(k=1;k<=n;k++)
{ if(n%k==0)
cout<<k<<"";
cout<<endl;
}
}
自定義類型
typedef
typedef int natural;
natural t1,t2;
定義natural可以為整型變量
枚舉類型 enum
enum 枚舉類型名 {變量值列表}
enum weekday{sun,mon,tue,wed, thu,sat};
對(duì)枚舉類型按照常量處理,但不能賦初值
枚舉類型具有默認(rèn)值 依次分別為0,1,2,3,4,…………等
也可在聲明時(shí)另行指定枚舉元素的值 如
enum weekday{sun=7,mon=1,………………};
整數(shù)值不能直接賦予枚舉類型。若需將整數(shù)值賦給枚舉變量,應(yīng)進(jìn)行強(qiáng)制類型轉(zhuǎn)換
枚舉可進(jìn)行關(guān)系運(yùn)算
例如
#include<iostream.h>
enum game_result(win lose tie cancel);
int main()
{ game_result result;
emum game_result omit=cancel;
int count;
for(count=win;count<=cancel;count++)
{ result=(game_result)count;
if(result=omit)
{cout<<"the game is cancelled";}
else
{ cout<<"the game was played";
if(result=win)
cout<<"and won";
if (result=lose)
cout<<"and lost"
}
}
return 0;
}
五個(gè)顏色不同的彩球,每次取三個(gè),三個(gè)顏色均不相同。問(wèn)有多少種取法。
5×4×3=60
enmu color {red,yellow,blue,white,black}
int i,j,k;
int n=0;
for(i=red;i<=black;i++)
for(j=red;j<=black;j++)
if(i!=j)
{ for(k=red;k<=black;k++)
if((k!=i)&&(k!=j))
{ n=n+1 }
cout<<n;
for(loop=1;loop<=3;loop++)
{ switch(loop)
{ case 1:pr1=(enum color)i;break;
case 2:pr1=(enum color)j;break;
case 3:pr1=(enum color)k;break;
default:break; }
switch(pr1)
{ case red: cout<<"red"; break;
case blue :^………………
……………………
default:break;}
}}
cout<<n; }
結(jié)構(gòu)體變量
struct student
{ int num;
char name[20];
char sex;
}
student student1;
studen1.name="zhang san"
聯(lián)合體
有時(shí)需要幾個(gè)不同類型的變量共用一組內(nèi)存單元,這時(shí)可以聲明一個(gè)聯(lián)合體類型
union uarea
{ char c_data;
long i_data; }
聯(lián)合體可以不聲明名稱,稱之為無(wú)名聯(lián)合體