一、實驗作業
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 宏名中間不能有空格。