C語言博客作業--函數嵌套調用


一、實驗作業

1.1 PTA題目:遞歸實現順序輸出整數

(1)設計思路

void printdigits( int n )
{
    if n/10不等於0
        改變傳參為n/10,再次進入函數printdigits(n/10)
    輸出n%10;
}

(2)代碼截圖

(3)調試問題

本題未遇到問題,在如何輸出轉化的二進制數上需要思考。

1.2 學生成績管理系統

1.2.1 畫函數模塊圖,簡要介紹函數功能。

1.2.2 截圖展示你的工程文件

1.2.3 函數代碼部分截圖

本系統代碼總行數:248

頭文件定義

刪除學生信息

ps:圖中輸出j是做調試用的,忘記刪除。

修改學生信息

排序輸出成績


1.2.4 調試結果展示

(1)進行操作1,先錄入兩名同學的信息

(2)按學號從小到大排序

(3)進行操作2,修改第一位同學的英語成績

(4)進行操作3,刪除第一位同學的信息

(5)進行操作5,按不同排序輸出成績

1.2.5 調試碰到問題及解決辦法

沒有什么大問題,但是因為趕時間所以一些細節沒有寫出來,以后會慢慢補上,完善這個程序。

二、截圖本周題目集的PTA最后排名。

三、閱讀代碼

數學中的全排列問題

#include <stdio.h>
#include <stdlib.h>
void swap(int *a,int *b);
void Perm(int a[],int i,int n);

int main()
{
    int a[3]={1,1,3};
    Perm(a,0,2);
    return 0;
}
void swap(int *a,int *b)
{
    int c=*a;
    *a=*b;
    *b=c;
}
int ok(int a[],int k,int i)

{
int t;
if(i>k)
        for (t=k;t<i;t++)
    if(a[t]==a[i])
    return 0;

return 1;
}

void Perm(int a[],int i,int n)
{
    int j;
    if(i==n)
    {for(j=0;j<=n;j++)

        printf("%d",a[j]);
        printf("  ");
    }
    else
        for(j=i;j<=n;j++)
        if(ok(a,i,j))
        {
    swap(&a[i],&a[j]);
    Perm(a,i+1,n);
    swap(&a[i],&a[j]);
    }

}

遞歸不一定只是單個函數,多個函數之間進行互相調用也可以稱為遞歸。

四、本周學習總結

1.介紹本周學習內容

1.1指針數組

這個在之前的博客寫過總結,但只是粗略了解,現在真正地進行學習運用。

  • 1.1.1 指針數組中每個元素都是指針
  • 1.1.2
int a[10];
char *color[5];

在上面的指針數組color中,color[i]存放的是字符串的首地址。

1.2二級指針

  • 1.2.1 二級指針即指向指針的指針,一般定義為:
類型名 **變量名;
  • 1.2.2 理解二級指針
int a=10; int *p=&a; int **pp=&p;

等價關系:
(1)a,*p,**p
(2)&a,p,*pp
(3)&&a,&p,pp
  • 1.2.3 二維數組的指針形式

1.3宏定義

  • 1.3.1 定義宏的格式: #define 宏名 宏定義字符串
  • 1.3.2 宏在編譯預處理中起作用,不是真的C語句,行尾無需分號。
  • 1.3.3 宏名中間不能有空格。

1.4動態分配

通過函數malloc()可以動態分配相應大小的內存單元,采用動態分配內存的方法處理多個字符串,能夠根據實際輸入數據的多少來申請和分配內存空間,從而提高了內存的使用率。

2.學習體會

這周學着寫大程序,與之前不同的框架所以要注意不少新的東西,比如自定義的頭文件里要包含結構體,自定義函數的定義語句,因為函數分散在不同地方,所以有時候函數的參數會弄錯,全局變量在這里也得到更多的使用,當然比起寫大程序,我還是覺得遞歸函數更難,是真的難!有時候根本無從下手!!!

在做課設前先這樣做了管理系統到時候就沒那么生疏了,當然還需要多加練習,把程序變得更加完善。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM