第6周编程总结
| 這個作業要求在哪里 | https://edu.cnblogs.com/campus/zswxy/software-engineering-class2-2018/homework/2888 |
| 我在這個課程的目標是 | 指針怎么使用更加方便,解決指針的簡單問題 |
| 這個作業在哪個具體方面幫助我實現目標 | 使用指針解決問題,了解它的使用方法 |
| 參考文獻 | C語言程序設計 |
結對隊友:
劉超君
結對感想:
我們倆個基本是菜雞互啄,把第一題寫了就沒了下一題,然后就把后面題目的思路討論了一下,還瀏覽一些別人的博客.
6-1 求兩數平方根之和 (10 分)
函數fun的功能是:求兩數平方根之和,作為函數值返回。例如:輸入 12 和 20,輸出結果是:y = 7.936238。
函數接口定義:
double fun (double *a, double *b);
其中 a和 b是用戶傳入的參數。函數求 a指針和b 指針所指的兩個數的平方根之和,并返回和。
裁判測試程序樣例:
實驗思路
按照題目要求把double函數把指針來用到數學函數sqrt()中相加,然后返回n的值
流程圖
本題遇到的問題
基本沒什么
解決方法
無
正確截圖
7-1 利用指針返回多個函數值 (30 分)
讀入n個整數,調用 max_min()函數求這n個數中的最大值和最小值。
輸入格式:
輸入有兩行:第一行是n值; 第二行是n個數。
輸出格式:
輸出最大值和最小值。
輸入樣例:
在這里給出一組輸入。例如:
輸出樣例:
在這里給出相應的輸出。例如:
實驗代碼
#include<stdio.h> void max_min(int n,int *a); int main(){int n,i;scanf("%d",&n);int a[n];for(i = 0;i < n;i++){scanf("%d",(a+i));} max_min(n,a);return 0;}void max_min(int n,int *a){int t;for(int i=0;i<n-1;i++){for(int j=0;j<n-i-1;j++){if(*(a+j)<*(a+j+1)){t=*(a+j+1);*(a+j+1)=*(a+j);*(a+j)=t; }}}printf("max = %d\n", *(a));printf("min = %d\n", *(a + n - 1));}實驗思路
輸入一個數組a[n],在自定義函數中定義一個變量來中轉,找出最大值和最小值
流程圖
本題遇到的問題
自定義函數老是出現錯誤,一開始沒有理解 scanf("%d",(a+i)),后面又去百度,這里是地址a+i,不需要&,
解決方法
去百度看了很多代碼,還去問了同學
正確截圖
錯誤截圖
6-3 最小數放前最大數放后 (10 分)
為一維數組輸入10個整數;將其中最小的數與第一個數對換,將最大的數與最后一個數對換;輸出數組元素。。
函數接口定義:
三個函數中的arr和 n都是用戶傳入的參數。 n 是元素個數。
input函數的功能是輸入 n個元素存到指針arr所指向的一維數組中。
max_min函數的功能是求指針arr所指向的一維數組中的最大值和最小值,其中最小的數與第一個數對換,將最大的數與最后一個數對換。
output函數的功能是在一行中輸出數組元素,每個元素輸出占3列。
裁判測試程序樣例:
輸入樣例:
5 1 4 8 2 3 9 5 12 7輸出樣例:
1 5 4 8 2 3 9 5 7 12實驗代碼
void input(int *arr,int n) {for(int i=0;i<n;i++)scanf("%d",&arr[i]);} void max_min(int *arr,int n) {int max,min,t;max=min=arr[0];for(int i=0;i<n;i++){if(max<arr[i])max=i;if(min>arr[i])min=i;}t=arr[max];arr[max]=arr[n-1];arr[n-1]=t;t=arr[0];arr[0]=arr[min];arr[min]=t; } void output(int *arr,int n) {for(int i=0;i<n;i++){printf("%3d",arr[i]);} }實驗思路
定義三個函數,一個輸入一個數組arr[i],一個在自定義函數中找出最大最小值,把最大值賦給arr[9],最小值給arr[0],最后一個函數按照題目要求輸出
流程圖
本題遇到的問題
思路清晰,動手敲代碼的時候真的不知道怎么開始,
解決方法
詢問室友,仔細看了題目,然后慢慢嘗試
正確截圖
錯誤截圖
學習總結
學習感悟
有些題目要多去看題目要求,用相似的題目來理解思路
學習要多積累挫折,多看書,看例題,讓頭腦清醒
思考題
為什么要使用指針?它有什么用?
因為我們要學啊,要作業啊,指針是指向一個特定內存地址的一個變量,它存儲一個內存地址,在數組某些方面更加簡單,效率更高.
指針變量在內存中暫用多大的空間?它的大小由什么決定?
32位編譯器時指針占4個字節.64位編譯器時指針占8個字節,由編譯器的版本決定
轉載于:https://www.cnblogs.com/I-FEAR-ONLY-TIME/p/10659268.html
總結
- 上一篇: php://input和php://ou
- 下一篇: mac 设置mysql开机自启动