c++_語句塊_cout和endl新的聲明方法_將字符串的內容反轉_逗號運算符_c風格類字符串的比較_string類字符串的比較_類型別名typedef和#define_do while 循環_c++

/* 語句塊 用花括號括起來的語句 */
#include <iostream>
int main()
{
        using namespace std;
  int x = 20;
  {
    int y = 100;
    cout << x << endl; //ok
    cout << y << endl; //ok
  } //以上就是一個語句塊,y變量定義在語句塊裏面,因此y只能在改語句塊中使用,在語句塊以外是不能使用的
  cout << x << endl; //ok
  //cout << y << endl; //invalid
  return 0;
}ios

/*新變量就會隱藏舊變量,另外注意cout和endl新的聲明方法*/
#include <iostream>
int main()
{
using std::cout; //cout新的聲明方法
using std::cin; //endl新的聲明方法
using std::endl; //endl新的聲明方法
char zero;
int x = 20;
{
cout << x << endl; //打印20
int x = 100;
cout << x << endl; //打印100
}
cout << x << endl; //打印20c++

cin >> zero;
return 0;
}express

/*將字符串的內容反轉*/
#include <iostream>
#include <string>
void main()
{
  using namespace std;
  cout << "輸入一個單詞: ";
  string word; //定義一個字符串變量word
  cin >> word;
  cout <<"輸入單詞的個數爲:"<< word.size() << endl;   //打印輸入的單詞的個數
  for (int i = 0, j = word.size() - 1; i < j; i++, j--)   //減1是由於數組的索引是從0開始的
  {
    char temp;
    temp = word[j]; //將輸入的單詞最後一個字母賦給temp
    word[j] = word[i]; //將輸入的單詞的第一個單詞賦到單詞最後一個位置上
    word[i] = temp; //將輸入的單詞最後一個字母賦到單詞第一個位置上
  }
  cout <<"反轉後的單詞形式爲:"<< word << endl;
  cout << "Done" << endl;
  cin >> word; //防止DOS閃退
}數組

/*逗號運算符*/
/*
01)經常使用於將兩個或者更多的表達式放到一個for循環表達式中
02)逗號運算符確保先計算第一個表達式,而後計算第二個表達式(換句話說,逗號運算符就是一個順序點)
如:i=20,j=2*i; 是安全的 先計算i=20再去計算j的值
03)逗號運算符的優先級是最低的
cata = 17,240; //cata=17 即"="的優先級比","的優先級高
cata = (17,240); //cata=240
*/安全

/* c風格類字符串的比較 */
/*
01)char word = "mate"; //數組名word只是數組的地址
word == "mate"; //用引號括起來的也是地址,因此兩個地址判斷是否相等,結果是確定不相等的
02)使用c風格字符串庫中的strcmp()函數來比較,改函數接受兩份字符串地址爲參數,這意味着參數能夠是指針、字符數組名或字符串常量
若是str1和str2相同,那麼表達式strcmp(str1,str2)==0爲true
若是str1和str2不相同,那麼表達式strcmp(str1,str2)!=0和strcmp(str1,str2)均爲true
若是兩個字符串不相同,則該函數返回1
若是str1在str2的前面,那麼strcmp(str1,str2)<0 返回1
若是str1在str2的後面,那麼strcmp(str1,str2)>0 返回1
*/函數

#include <iostream>
#include <cstring> //for strcmp()spa

int main()
{
  using namespace std;
  char zero;
  char word[] = "?ate"; //定義數組,剛剛忘了在word以後加中括號致使報錯
  for (char ch = 'a'; strcmp(word,"mate"); ch++) //若是word不和mate相等,那麼strcmp函數返回1,循環繼續進行
  {
    cout << word << endl;
    word[0] = ch; //將word數組中的第一個數用ch替換下來
  }
  cout << "最終匹配的字符串數組word是:" << word << endl;
  cin >> zero; //防止DOS閃退
  return 0;
}指針

/* string類字符串的比較 */
因爲string類函數重載(重定義)了這些運算符,所以string類字符串能夠使用
關係運算符進行比較
string類重載了運算符!=的方式讓咱們可以使用它
#include <iostream>
#include <string> //for string classc++11

int main()
{
  using namespace std;
  string word = "?ate"; //定義string類字符串
  for (char ch = 'a'; word != "mate"; ch++) //直接用關係運算符!=進行比較
  {
    cout << word << endl;
    word[0] = ch;
  }
  cout <<"最終匹配的字符串word是:"<< word << endl;
  cin >> word;
  return 0;
}blog

/* 類型別名typedef和#define */
/*
01)使用預處理器#define
如:#define BYTE char //使BYTE成爲char的別名,注意後面沒有分號
02)使用關鍵字typedef
  如:typedef char byte; //使byte成爲char的別名,注意後面有分號
         typedef char* byte_pointer; //讓byte_pointer成爲char指針的別名
03)在定義不少變量時,使用預處理器的方法不適用
  如:#define FLOAT_POINTER float* //讓FLOAT_POINTER成爲char指針的別名
         FLOAT_POINTER pa,pb; //有問題 至關於float* pa,pb;可是typedef不會出現這樣的問題
04)和#define相比,typedef是一種更好的選擇
05)typedef不會建立新類型,而只是在已有的類型建立一個新的名字
*/


/* do while 循環*/
/*
01)句法:
  do
    body
  while(test-expression); //注意這裏是有一個分號的
02)先執行循環體body,再去判斷test-expression是否成立,若成立,則再次執行循環體body;不然跳出循環
03)
*/
#include <iostream>
int main()
{
  using namespace std;
  char zero;
  int i; //不能定義在循環體內,不然在while的條件判斷中i是不可用的
  do
  {
    cout << "請輸入一個數字:" << endl;
    cin >> i;
  }

  while (i != 7);    //若是輸入的數字是7那麼退出循環,注意這裏是有一個分號的
  cout << "my favorate number is:" << i << endl;
  cin >> zero; //防止DOS閃退
  return 0;
}

/* c++11:基於範圍的for循環 */

#include <iostream>

void main()
{
  char zero;
  double prices[] = {4.99,10.99,6.87,7.99,8.79}; //建立一個double型數組,可是這樣建立的數組怎麼樣去算數組中數據的個數不太簡單
                      //sizeof()和strlen()用於字符串字符串
                      //可以使用vector和array等容器,使用size()函數獲得元素的個數
  std::cout << "數組佔的字節數數爲:" << sizeof(prices) << std::endl;
  for (double x : prices)
    std::cout <<"原始數據爲:"<< x << std::endl; //打印prices數組中的元素
  for (double &x : prices)
    x = x * 0.8; //改變數組中的值 每一個值都乘以0.8
  for (int i = 0; i < 5; i++)
    std::cout << "乘上0.8後的數組數據爲:" << prices[i] << std::endl;

  std::cin >> zero; //防止DOS閃退
}

/* 循環和文本輸入 */
//01原始的cin輸入
#include <iostream>
void main()
{
  using namespace std;
  int count = 0; //初始化初始計數值
  cout << "請輸入字符,以#號結束,並按回車發送給cin:";
  char ch,zero;
  cin >> ch; //能夠這樣輸入seek run# wwdd而後按下回車,此時會將s賦給ch剩餘的字符將會保存在輸入流中,等待着下次的cin
  while (ch != '#')
  {
    cout << "輸入的字符爲:" <<ch; //這裏不加換行符,那麼就能夠完整的打印出#號前的單詞,且無空格
    count++; //計算輸入的字符數 ++count也能夠
    cin >> ch; //cin在讀取全部類型的數據時,會自動忽略回車和空格****** 因此上面打印的時候不會顯示空格
  }
  cout << count << "chracters read" << endl;

  cin >> zero; //防止DOS閃退
}

/* 循環和文本輸入 */
02cin.get(char)函數輸入(這樣輸入不會忽略空格)
/*
注意:因爲c++支持被稱爲函數重載的OOP特性,因此cin.get()、cin.get(char)和cin.get(name,Arsize)是不同的函數
OOP特性(函數重載)容許建立多個同名函數,條件是他們的參數列表是不同的
如:使用cin.get(name,Arsize)函數,那麼編譯器就會找到使用char*和int做爲參數的cin.get()函數版本
使用cin.get(char)函數,那麼編譯器就會找到使用char做爲參數的cin.get()函數版本
使用cin.get()函數,那麼編譯器就會找到不使用參數的cin.get()函數版本
*/
#include <iostream>
void main()
{
  using namespace std;
  char ch,zero;
  int count = 0;
  cout << "請輸入字符,以#號結束,並按回車發送給cin:";
  cin.get(ch);
  while (ch != '#')
  {
    cout <<ch;   //這裏不加換行符,那麼就能夠完整的打印出#號前的單詞,且因爲是cin.get()方法輸入,因此有空格
    cin.get(ch);
    count++;
  }
  cout <<endl<< count << "chracters read" << endl; //這裏也會把空格算上
  cin >> zero; //防止閃退
}

 

/* 二維數組 */
//int maxtemps[4][5]=
//{
  // {96,100,87,85,65},
  // {100,85,96,87,98},
  // {97,101,91,95,94},
  // {87,89,98,56,98}
//}; //定義並初始化一個4行5列的二維數組,注意最後的分號勿忘
#include <iostream>
const int Cities = 5;
const int Years = 4;    //定義兩個不可修改的變量
int main()
{
  using namespace std;
  const char* cities[Cities] =     //定義指針數組,存儲5個字符串的地址,使用指針數組的方法和使用普通數組方法是同樣的
  {               //若是不用指針數組,那麼須要這樣定義:const char cities[25]={"..."} 這樣的意思是將每一個字符串的最大長度限制爲24個字符
    "Gribble City",     //每一個都須要佔用25個字符的位置,5個就是125個字符的空間,所以指針數組更節省空間一些
    "Gribbletown",     //固然使用 const string cities[Cities]={"..."}也是比較節省空間的
    "New Gribble",
    "San Gribble",
    "Gribble Vitle"
  };   //使用const的意思是數組內容不可修改
  int maxtemps[Years][Cities]=
  {
    {96,100,87,85,65},
    {100,85,96,87,98},
    {97,101,91,95,94},
    {87,89,98,56,98}
  };    //定義並初始化一個4行5列的二維數組,注意最後的分號勿忘、
  cout << "Maximum tempratures for 2008-2010\n\n";
  for(int city=0; city<Cities; city++)
  {
    cout << cities[city] << "\t";    //指針數組的使用方法和普通數組的使用方法是同樣的*****
    for (int year = 0; year < Years; year++)
    {
      cout << maxtemps[year][city] << "\t";    //\t表示水平製表 使數據比較整齊
    }
    cout << endl;
  }
  cin.get();    //防止DOS閃退
}

效果以下:

相關文章
相關標籤/搜索