一、實驗作業
1.1 6-4 十進制轉換二進制
- 設計思路
如果n=1或n=0 輸出n
否則{
把n/2作為參數傳入函數
最后遞歸回去輸出n%2的值
}
- 代碼截圖
- 調試問題
一開始我只把0當成特殊數,然后發現如果最后的n/2是1的話遞歸回去還會出現一個0
所以我把1和0都當成臨界值發現一個1變成0了,要把輸出部分改成輸出n的值
1.2 學生成績管理系統
1.2.1 畫函數模塊圖,簡要介紹函數功能
1.2.2 截圖展示你的工程文件
1.2.3 函數代碼部分截圖
- 本系統代碼總行數:256
- 1.2.4 調試結果展示
新增人數過多,重新輸入
二、截圖本周題目集的PTA最后排名
三、閱讀代碼
/* 遞歸實現順序輸出整數*/
#include <stdio.h>
void printdigits( int n );
int main()
{
int n;
scanf("%d", &n);
printdigits(n);
return 0;
}
void printdigits( int n ){
if(n>=0&&n<=9) printf("%d\n",n); // 最后一位直接輸出
else{
printdigits(n/10); // 和十進制轉二進制類似,先讓n/10作為參數調用函數
printf("%d\n",n%10); //最后遞歸回來剛剛好是順序排列
}
}
- 該代碼實現了順序輸出整數,一開始我想的是類似以前做個的順序輸出整數,讓先求余再除以10,然后發現只能逆序輸出,而該代碼讓n/2作為參數一直調用直到n在0~9之間,由於遞歸的機制讓原本逆序變成順序輸出
- 而且代碼量少,言簡意駭
四、本周學習總結
本周主要是學習大程序結構
- 其目的是為了防止代碼太長從而把它分成多個函數
- 1個.c文件就是一個編譯單元,編譯器每次編譯只處理一個編譯單元
- 所以要建項目,把多個源代碼加進去,編譯器就會把所有源代碼文件都編譯后鏈接起來
- 把函數原型放在一個頭文件(.h結尾)中在需要調用這個函數的源代碼文件中,就能夠讓編譯器編譯時直到函數原型
- <>時讓編譯器到指定目錄下去找文件,而“”要求編譯器首先在當前目錄尋找文件,如果沒有,到指定目錄下去找文件