2019年春季學期第四周做業。

這個做業屬於哪一個課程 C語言程序設計II
這個做業要求在哪裏 2019年春季學期第四周做業
我在這個課程的目標是 我但願可以經過學習C語言的知識,編寫程序
這個做業在哪一個具體方面幫助我實現目標 這個做業讓我知道了選擇排序和冒泡排序算法,二維數組的定義和使用,讓我對數組的知識的瞭解更加深刻了
參考文獻 排序算法;冒泡排序

1、本週完成的做業

題目1.基礎題

7-2 選擇法排序 (20 分)
本題要求將給定的n個整數從大到小排序後輸出。html

輸入格式:
輸入第一行給出一個不超過10的正整數n。第二行給出n個整數,其間以空格分隔。算法

輸出格式:
在一行中輸出從大到小有序的數列,相鄰數字間有一個空格,行末不得有多餘空格。編程

輸入樣例:數組

4
5 1 7 6

輸出樣例:學習

7 6 5 1

1).實驗代碼

#include<stdio.h>

int main(void)
{
    int n, a[10], comp = 0, max, x, found;

    scanf("%d\n", &n);

    for(int i = 0; i < n; i ++)
        scanf("%d", &a[i]);

    for(int j = 0; j < n-1; j ++)
    {
        max = j;
        for(int k =j; k < n; k ++)
            if(a[k] > a[max])
                max = k;

            comp = a[max];
            a[max] = a[j];
            a[j] = comp;

    }


    printf("%d",a[0]);

    for(int m = 1; m < n; m ++)
        printf(" %d", a[m]);
}

2). 設計思路

3).本題調試過程碰到問題及解決辦法

遇到的問題:在將第j次循環時的最大值與a[j]交換位置時誤將a[j]打爲了a[k]
解決的辦法:將a[k]改成a[j]

4).運行結果截圖

題目2.

7-1 找鞍點 (20 分)
一個矩陣元素的「鞍點」是指該位置上的元素值在該行上最大、在該列上最小。設計

本題要求編寫程序,求一個給定的n階方陣的鞍點。3d

輸入格式:
輸入第一行給出一個正整數n(1≤n≤6)。隨後n行,每行給出n個整數,其間以空格分隔。指針

輸出格式:
輸出在一行中按照「行下標 列下標」(下標從0開始)的格式輸出鞍點的位置。若是鞍點不存在,則輸出「NONE」。題目保證給出的矩陣至多存在一個鞍點。調試

輸入樣例1:code

4
1 7 4 1
4 8 3 6
1 6 1 2
0 7 8 9

輸出樣例1:

2 1

輸入樣例2:

2
1 7
4 1

輸出樣例2:

NONE

1).實驗代碼

#include <stdio.h>

int main()
{
    int n, h, l;
    scanf("%d", &n);

    int a[6][6];

    for (h = 0; h < n; h++)
        for (l = 0; l < n; l++)
            scanf("%d", &a[h][l]);

    int maxh, maxl, min, count=0;
    for (h = 0; h < n; h++)
    {
        maxh = h;
        maxl = 0;
        for (l = 0; l < n; l++)
        {
            if (a[maxh][maxl] <= a[h][l])
            {
                maxh = h;
                maxl = l;
            }
        }

        for (min = 0; min < n; min++)
        {
            if (a[maxh][maxl] > a[min][maxl])
            {
                count = 0;
                break;
            }
            else
                count++;
        }
        if (count == n)
            break;
    }

    if (count==n)
        printf("%d %d", maxh, maxl);
    else
        printf("NONE");

    return 0;
}

2). 設計思路

3).本題調試過程碰到問題及解決辦法

遇到的問題1:編譯錯誤
解決的辦法1:開始的思路錯誤,後來從新按本身的思路寫了一遍

遇到的問題2:答案錯誤
解決的辦法2:和助教一塊兒檢查了很久,我發現了maxh,maxl的初始化爲0應該放在循環內,助教發現了個人輸出有邏輯問題。

4).運行結果截圖

題目3.挑戰題

7-1 冒泡法排序 (10 分)
輸入1個正整數n(1<=n<=10),而後輸入n個整數並存放在數組中,將這n個整數從大到小排序後輸出,相鄰數字間有一個空格,行末不得有多餘空格。

輸入格式:
輸入第一行給出一個不超過10的正整數n。第二行給出n個整數,其間以空格分隔。

輸出格式:
在一行中輸出從大到小有序的數列,相鄰數字間有一個空格,行末不得有多餘空格。

輸入樣例:

4 
75 71 77 76

輸出樣例:

77 76 75 71

1).實驗代碼

#include<stdio.h>

int main (void)
{
  int n, i, smaller;
  scanf("%d", &n);
  
  int a[10];
  
  for(i = 0;i < n;i ++)
    scanf("%d ", &a[i]);
    
  for(i = 0;i < n;i ++){
    for(int j = i;j < n;j ++){
      if(a[i] < a[j]){
        smaller = a[i];
        a[i] = a[j];
        a[j] = smaller;
      }
    }
  }
  
    printf("%d",a[0]);

    for(int m = 1; m < n; m ++)
        printf(" %d", a[m]);
        
  return 0;
}

2). 設計思路

3).本題調試過程碰到問題及解決辦法

該題沒有錯誤,有了思路之後就很流暢的寫出來了;

4).運行結果截圖

2、學習進度條

周/日期 這周所花的時間 代碼行數 學到的知識點簡介 目前比較迷惑的問題
3/2-3/8 20h 300行 數組,指針的大體意義,文件入門 數組串的使用,指針
3/9-3/15 25h 400行 二維數組,文件與數組的結合運用 雙for循環的流程圖(再不上課,光自學感受太艱難了)
3/16-3/22 22h 450行 一維數組,二維數組,幾種數組排序法 字符串使用

3、學習感悟

心得:

(1) 學習內容:
1.一維數組:選擇排序法、二分查找法;
2.二維數組:定義、引用、初始化,二維數組與矩陣;
3.字符串數組:定義,使用;
收穫:本次做業的最大收穫就是發現本身能夠不參考別人的代碼或者思路,光靠本身理解題意,而後徹底按照本身的思路寫出代碼了。
(2) 難點:基礎題中的找鞍點,寫了特別久都沒有寫出來。
解決的方法:經過不斷地檢查與修改發現了本身的思路與邏輯有許多的小問題,在這個基礎上進行了修改。

4、結對編程

1.結對編程過程

由於平時大部分的時間都在上課,課後時間我和這次的搭檔楊浩誠都有各自的事情要作,因此除了在週三晚自習集體結對編程後就在網上交流了,在結對編程中由於我與搭檔的水平差距有點大,因此都是搭檔在幫助我,回答個人問題。

由於在面對面結對編程時尚未看到新修改的C語言做業評價標準因此沒有特地拍照,可是還好有同窗隨手拍的朋友圈照片拍到了我和搭檔背影✌

2.結對編程的優缺點

優勢:1.在編程時有了更多探討的過程,而不是一我的死鑽
2.爲編程提供了更多的解答思路
3.在代碼出錯而怎麼都找不到錯誤時不會一我的自我崩潰,而是有我的會幫你一塊兒找出問題
缺點:個人搭檔狀況比較特殊,我很幸運隨機分配到咱們班最厲害的同窗,但也是由於我知道他很厲害,致使了我本身在結對編程時思惟產生了惰性,寫代碼時沒有了本身的思惟,可是還好我在發現這個問題的當天就改正了本身的想法。

完成做業的消耗時間:15h

相關文章
相關標籤/搜索