一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

c++

 afskd 2011-04-23
程序2-1:
 

1.//simple.cpp是一個簡單的C++程序
2.#include <iostream.h>
3.void main(void)
4.{
5. int i;
6. cout<<"Hello C++!";
7. cout<<"請輸入一個整數(shù):\n";
8. cin>>i;
9. cout<<"您輸入的整數(shù)是:";
10. cout <<i;
11. cout <<'\n';
12.}

 

  我們對這個程序逐行加以解釋:
 ?。?)第一行是C++語言的注釋。其中,"http://"是C++語言的一種注釋符號,自"http://"開始,一直到本行結束,所有內容都會被當作注釋對待。C++注釋也可以寫成下面的形式:
    /*注釋內容*/
    即夾在"/*"與"*/"號間的部分是要注釋的內容,例如,本句可以改為:
    /*simple.cpp是一個簡單的C++程序*/
  我們進行程序設計時,這兩種注釋形式都會經常用到。它們的區(qū)別在于:前者只能注釋一行內容,而后者可以注釋多行內容。它可以用在程序的任何地方,編譯器在編譯時將這些信息忽略,注釋就是用來幫助閱讀和理解程序的信息,也可使用注釋來幫助用戶調試程序。
 ?。?)第2行使用預處理指令#include將頭文件iostream.h包含到程序中來, iostream.h是標準的C++頭文件,它包含了輸入和輸出的定義。
  (3)第3行定義了一個稱為main的函數(shù)。
   ◇ 一個函數(shù)有0個或多個參數(shù),它們出現(xiàn)在函數(shù)名后的一對圓括號中。
   ◇ 括號中的void表示main沒有參數(shù)。
    一個函數(shù)可以有一個返回類型,它在函數(shù)名的左邊。
   ◇ main函數(shù)左邊的返回類型為void,表示沒有返回值。
   ◇ C++程序的執(zhí)行總是從main函數(shù)開始的。
 ?。?)第4行是一個花括號,是main函數(shù)體開始的標記。
 ?。?)第5行是一個語句。
   ◇ 一個語句可能是定義或聲明一個變量,也可能是得到一個數(shù)值的計算步驟。
   ◇ 一個語句用分號(;)結尾,C/C++用分號來分隔語句。
   ◇ 這個語句定義了一個整型變量i。
   ◇ 一個變量能夠保存一種特定類型的數(shù)據(jù),整型變量能夠保存一個整型數(shù)據(jù)。
 ?。?)第6行也是一個語句。
   ◇ 這個語句將字符串"Hello C++!"發(fā)送到cout輸出流。
   ◇ 一個字符串是一個用雙引號包圍的字符系列。
 ?。?)第7行也是一個語句。
   ◇ 這個語句將字符串"請輸入一個整數(shù):"發(fā)送到cout輸出流。
   ◇ 字符串的最后一個字符(\n)是一個換行符。
   ◇ 流是執(zhí)行輸入和輸出的對象。
   ◇ cout是C++標準的輸出流,標準輸出通常是指計算機屏幕。
   ◇ 符號<<是一個輸出運算符,帶一個輸出流作為它的左操作數(shù),一個表達式作為它的右操作數(shù)。后者被發(fā)送到前者,字符串"請輸入一個整數(shù):\n"發(fā)送到cout的效果是把字符串打印到計算機屏幕上。
  (8)第8行也是一個語句。
   ◇ 這個語句將cin輸入流抽取到變量i。
   ◇ cin是C++標準的輸入流,標準輸入通常是指計算機鍵盤。
   ◇ 符號>>是一個輸入運算符,帶一個輸入流作為它的左操作數(shù),一個變量作為它的右操作數(shù)。前者被抽取到后者,cin輸入流抽取到變量i的效果是將鍵盤的輸入值復制到變量i中。
  (9)第9、10、11行分別是在屏幕上打印"您輸入的整數(shù)是:"、變量i和和換行符。這三行實際上可以綜合為一個語句:
      cout<<"您輸入的整數(shù)是:" <<i <<'\n';
    它的效果與使用三個語句是一樣的。
 ?。?0)第12行的花括號是main函數(shù)體結束的標記。
    運用第一章介紹的知識,我們在Visual C++6的開發(fā)環(huán)境里,編譯、連接、運行該程序,可以得到下面的提示:
      Hello C++!請輸入一個整數(shù):
    假定我們輸入整數(shù)5,即:
      5↙
    ↙表示鍵入了"ENTER"鍵(或稱為回車鍵),則得到運行結果:
      您輸入的整數(shù)是:5
  通過這個實例,我們對C++程序的結構、語句、變量、函數(shù)、預處理指令、輸入和輸出等,已有了一個初步的印象,在后面的章節(jié)中,我們還將作更詳細的介紹。
  由于我們定義main( )函數(shù)的返回類型為void,所以最后就不用返回值了。如果我們定義main的返回類型的int,則要返回一個整型值:
   int main()
   {
    …
    return 0;
   }

  要注意的是C/C++是區(qū)分大小寫的,不能隨便更改,cout是C++標準的輸出流,而Cout不是,如果沒有預先定義,編譯器就不認識這個Cout。大多數(shù)C++命令使用小寫字母,大多數(shù)常量使用大寫字母,而大多數(shù)變量是大小寫混合使用。

 

 

表2-2 C++關鍵字
 
asm default float operator static_cast union
auto delete for private struct unsigned
bool do friend protected switch using
break double goto public template virtual
case dynamic_cast if register this void
catch else inline reinterpret_cast throw volatile
char enum int return true wchar_t
class explicit long short try while
const export mutable signed typedef .
const_cast extern namespace sizeof typeid . .
Continue false new static typename . .

表格 表2-3 基本的數(shù)據(jù)類型及其表示范圍
 
類型名 類型 字節(jié) 表示范圍
char 字符型 1 -128 ~127
unsigned char 無符號字符型 1 0 ~255
signed char 有符號字符型(與字符型相同) 1 -128 ~127
int 整型 * 與機器有關
unsigned int 無符號整型 * 與機器有關
signed int 有符號整型(與整型相同) * 與機器有關
short int 短整型 2 -32,768~ 32,767
unsigned short int 無符號短整型 2 0~65,535
signed short int 有符號短整型(與短整型相同) 2 -32,768~ 32,767
long int 長整型 4 -2,147,483,648 ~2,147,483,647
signed long int 有符號長整型(與長整型相同) 4 -2,147,483,648 ~ 2,147,483,647
unsigned long int 無符號長整型 4 0~4,294,967,295
float 浮點型 4 3.4E +/- 38 (7位有效數(shù)字)
double 雙精度型 8 1.7E +/- 308 (15位有效數(shù)字)
long double 長雙精度型 10 1.2E +/- 4932 (19位有效數(shù)字)
圖示 圖2-2
 
  如果一個雙目運算符兩邊的操作數(shù)類型不同,先要將它們轉換為相同的類型,即較低類型轉換為較高類型,然后再參加運算。所謂類型的高低,跟所占的存儲空間大小有直接關系,所占存儲空間越大的類型,級別越高。
  圖中橫向的箭頭表示必須的轉換,如兩個float型數(shù)參加運算,雖然它們類型相同,但仍要先轉換成double型再進行運算,結果亦為double型??v向箭頭表示當運算符兩邊的操作數(shù)為不同類型時的轉換,如一個long型數(shù)據(jù)與一個int型數(shù)據(jù)一起運算,需要先將int型數(shù)據(jù)轉換為long型,然后兩者再進行運算,結果為long型。所有這些轉換都是由系統(tǒng)自動進行的,使用時只需了解結果的類型即可。
程序段 程序2-2
  #include <iostream.h>
void main(void)
{
 char a = 'x';
 int b = 3,f = 2;
 float c = 2.5678;
 double d = 5.2345
 long e = 32L;
 cout<<a - b + d / c - e * f<<endl;
}
  下面我們來分析一下這段程序:
 ?。?) 進行d / c運算時,要將c轉換成double型,運算的中間結果為double型;
 ?。?) 進行e * f運算時,將f轉換為long型,運算的中間結果為long型;
  (3) 進行a - b運算時,將a轉換為int型(數(shù)值為ASCⅡ碼值120),運算的中間結果為int型;
 ?。?) 當(3)的中間結果與(1)的中間結果運算時,將(3)的中間結果轉換為double型,運算的中間結果為double型;
 ?。?) 當(4)的中間結果與(2)的中間結果運算時,將(2)的中間結果轉換為double型,得出最后結果。
  于是,程序最后的運行結果為55.038515。

表格 表2-4
 
方法
char short 符號位擴展
char long 符號位擴展
char unsigned char 最高位失去符號位意義,變?yōu)閿?shù)據(jù)位
char unsigned short 符號位擴展到short;然后從short轉到 unsigned short
char unsigned long 符號位擴展到long; 然后從long 轉到unsigned long
char float 符號位擴展到long; 然后從long 轉到float
char double 符號位擴展到long; 然后從long 轉到double
char long double 符號位擴展到long; 然后從long 轉到long double
short char 保留低位字節(jié)
short long 符號位擴展
short unsigned char 保留低位字節(jié)
short unsigned short 最高位失去符號位意義,變?yōu)閿?shù)據(jù)位
short unsigned long 符號位擴展到long; 然后從long轉到unsigned double
short float 符號位擴展到long; 然后從long 轉到float
short double 符號位擴展到long; 然后從long 轉到double
short long double 符號位擴展到long; 然后從long 轉到double
long char 保留低位字節(jié)
long short 保留低位字節(jié)
long unsigned char 保留低位字節(jié)
long unsigned short 保留低位字節(jié)
long unsigned long 最高位失去符號位意義,變?yōu)閿?shù)據(jù)位
long Float 使用單精度浮點數(shù)表示??赡軄G失精度。
long double 使用雙精度浮點數(shù)表示。可能丟失精度。
long long double 使用雙精度浮點數(shù)表示??赡軄G失精度。

表格 表2-5
 
方法
unsigned char char 最高位作為符號位
unsigned char short 0擴展
unsigned char long 0擴展
unsigned char unsigned short 0擴展
unsigned char unsigned long 0擴展
unsigned char float 轉換到long; 再從 long 轉換到float
unsigned char double 轉換到long; 再從 long 轉換到double
unsigned char long double 轉換到long; 再從 long 轉換到double
unsigned short char 保留低位字節(jié)
unsigned short short 最高位作為符號位
unsigned short long 0擴展
unsigned short unsigned char 保留低位字節(jié)
unsigned short unsigned long 0擴展
unsigned short float 轉換到long; 再從 long 轉換到float
unsigned short double 轉換到long; 再從 long 轉換到double
unsigned short long double 轉換到long; 再從 long 轉換到double
unsigned long char 保留低位字節(jié)
unsigned long short 保留低位字節(jié)
unsigned long long 最高位作為符號位
unsigned long unsigned char 保留低位字節(jié)
unsigned long unsigned short 保留低位字節(jié)
unsigned long float 轉換到long; 再從 long 轉換到float
unsigned long double Convert directly to double
unsigned long long double 轉換到long; 再從 long 轉換到double


下面是一個使用變量的程序實例:
程序段 程序2-3:
  #include <iostream.h>
int main (void)
{
 1. int workDays = 5;
 2. float workHours, payRate, weeklyPay;
 3. workHours = 7.5; payRate = 38.55;
 4. weeklyPay = workDays * workHours * payRate;
 5. cout << "Weekly Pay = " << weeklyPay << '\n';
}
  第一行定義了一個整型變量workDays,并初始化為5,表示一周的工作天數(shù)。
  第二行定義了三個實型變量,分別表示每天工作的小時數(shù)、每小時應支付的薪水及每周應支付的薪水。
  第三行是兩個賦值語句。7.5 賦給變量workHours,38.55賦給變量payRate。
  第四行是計算每周的工資,即三個變量workDays、workHours、payRate的積,*是乘運算符,結果保存在變量weeklyPay變量中。
  第五行輸出字符串"Weekly Pay = "、變量weeklyPay 的值和換行符。
  本程序的運行結果如下:
    Weekly Pay = 1445.625
  如果我們定義一個變量時,沒有給它賦初值,它的值是不定的。例如,在上面的第四行執(zhí)行前,weeklyPay的值是不定的。
  變量第一次賦值稱之為初始化,變量在使用之前應當先初始化。


圖示 圖2-6 2字節(jié)如何表示字符型值
 
  C++語言把字符型變量當作一個較小的整型量,可以象整型量一樣使用它。下面舉一個例子說明:
程序段 程序2-6
  #include <iostream.h>
void main()
{
 char c1 = 'a';
 char c2 = 'b';
 char c3,c4;
 c3 = c1 - ('a' - 'A');
 c4 = c2 - ('a' - 'A');
 cout<<c3<<c4<<endl;
}

運行結果為:
 
A B
  程序中的'a' - 'A'是大小寫字母之間的差值,其值為32。所以我們也可以把程序寫成:
    c3 = c1 - 32;
    c4 = c2 - 32;
  如果我們想看一看c3、c4中到底存儲的值是多少,可以這樣:
    cout<<(int)c3<<(int)c4<<endl;
  其運行結果為:
    65 66
  注意:在內存中,字符數(shù)據(jù)以ASCII碼存儲,即以整數(shù)表示,'0'和0是不同的。
例題 例2-1:
  '\n' // 換行
'\r' // 回車
'\t' // 水平tab
'\v' // 垂直tab
'\b' // 退格
'\f' // 進紙
'\'' // 單引號 (')
'\"' // 雙引號 (")
'\\' // 反斜杠 (\)
例題 例2-2:
  '\12' //換行(10進制編碼 = 10)
'\11' // 水平tab (10進制編碼= 9)
'\101' // 'A' (10進制編碼= 65)
'\0' // null (10進制編碼= 0)



  下面給出一個有常量定義的實例程序,這個程序是打印給定半徑的圓的面積和周長。
例題 例2-6:
  void main()
{
 const double PI = 3.1415926535898; //定義圓周率常量PI
 double radius; //定義圓半徑變量
 double area; //定義圓面積變量
 double circumference; //定義圓周長變量
 cout << "Enter radius : ";
 cin >> radius;
 area = PI*radius*radius;
 circumference = 2.0*PI*radius;
 cout << "Area of circle of radius " << radius << " is "
 << area << " \n";
 cout << "and its circumference is " << circumference
 << " \n";
}

運行該程序,并輸入半徑值10.0:
 Enter radius : 10.0↙
則輸出結果為:
 Area of circle of radius 10.0 is 314.159
 and its circumference is 62.8319
  常量就是在程序運行過程中其值不發(fā)生變化的量。常量可分為直接常量與符號常量。直接常量就是平常我們所說的常數(shù),例如:
  `r` // r為字符型直接常量
  3.1415926 // 3.1415926為雙精度直接常量
  符號常量就是用一個標識符代表某個常量。符號常量可用關鍵字const聲明,其格式如下:
  const 數(shù)據(jù)類型 常量名=常數(shù)值;
  例如:
  const int a= 1234; //定義a為整型常量其值為1234
  const char b=`a` //定義b 為字符型常量其值為a
  在程序設計中,盡量使用符號常量來代替常數(shù),這是一種好的編程習慣,這樣可以增加程序的可讀性、可維護性。例如,在數(shù)值計算中,我們會經常遇到一些常量,比如圓周率。如果把它定義成符號常量,當需要更改常量值的時候,只需要更改符號常量的定義語句即可。
  也可以使用預處理語句定義符號常量,例如我們用:
  #define PI 3.14159
  定義符號常量PI,然后在程序中使用PI,跟使用常數(shù)3.14159的效果是一樣的。編譯器在編譯時,把符號PI替換成3.14159,當需要修改PI的值時,只需要修改上面的語句即可。但是我們不推薦這樣做:因為預定義符號與符號常量不同,在編譯時使用常數(shù)替代了所有的預定義符號,這樣在代碼中相應位置實際都是常數(shù)。程序中過多的常數(shù)會導致程序代碼量變大,而且在多個源文件中定義了同樣的符號,會產生符號重定義的問題。使用常量優(yōu)于#define宏,優(yōu)點在于可指定類型信息。
例題 例2-7:
 
const double PI = 3.1415927; //圓周率π
const long number = 49L;
const char TAB = '\t';
const char QUERY = '?';
const double SOMENUM = 1.235E75;
 
 
 

2.7.1 標準輸出
  輸出內置的數(shù)據(jù)類型到標準的輸出設備,用<<運算符和cout輸出流。例如:
  cout << d; // 輸出d
  cout << d << endl; // 輸出d并換行
  cout << "This is the value of d : " << d << endl; // 輸出字符串、d并換行
  一個語句中多次使用<<等價于<<單獨使用多次,即最后一個語句等價于:
  cout << "This is the value of d : " ;
  cout << d;
  cout << endl;
  符號endl的功能是換行,并清除輸出緩沖區(qū)。變量的值以缺省的格式打印,改變打印格式方法在后面介紹。



  經驗:如何記<<和>>:cout是c出,出了就?。?lt;<)了; cin是c進,進則收入,就大(>>)
  注意:
cin流不使用指針引用變量,不應給cin傳遞一個指向變量的指針,如果這樣做cin將返回錯誤。例如,下面的程序cin_err.cpp ,當編譯它時將返回六個錯誤:
例題 例2-8:
  #include <iostream.h>
void main(void)
{
 int age;
 float salary;
 char name[128];
 cout << "Enter your first name age salary: ";
 cin >> &name >> &age >> &salary;
 cout << name << " " << age << " " << salary;
}
例題 例2-9:
  cout << " Enter the value of n : " << endl;
cin >> n;
而不要寫成:
cout << " Enter the value of n : ";
cin >> n;
  C++使用操縱符(在<iomanip.h>和<iostream.h>中定義),而C提供了一系列的說明符,參見表2-10。這些說明符用于輸出,也可用于輸入。
表格 表2-10:
 
說明符 類型
%wd int 或char
w = 寬度
%w.df double w = 總的寬度(包括小數(shù)點) d = 小數(shù)位數(shù)
%wc char 或int w = 寬度
%ws char * (字符串) 格式 w = 寬度
%wu unsigned int w = 寬度
%wo 八進制
%wx 十六進制
%m.dddddde±xx %m.ddddddE±xx %m.ddddddg±xx %m.ddddddG±xx 指數(shù)記數(shù)法
  下面,我們給出一些格式實例,假定有下面的變量說明:
表格 表2-11:
 
變量說明
int x = 98;
float y = 1.34567889;
char letter = 'A';
char word[] = "Hello";
  下表給出了輸出這些變量的缺省的格式:
表格 表2-12:
 
語句 printf("Default formats: %d %f %c %s\n", x,y,letter,word);
結果 Default formats: 98 1.345679 A Hello
  我們也可以改變缺省的格式。需要注意的是:輸出結果是右對齊的,也就是說,當輸出結果的寬度小于指定的寬度時,空格填充到左邊:
表格 表2-13:
 
格式說明
語句 printf("Width specified: %5d %10.4f %5c %10s\n", x,y,letter,word);
結果 Width specified: 98 1.3457 A Hello
  我們也可以打印變量的內存地址信息,但要使用unsigned格式說明符:
表格 表2-14:
 
打印內存地址
語句 printf("Address of x: %u Address of y: %u\n", &x, &y);
結果 Address of x: 4026528400 Address of y: 4026528396






    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    极品少妇一区二区三区精品视频 | 亚洲精品国产美女久久久99| 老司机精品国产在线视频 | 国产又粗又猛又爽又黄的文字| 亚洲精品中文字幕在线视频| 97人妻精品免费一区二区| 国产欧洲亚洲日产一区二区| 99久久精品免费精品国产| 欧美日韩亚洲综合国产人| 国产精欧美一区二区三区久久| 欧美一级黄片免费视频| 日本道播放一区二区三区| 日韩欧美精品一区二区三区| 国产精品99一区二区三区| 在线播放欧美精品一区| 国产色偷丝袜麻豆亚洲| 成人免费高清在线一区二区| 蜜桃臀欧美日韩国产精品| 嫩草国产福利视频一区二区| 东京热男人的天堂社区| 中文字幕熟女人妻视频| 国产精品内射婷婷一级二级| 亚洲国产av国产av| 中文字幕一区二区熟女| 国产欧美一区二区久久| 国产精品午夜一区二区三区| 欧美日韩中国性生活视频| 亚洲美女国产精品久久| 国产精品欧美一区二区三区| 成人午夜免费观看视频| 国产精品流白浆无遮挡| 色涩一区二区三区四区| 视频在线免费观看你懂的| 午夜国产精品国自产拍av| 久久99夜色精品噜噜亚洲av | 亚洲天堂国产精品久久精品| 国产精品久久三级精品| 麻豆果冻传媒一二三区| 五月天丁香婷婷一区二区| 日韩一区二区三区在线日| 欧美国产日本高清在线|