數字統計
請統計某個給定範圍[l, r]的所有整數中,數字2 出現的次數。
比如給定範圍[2, 22] ,數字2 在數2 **現了1 次,在數12 **現1 次,在數20 **現1 次,在數21 **現1 次,在數22 **現2 次,所以數字2 在該範圍內一共出現了6 次。
【演算法分析1】
列舉[l,r]區間的所有整數,對於每個整數x:
先判斷x的最後一位是否為2(即 x%10==2),然後將x的最後一位刪除(即 x/=10),迴圈操作,直到x值為0。
【參考程式1】
#include #include #include using namespace std;
int main()
}cout《演算法一大概是正常的想法,但是也可以把輸入的每個數字先看做字元形式,直接查詢字元為「2」的字元進行計數輸出:
【演算法分析2】
列舉[l,r]區間的所有整數,對於每個整數x:
1.將整數x轉化成字串s,可以用sprintf(s,"%d",x)來實現;
2.列舉字串s的每個字元判斷是否為2。
#include #include #include using namespace std;
char s[10];
int main()
cout《當然我們需要輸出該「字元」時,就要用到整數與字元之間的相互轉換:
我們可以通過下面的題目來進行了解:
數字反**
給定乙個整數,請將該數各個位上數字反轉得到乙個新數。新數也應滿足整數的常見形式,即除非給定的原數為零,否則反轉後得到的新數的最高位數字不應為零
【演算法分析1】
1.將整數n轉化成字串s,可以用sprintf(s,"%d",n)來實現;
2.對字串進行反轉操作;
3.將字串s轉換成數字n,可以用sscanf(s,"%d",&n)來實現。
4.輸出數字n。
#include #include #include using namespace std;
char s[100],c[100];
int main()
{ int n,l;
cin>>n;
sprintf(s,"%d",n);
l=strlen(s);
for (int i=0; i<=l-1; ++i) c[l-i-1]=s[i];
if (n<0) cout<<"-";
sscanf(c,"%d",&n);
cout<字串處理函式:
系統提供了一些字串處理函式,用來為使用者提供一些字串的運算。常用的字串函式補充介紹如下:
strcat(字串名1,字串名2) 將字串2連線到字串1後邊,返回字串1的值。
strncat(字串名1,字串名2,長度n) 將字串2前n個字元連線到字串1後邊,返回字串1的值。
strcpy(字串名1,字串名2) 將字串2複製到字串1後邊,返回字串1的值。
strncpy(字串名1,字串名2,長度n) 將字串2前n個字元複製到字串1後邊,返回字串1的值。
strcmp(字串名1,字串名2) 比較字串1和字串2的大小,比較的結果由函式帶回;
如果字串1>字串2,返回乙個正整數;
如果字串1=字串2,返回0;
如果字串1《字串2,返回乙個負整數;
strncmp(字串名1,字串名2,長度n) 比較字串1和字串2的前n個字元進行比較,函式返回值的情況同strcmp函式;
strlen(字串名) 計算字串的長度,終止符』\0』不算在長度之內
strlwr(字串名) 將字串中大寫字母換成小寫字母
strupr(字串名) 將字串中小寫字母換成大寫字母
整數轉化為字串和字串轉化為整數
整數轉化為字串 includeint main temp i 0 為什麼等於0就可以,因為將temp定義為字串陣列後,等號右邊的數相當於ascii碼值,0就相當於 0 如果寫為61,輸出就為 12345 printf s temp i i 1 while i 0 str j temp i str j...
sql實現IP的整數與字串轉化
資料庫操作 利用函式減少儲存空間 以時間換取空間 例如乙個表有 ip列,在儲存的時候我們為了減少儲存空間,可以將它轉化為整數,儲存在資料庫,但是在從資料庫裡查詢並顯示給大家看的時候,可能你是看不明白整數具體是什麼。這樣為了利於大家閱讀分析資料,可以在查詢的時候利用函式將整數 ip轉為為字串 例如 關...
Python bytes與字串轉化
bytes轉字串方式一 b b xe9 x80 x86 xe7 x81 xab string str b,utf 8 print string bytes轉字串方式二 b b xe9 x80 x86 xe7 x81 xab string b.decode 第一引數預設utf8,第二引數預設stric...