C primer plus 第六版 第十一章 第十五題 程式設計練習答案
Github地址: φ(>ω<*)這裡這裡。
/*
本次任務使用字元分類函式來實現atoi()函式。
如果輸入的字串不是純數字,該函式返回0。
*/
/*
思路:麻煩在開始前別這麼想 —— 函式中迴圈體裡面直接用if isalpha isdigit判斷是否為數字或字母
然後把數字賦值給一個變數。。。。。我想說。。。你對著數字仔細想想吧。。
好吧迴歸正題,我打算建立一個char 的字元陣列。 可能看到這裡你們就知道了。
char inte[o] = { '1' , '2', '3' …… } 看到這個就懂了吧。
賦值操作很簡單, for迴圈, i = 0, i小於當前元素的下標, i++
變數2 *= 10, 這樣第一個元素是個位,根本不會進入迴圈體。
第二個元素是10位,剛好迴圈只會執行一次。 其他以此類推。
然後把變數2的值(當前)+上變數1(上一位數)的值,就完成了賦值操作。
更具體請前往 Line 65 檢視函式的實現。
*/
/*
本次任務使用字元分類函式來實現atoi()函式。
如果輸入的字串不是純數字,該函式返回0。
*/
/*
思路:麻煩在開始前別這麼想 —— 函式中迴圈體裡面直接用if isalpha isdigit判斷是否為數字或字母
然後把數字賦值給一個變數。。。。。我想說。。。你對著數字仔細想想吧。。
好吧迴歸正題,我打算建立一個char 的字元陣列。 可能看到這裡你們就知道了。
char inte[o] = { '1' , '2', '3' …… } 看到這個就懂了吧。
賦值操作很簡單, for迴圈, i = 0, i小於當前元素的下標, i++
變數2 *= 10, 這樣第一個元素是個位,根本不會進入迴圈體。
第二個元素是10位,剛好迴圈只會執行一次。 其他以此類推。
然後把變數2的值(當前)+上變數1(上一位數)的值,就完成了賦值操作。
更具體請前往 Line 65 檢視函式的實現。
*/
#include<stdio.h>
#include<ctype.h>
#define o 100
int my_atoi(char *s);
int main(void)
{
char integer[o] = {};
int num = 0;
printf("Please input a integer string(return 0 for letter):\n");
scanf("%s",integer);
num = my_atoi(integer);
printf("\nThe integer is %d. \n", num);
printf("Bye ~!\n");
getchar();
getchar();
return 0;
}
int my_atoi(char *s)
{
int i = 0;
int ret = 0;
int temp = 0;
int limit = 0;
char integer[o] = {};
// 這裡先把原陣列裡面的數字給擷取出來,然後賦值給新的陣列,成為字元陣列。
while( *s != '\0' )
{
if( isalpha(*s) )
{
ret = 0;
return ret;
}
else if( isdigit(*s) )
{
integer[i] = *s;
i++;
limit++;
s++;
}
}
// 因為迭代後才判斷,所以多了一位。
limit--;
// 接著進行賦值操作,思路在檔案頭有闡述過,不懂的看下面的實現,我的表達能力可能有待提升。。
for(i = 0; i <= limit; i++)
{
// 這裡先把當前的數字取出來,舉例: '1','2','4','6' 如果要變成整數就是 1246
// 1*1000 = 1*10*10*10 , 1000 + 246
// 2*100 = 2*10*10 , 1200 + 46
// 4*10 , 1240 + 6
// 6 1246
// 如果這樣子還看不懂我的思路,我也沒辦法了。
// 另外,-48 是因為,當int(integer[i]) 這樣時,是把 作為字元的'1'從char轉換為int,
// 但是,是數字對應的ASCII碼!! 1為49,2為50,9為57, 0 為 58。。
temp = int(integer[i]) - 48;
for(int j = i; j < limit; j++)
{
temp *= 10;
}
ret += temp;
}
return ret;
}
/*
————瀾氏專屬:轉載請註明來源,Github與CSDN的網址。
*/
相關文章
- C primer plus 第六版 第十一章 第十題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第十四題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第十二題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第十三題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第十一題題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第一題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第二題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第三題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第四題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第五題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第六題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第七題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第八題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第九題 程式設計練習答案程式設計
- C primer plus 第六版 第六章 第十五題 程式設計練習答案程式設計
- C primer plus 第六版 第十章 第十題 程式設計練習答案程式設計
- C primer plus 第六版 第十章 第十一題 程式設計練習答案程式設計
- C primer plus 第六版 第十章 第十二題 程式設計練習答案程式設計
- C primer plus 第六版 第十章 第十三題 程式設計練習答案程式設計
- C primer plus 第六版 第十章 第十四題 程式設計練習答案程式設計
- C primer plus 第六版 第六章 第十題 程式設計練習答案程式設計
- C primer plus 第六版 第十章 第二題 程式設計練習答案程式設計
- C primer plus 第六版 第十章 第一題 程式設計練習答案程式設計
- C primer plus 第六版 第十章 第三題 程式設計練習答案程式設計
- C primer plus 第六版 第十章 第四題 程式設計練習答案程式設計
- C primer plus 第六版 第十章 第五題 程式設計練習答案程式設計
- C primer plus 第六版 第十章 第六題 程式設計練習答案程式設計
- C primer plus 第六版 第十章 第七題 程式設計練習答案程式設計
- C primer plus 第六版 第十章 第八題 程式設計練習答案程式設計
- C primer plus 第六版 第十章 第九題 程式設計練習答案程式設計
- C primer plus 第六版 第九章 第十題 程式設計練習答案程式設計
- C primer plus 第六版 第六章 第十一題 程式設計練習答案程式設計
- C primer plus 第六版 第六章 第十二題 程式設計練習答案程式設計
- C primer plus 第六版 第六章 第十三題 程式設計練習答案程式設計
- C primer plus 第六版 第六章 第十四題 程式設計練習答案程式設計
- C primer plus 第六版 第六章 第十六題 程式設計練習答案程式設計
- C primer plus 第六版 第六章 第十七題 程式設計練習答案程式設計
- C primer plus 第六版 第六章 第十八題 程式設計練習答案程式設計