劍指offer:把一個支付算轉化為整數
阿新 • • 發佈:2017-09-05
技術 字符串數組 單引號 blog spa opened int num clas
1:首先,根據課本上的程序,是這樣的:
#include "stdafx.h" #include "iostream" using namespace std; int StrToInt(char* string); int StrToInt(char* string) { int number=0; while(*string!=0) { number=number*10+*string-‘0‘; ++string; } return number; } int main(int argc, char* argv[]) {View Codechar *a="123";//定義一個字符串 //while(*a!=0)//測試是不是字符串 //{ //cout<<*a<<endl; //++a; //} cout<<StrToInt(a)<<endl; return 0; }
2:然後對弈number=number*10+*string-‘0‘;提出疑問。number是整數,string是指向字符串的指針,*string就是字符串裏的字符,然後“字符-字符=?”。註意:C中的字符的算術運算。實際上是字符的ASCII代碼運算。因此,*string-‘0‘是其相應的ASCII代碼做減法。
3:將代碼改成鍵盤輸入,屏幕輸出的形式後,如下所示:
#include "stdafx.h" #include "iostream" using namespace std; int StrToInt(char* string); int StrToInt(char* string) { int number=0; while(*string!=0) { number=number*10+*string-‘0‘; ++string; } return number; } int main(int argc, char* argv[]) {View Code//char a=‘y‘;//單引號代表這個東西是字符,雙引號代表這個東西是字符串 //char *b=&a; //cout<<a<<endl;//輸出字符y //cout<<b<<endl;//輸出字符y的地址 char str1[20];//字符串數組的名就是字符串的第一個字符的地址 cin>>str1; //cout<<str1<<endl;//以字符串的形式輸出 cout<<StrToInt(str1)<<endl; return 0; }
4:考慮到非數字字符和正負號的時候,並將代碼改成輸入一段字符串,然後輸出整數。如下所示:
劍指offer:把一個支付算轉化為整數