2019春第六周编程总结
| 這個作業屬于哪個課程 | C語言程序設計Ⅱ |
| 這個作業要求在哪里 | https://edu.cnblogs.com/campus/zswxy/MS/homework/2829 |
| 我在這個課程的目標是 | 利用指針知識解決相關實際問題 |
| 在具體哪方面幫我實現目標 | 設計密碼開鎖、交換變量解決問題以及電碼加密 |
| 參考文獻 | C語言基礎、http://www.w3school.com.cn/html/html_forms.asp |
6-1 求兩數平方根之和 (10 分)
函數fun的功能是:求兩數平方根之和,作為函數值返回。例如:輸入12和20,輸出結果是:y = 7.936238。
函數接口定義:
其中 a和 b是用戶傳入的參數。函數求 a指針和b 指針所指的兩個數的平方根之和,并返回和。
裁判測試程序樣例:
輸入樣例:
12 20輸出樣例:
y=7.94實驗代碼:
#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; } double fun(double *a,double *b) { double sum; sum=sqrt(*a)+sqrt(*b); return sum;設計思路:
遇到的問題及解決辦法:
此題比較順利,沒遇到什么問題。
運行結果截圖:
7-1 利用指針返回多個函數值 (30 分)
讀入n個整數,調用max_min()函數求這n個數中的最大值和最小值。
輸入格式:
輸出格式:
輸出最大值和最小值。輸入樣例:
在這里給出一組輸入。例如:
輸出樣例:
在這里給出相應的輸出。例如:
實驗代碼:
#include<stdio.h> void max_min(int sz[],int n,int *max,int *min); int main() {int i,max,min,n;scanf("%d",&n);int sz[n];for(i=0;i<n;i++){scanf("%d",&sz[i]);}max_min(&sz,n,&max,&min); printf("max = %d\nmin = %d\n",max,min);return 0; }void max_min(int sz[],int n,int *max,int *min) {int i;*max = *min = sz[0];for(i=0;i<n;i++){if(*max<sz[i]){*max=sz[i];}if(*min>sz[i]){*min=sz[i];}} }設計思路:
遇到問題及解決辦法:
在調用max_min函數時遇到瓶頸,后面查閱百度了解了相關知識。
運行結果截圖:
預習題:
6-3 最小數放前最大數放后 (10 分)
為一維數組輸入10個整數;將其中最小的數與第一個數對換,將最大的數與最后一個數對換;輸出數組元素。。
函數接口定義:
三個函數中的 arr和n 都是用戶傳入的參數。n 是元素個數。
input函數的功能是輸入 n個元素存到指針arr所指向的一維數組中。
max_min函數的功能是求指針arr所指向的一維數組中的最大值和最小值,其中最小的數與第一個數對換,將最大的數與最后一個數對換。
output函數的功能是在一行中輸出數組元素,每個元素輸出占3列。
裁判測試程序樣例:
/* 請在這里填寫答案 */
輸入樣例:
輸出樣例:
1 5 4 8 2 3 9 5 7 12實驗代碼:
#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; } 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,sum,t; sum=0; for(i=0;i<n;i++) {if(arr[i]>arr[sum])sum=i; } t=arr[n-1]; arr[n-1]=arr[sum]; arr[sum]=t; sum=0; for(i=0;i<n;i++) {if(arr[sum]>arr[i]){sum=i;} } t=arr[0]; arr[0]=arr[sum]; arr[sum]=t; } void output(int *arr,int n) { int i; for(i=0;i<n;i++) {printf("%3d",arr[i]); } }設計思路:
遇到問題及解決辦法:
在反復調用fo循環以及if語句時出錯了,將sum、i、及中間變量t的值搞混淆了,最后問同學,了解了問題所在,并幫助我解決問題。
運行結果截圖:
思考題:
1.為什么要使用指針?它有什么用?
2.指針變量在內存中暫用多大的空間?它的大小由什么決定?
答:
1:
作用:
1)直接操作內存,程序效率更高; 2)可以寫復雜度更高的數據結構,程序員可以操作內存,也可以寫出靈活、復雜的數據結構; 3)編寫出簡潔、緊湊、高效的程序。2:
指針只是一個地址,在匯編后都是一個32位的內存地址(32位系統), 指針變量本身所占存儲空間的大小取決于存儲地址值所需的字節數 。學習進度表:
| 日期 | 總代碼行數 | 博客字數(個) | 所花時間 | 知識點 |
| 03/03 | 39 | 781 | 4hour | 查找整數(函數章節) |
| 03/09 | 41 | 680 | 5hour | 數組,文件 |
| 03/18 | 45 | 580 | 3hour | 數組、指針 |
| 03/22 | 26+42+24=92 | 720 | 6hour | 數組的綜合運用 |
| 03/29 | 35+22=57 | 790 | 7hour | 數組、指針 |
| 04/05 | 17+38+52=107 | 650 | 6hour | 指針、數組、函數等 |
學習感悟:
本周系統的學習了指針的相關內容,并利用其解決實際問題,
對于如何畫好流程圖有了較好的認知;
我覺得本周的難點是變量的初始化以及使用指針作為函數的參數的運用。還將繼續學習指針的相關知識,能夠熟練的運用指針的知識解決實際問題。
轉載于:https://www.cnblogs.com/ImportantMagic/p/10659731.html
總結
以上是生活随笔為你收集整理的2019春第六周编程总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微星主板节能模式怎么关闭_技嘉小雕、微星
- 下一篇: 淄博联海城企业文件图纸数据信息透明加密系