這個做業屬於哪一個課程 | C語言程序設計II |
這個做業要求在哪裏 | 2019年春季學期第六週做業 |
我在這個課程的目標是 | 我但願可以經過學習C語言的知識,編寫程序 |
這個做業在哪一個具體方面幫助我實現目標 | 這個做業讓我知道了怎樣將指針做爲參數傳入自定義函數中使用 |
參考文獻 | sqrt函數 |
函數fun的功能是:求兩數平方根之和,做爲函數值返回。例如:輸入12和20,輸出結果是:y = 7.936238。html
函數接口定義:編程
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 Y; Y = sqrt(*a) + sqrt(*b); return Y; }
讀入n個整數,調用max_min()函數求這n個數中的最大值和最小值。.net
輸入格式:
輸入有兩行: 第一行是n值; 第二行是n個數。設計
輸出格式:
輸出最大值和最小值。3d
輸入樣例:
在這裏給出一組輸入。例如:指針
5 8 9 12 0 3
輸出樣例:
在這裏給出相應的輸出。例如:
max = 12 min = 0
#include<stdio.h> void max_min(int n, int number[10000], int *max, int *min); int main(void) { int i, n, max, min; scanf("%d", &n); int number[10000]; for(i = 0;i < n;i ++) scanf("%d", &number[i]); max_min(n, number, &max, &min); printf("max = %d\nmin = %d", max, min); return 0; } void max_min(int n, int number[10000], int *max, int *min) { *max = number[0]; *min = number[0]; for(int i = 0;i < n;i ++) { if(*max < number[i]) *max = number[i]; if(*min > number[i]) *min = number[i]; } }
爲一維數組輸入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) { for(int i = 0;i < n;i ++) scanf("%d", arr+i); } void max_min(int *arr,int n) { int max, min, medium = 0, a, b, i; max = arr[0]; min = arr[0]; for(i = 0;i < n;i ++) { if(max < arr[i]) { max = arr[i]; a = i; } if(min > arr[i]) { min = arr[i]; b = i; } } medium = arr[a]; arr[a] = arr[n-1]; arr[n-1] = medium; medium = arr[b]; arr[b] = arr[0]; arr[0] = medium; } void output(int *arr,int n) { for(int i = 0;i < n;i ++) printf(" %d ", arr[i]); }
具體要求請參看鄒欣老師博客 現代程序設計做業
第一步 輸入二維數組
第二步 循環進行相鄰(上下或左右)的元素的比較(難點)
第三步 循環比較大小的同時也不斷將最大的元素的地址存儲在另外一個數組中
第四步 輸出最大矩形子數組的和
周/日期 | 這周所花的時間 | 代碼行數 | 學到的知識點簡介 | 目前比較迷惑的問題 |
---|---|---|---|---|
3/2-3/8 | 20h | 300行 | 數組,指針的大體意義,文件入門 | 數組串的使用,指針 |
3/9-3/15 | 25h | 400行 | 二維數組,文件與數組的結合運用 | 雙for循環的流程圖(再不上課,光自學感受太艱難了) |
3/16-3/22 | 22h | 450行 | 一維數組,二維數組,幾種數組排序法 | 字符串使用 |
3/23-3/29 | 20h | 350行 | 字符串的定義及其使用 | 指針的具體使用 |
3/30-4/5 | 15h | 340行 | 指針變量的定義,使用,初始化及其基本運算,指針做爲函數參數的做用;使用指針實現函數調用返回多個值 | 指針在運行時內存的變化 |