2012.6.27

1.字符串有兩種聲明方式,一是字符串指針方式(也叫字符串數組方式)
二是,利用string類。


2.頭文件<cctype>中,包含很多單個字符的檢測函數,


3.利用指針聲明一個字符串時候,如char *p = “abcd";
*p = a;


4.常量指針(只指向一個數據,不會再變了)
聲明方式爲 char *const pcity = "abcd",
變量指針(可以再指向其他的值)
:普通聲明方式 、char *p = "abcd";


5.常量指針,指向常量數據的指針,分別聲明方法:
常量指針(只能指向一個地址):char *const pch = &ch;
指向常量數據的指針:const char *p = &ch;


指向常量數據的常量指針:const char *const pch = &ch;

1.!號是邏輯運算符(not關係運算符)

2.!=是關係運算符(用於比較)

3.邏輯運算符計算注意事項:

a.如a+b||c+d,先計算邏輯運算符的左邊邏輯分量。

b.邏輯符有優化計算原則,即如果左邊邏輯分量是1(||的情況下),0(&&的情況下),

則不進行右邊邏輯分量的計算了。

 

4.關係運算符,邏輯運算符的結果是1或0,不是true或者false

5.運算符優先順序:算數運算符 ,移位運算符,關係運算符,按位運算符,邏輯運算符,

條件運算符,賦值運算符,逗號運算符

 

6.移位運算<<,是向左移(not右移),移動的方向是箭頭的指向。移位運算,左移補零,

右移補符號位

 

7.賦值運算符:先計算賦值運算符的右邊,即等號的右邊

 

8.計算機總是儘量將多個運算符組合在一起,即a+++b+++c++,意思是(a++)+(b++)+(c+

+)

 

9.char型佔用一個字節,默認聲明的char是signed型(和默認聲明的int型一樣)

 

10.多個不同類型的數據在一起運算時候,會發生類型自動轉換,類型自動轉換的規則是:

類型總是由簡單(低)類型(ˇˍˇ)向複雜類型(高類型)轉換。

類型:有高到低是:long double,double,float,int,char,

 

11.計算機存儲字符,通常是存儲字符的某種代碼值

 

12.賦值運算符的結合性自右至左.

 

13.賦值運算符,的左邊分量必須是一個變量,不能是算數表達式。如:

 A.a=7+b+C=a+7

  B. C=7+b++=a+7

都是錯誤的,因爲賦值運算符左邊是算數表達式了。

 

14.若有以下定義: char a;int b;float c; double d;則表達式a*b+d-c值的類型

爲:double

過程:。首先計算 a*b,得到int類型的值,接着計算a*b+d,得到double類型的值,最後

計算a*b+d-c,得到double類型的值。

string a;
getline(cin,a);
對string求長度只能用.size()//不能用strlen().
訪問字符串中的字符,可以直接用a[]
如下面程序:計算字符串中字符的出現個數

cout<<"輸入字符串"<<endl;
string ch ;
getline(cin,ch);
cout<<"輸入你查找的字符"<<endl;
char key;
cin>>key;
int num = 0;
for (int i =0;i<=ch.size();i++)
{
if (key == ch[i])
{
num++;
}
}


1. 字符串長度
   len = str.length();
   len = str.size();


2. 字符串比較
   可以直接比較
   也可以:
   str1.compare(str2); 
   str1.compare(pos1,len1,str2,pos2,len2); 值爲負,0 ,正。
   nops 長度到完。


3. 附加
   str1 += str2;
   或
   str1.append(str2);
   str1.append(str2.pos2,len2);
   
4. 字符串提取
   str2 = str1.substr();
   str2 = str1.substr(pos1);
   str2 = str1.substr(pos1,len1);
   string a=s.substr(0,4);       //獲得字符串s中 從第0位開始的長度爲4的字符串




5. 字符串搜索
   where = str1.find(str2);
   where = str1.find(str2,pos1); pos1是從str1的第幾位開始。
   where = str1.rfind(str2); 從後往前搜。


6. 插入字符串
   不是賦值語句。
   str1.insert(pos1,str2);
   str1.insert(pos1,str2,pos2,len2);
   str1.insert(pos1,numchar,char);    numchar是插入次數,char是要插入的字符。


7. 替換字符串
   str1.replace(pos1,str2);
   str1.replace(pos1,str2,pos2,len2);


8. 刪除字符串
   str.erase(pos,len)
   str.clear();


9. 交換字符串
   swap(str1,str2);

打印不同的數,即一個數如果出現多次,只打印一次

#include <iostream>

using namespace std;


int main()
{
  int numbers[10];
  int size = 0;


  for (int i = 0; i < 10; i++) {
    // Read and store numbers in an array if it is new
    cout << "Enter an integer: ";
    int value;
    cin >> value;


    bool isInArray = false; //引入了一個可以改變的布爾變量,用於判斷第一個數自動輸入數組裏面


    for (int j = 0; j < size; j++)
      if (*(numbers + j) == value) {
        isInArray = true;
        break;
      }
 


    if (!isInArray) {
      *(numbers + size) = value;
      size++;
    }
  }


  for (int i = 0; i < size; i++)
    cout << *(numbers + i) << " ";


  return 0;

}


對比下面

void main()
{
int num[10];
cout<<"輸入10個數字"<<endl;
cin>>num[0];
int a = 0, n = 1;
for (int i = 1;i<10;i++)
{
cout<<"輸入10個數字"<<endl;
cin>>a;
int j;
for ( j = 0;j<n;j++)
{
if (num[j]==a)
{
break;
}
}

if (num[j]==a)//
{
continue;//原來的break就這裏出現問題了,可是我不知道怎麼改,麻煩大家幫忙想一想
}
else
{
num[n]=a;
n++;
}
}
for (int k = 0;k<n;k++)
{
cout<<num[k]<<endl;
}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章