tft每日頭條

 > 科技

 > c語言基礎代碼詳細講解

c語言基礎代碼詳細講解

科技 更新时间:2025-04-30 14:38:03

今天的這道題目呢,跟我們之前講過的PAT乙級當中的一道“寫出這個數”有點類似。

都是要求輸入一個整數,打印出相應整數所對應的拼音,無非今天這道題目呢相對來說稍微簡單一些,而之前那道還要求和,再打印對應的拼音。

我們先來看看題目要求,當整數為負數時,先打印輸出fu字,整數包含負數、零和正數。

在一行中輸出這個整數對應的拼音,每個數字之間的拼音用空格分開,行末沒有最後的空格。

c語言基礎代碼詳細講解(用C語言實現念數字)1

梳理邏輯

1、輸入一個整數,毫無疑問是可以用到一個scanf函數的。

2、整數所對應的拼音,我們需要用到一個數組來存儲這些拼音。

3、當整數為負數時,我們需要對輸入的整數進行一個條件語句判斷,如果小于零,那麼就進行一個單獨讨論。

4、每個數字之間的拼音用空格分開,行末沒有最後的空格,我們可以用到一個計數法,也可以用到一個條件語句判斷,到個位數的時候就不打印空格。

5、這道題既可以用遞歸的方式,也可以直接來求。

代碼實現

我用的第一種方法,是遞歸函數。

//念數字 #include <stdio.h> #include <string.h> void recursive(int q){//不需要返回值,我就直接這麼寫 char *pingyin[10] = {"ling","yi","er","san","si","wu","liu","qi","ba","jiu"}; if(q>9){//如果q有十位數的話,那就除以10取整,如果q隻是個位數的話,那就直接摘出來 recursive(q/10);//直接取整 printf(" "); //遞歸主要目的就是把值給寫出來就行了 } printf("%s",pingyin[q]); } int main() { int n; scanf("%d", &n); if(n<0){ printf("fu "); recursive(-n); } else{ recursive(n); } }

我用的第二種方法,用數組來存儲輸入整數的各個數字,然後對應拼音。

//念數字 #include <stdio.h> #include <string.h> int main() { int n; char *pingyin[10] = {"ling","yi","er","san","si","wu","liu","qi","ba","jiu"}; int store[10]; int i=0; int count = 0;//計數法來給定空格 scanf("%d", &n); if(n==0){//當輸入整數等于0的時候,要進行單獨讨論 printf("ling"); } while(n!=0){ if(n>0){ store[i] = n; n = n/10; i ; } else{ store[i] = -n; n = -n/10; i ; printf("fu "); } } while(i>0){ i--; if(count>0){ printf(" "); } printf("%s",pingyin[store[i]]); count ; } }

結果測試

c語言基礎代碼詳細講解(用C語言實現念數字)2

c語言基礎代碼詳細講解(用C語言實現念數字)3

總結

總的來說,因為有了之前那道題目的經驗,這道題目完成就非常快了,不過還是得注意數組的用法,以及遞歸函數的邏輯,在使用遞歸函數的時候,我也經常會出現問題,得仔細仔細再仔細才行。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved