如何判斷123是字符123幾個數字字符組成的字串?
uj5u.com熱心網友回復:
描述要完整點uj5u.com熱心網友回復:
if 變數==49uj5u.com熱心網友回復:
做個陣列, digit[10] ={0}對字串str的每個字符做一個回圈,if (0<=str[i] && str[i]<=9 ) digit[str[i]-'0']]++;
也就是說, 如果字串里面有字符'3',那么digit[3] ++;
回圈一遍字串中斷所有字母之后就有了結果
就123例子來說, digit[1],[2],[3] 的值不是0, 所以字符是1,2,3組成的
uj5u.com熱心網友回復:
我之前描述得不清楚。我是想問如果我輸入數字123456789在計算機二進制里是把它當一個數字還是分割成幾個部分。像字串“12345”是怎么用二進制存盤的
uj5u.com熱心網友回復:
那要看你怎么接收這個數字的了scanf("%d", &n); 那么就是二進制的整數
如果是scanf,指定%s, 那么放進來的就是一個字串了
所有的資料,在數字計算機里面都是二進制表示的, 如果說分成幾個部分,那就是根據資料的型別占多少個位元組了
如果char 就一個位元組, 輸入辣么大的數字, 只能取模了
如果int 就是4位元組,最大可以容納10位,放你這個123456789還是沒有問題點
如果是float,也是4位元組, 但是有效數字只有6~7位, 保留的結果是1.23456或者1.23457*10^9
如果是double或者long double,有效數字更長一些, 但是也未必能精確的表達
如果是字串,占據的就是10個位元組, 1~9各自一個位元組,還有一個位元組做字串結束符'\0'
uj5u.com熱心網友回復:
那如果是作為字串“12345678987654321”怎么存盤?一個一個數字存盤還是?"123"呢
uj5u.com熱心網友回復:
stdin緩沖區
按照字符格式 一個一個存盤
注意是字符 不是 字串
沒有0結尾的
uj5u.com熱心網友回復:
如果是按字串輸入,那就按字符存盤比如第一個位元組存‘1’,對應ascii49,就是存49的二進制,第二個字符存‘2’,對應ascii50,就是存50的二進制,...,依次類推
uj5u.com熱心網友回復:
char buffer[100];scanf("%s",buffer);
字串接收到buffer當中,buffer是char陣列, 所以這一串數字就是以ascii模式,一個字符一個位元組保存在這個陣列里面了
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/119980.html
標籤:新手樂園
