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