第六周编程总结
| 這個作業屬于哪個課程 | C語言程序設計II |
|---|---|
| 這個作業要求在哪里 | https://edu.cnblogs.com/campus/zswxy/computer-scienceclass1-2018/homework/2892 |
| 我在這個課程的目標是 | 學習和掌握指針的知識和運用 |
| 參考文獻 | C語言程序設計II |
基礎作業
6.1函數題: 求兩數平方根之和
函數fun的功能是:求兩數平方根之和,作為函數值返回。例如:輸入12和20,輸出結果是:y = 7.936238。
函數接口定義:
double fun (double *a, double *b); 其中 a和 b是用戶傳入的參數。函數求 a指針和b 指針所指的兩個數的平方根之和,并返回和。
裁判測試程序樣例:
#include<stdio.h>
#include <math.h>
double fun (double *a, double *b);
int main ( )
{ double a, b, y;scanf ("%lf%lf", &a, &b );y=fun(&a, &b); printf ("y=%.2f\n", y );return 0;
}/* 請在這里填寫答案 */ 輸出樣例:
12 20 輸入樣例:
y=7.94 實驗代碼:
double fun (double *a, double *b)
{double sum;sum=sqrt(*a)+sqrt(*b);return sum;
} 設計思路:
本題遇見的問題與解決方法:
一開始一直提交錯誤答案尋找結對隊友以后得知裁判測試程序樣例不需要輸入。
運行結果:
心得與用時:
題目較簡單但是基礎不夠通過書本和隊友將問題解決用時45分鐘。
利用指針返回多個函數值:
讀入n個整數,調用max_min()函數求這n個數中的最大值和最小值。
輸入格式:
輸入有兩行: 第一行是n值; 第二行是n個數。
輸出格式:
輸出最大值和最小值。
輸入樣例:
在這里給出一組輸入。例如:
~~~
5
8 9 12 0 3
~~~
輸出樣例:
在這里給出相應的輸出。例如:
~~~
mix = 12
min = 0
~~~
實驗代碼:
#include<stdio.h>
void max_min(int *a,int *n,int *max,int *min);
int main()
{int a[100],n,i,max,min;scanf("%d",&n);for(i=0;i<n;i++){scanf("%d",&a[i]);}max=min=a[0];max_min(a,&n,&max,&min);printf("max = %d\n min = %d",max,min);return 0;
}void max_min(int *a,int *n,int *max,int *min)
{ int i; for(i=0;i<*n;i++){if(*max < a[i]) *max = a[i];if(*min > a[i]) *min = a[i];}
} 設計思路:
本題所遇見的問題與解決辦法:
無
運行結果:
PTA忘記保存運行結果
心得與用時:
這道題偏難通過詢問同學和室友得知用時3小時。
預習題
最小數放前最大數放后:
為一維數組輸入10個整數;將其中最小的數與第一個數對換,將最大的數與最后一個數對換;輸出數組元素。。
函數接口定義:
~~~
void input(int arr,int n);
void max_min(int arr,int n);
void output(int *arr,int n);
~~~
三個函數中的 arr和n 都是用戶傳入的參數。n 是元素個數。
input函數的功能是輸入 n個元素存到指針arr所指向的一維數組中。
max_min函數的功能是求指針arr所指向的一維數組中的最大值和最小值,其中最小的數與第一個數對換,將最大的數與最后一個數對換。
output函數的功能是在一行中輸出數組元素,每個元素輸出占3列。
裁判測試程序樣例:
#include<stdio.h>
void input(int *arr,int n);
void max_min(int *arr,int n);
void output(int *arr,int n);
int main()
{ int a[10];
input(a,10);max_min(a,10);output(a,10);return 0;
}/* 請在這里填寫答案 */ 輸入樣例:
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)
{int i;for(i=0;i<n;i++){scanf("%d",&arr[i]);}
}
void max_min(int *arr,int n)
{int i, max, min, mid;max=min=arr[0];for(i=0;i<n;i++){if(max<arr[i])max=i;if(min>arr[i])min=i;}mid=arr[max];arr[max]=arr[n-1];arr[n-1]=mid;mid=arr[0];arr[0]=arr[min];arr[min]=mid;}
void output(int *arr,int n)
{int i;for(i=0;i<n;i++){printf("%3d",arr[i]);}
} 設計思路:
本題遇見的問題與解決方法:
這題我完全沒思路,聽助教的去看以前的作業學習加上和看著寢室大佬如何打來學習解決。
運行結果:
PTA的時間過了忘記截圖保存。
心得與用時:
學習到了指針使用鞏固基礎用時3小時。
思考題
1.為什么要使用指針?它有什么用?
指針可以有效地表示復雜的數據結構、動態分配內存、高效地使用數組和字符串、使得調用函數時得到多個返回值。
2.指針變量在內存中暫用多大的空間?它的大小由什么決定?
指針變量所占存儲空間的大小取決于指針變量所指向的存儲空間的類型。
結對編程:
過程:因為是自己找的隊友,熟悉起來很快沒有負擔感。
看法:兩個人在一起的時候挺歡樂,學習起來沒壓力,互相促進學習。
轉載于:https://www.cnblogs.com/gchProfessor/p/10659827.html
總結
- 上一篇: 求一个qq网名韩文女生带翻译
- 下一篇: Gym 101845(2018 ACM-