第四周做業

#2019年春季學期第四周做業算法

這個做業屬於哪一個課程 C語言程序設計Ⅱ
這個做業要求在哪裏 https://edu.cnblogs.com/campus/zswxy/software-engineering-class2-2018/homework/2774
我在這個課程的目標是 我但願可以經過學習這些基礎知識,以便更容易學習一些其餘算法、語言。實現更復雜的算法
這個做業在哪一個具體方面幫助我實現目標 本次做業,我搞懂了選擇排序法與冒泡排序法,選擇排序即先肯定一個假的值,在與給定數組中的數一一比較,找出要求的最大/小值; 冒泡排序是直接將數組中數據挨個先後比,找出要求的值。另外還學會利用二維數組的特性解決實際問題。
參考文獻 C語言程序設計(第3版);
##1、本週完成的做業
##基礎做業
###題目1.
7-2 選擇法排序 (20 分)
本題要求將給定的n個整數從大到小排序後輸出。

輸入格式: 輸入第一行給出一個不超過10的正整數n。第二行給出n個整數,其間以空格分隔。 輸出格式: 在一行中輸出從大到小有序的數列,相鄰數字間有一個空格,行末不得有多餘空格。數組

輸入樣例:學習

4
5 1 7 6

輸出樣例:設計

7 6 5 1

###1)、實驗代碼指針

#include<stdio.h>
int main ()
{
	int i,index,n,j,t;
	int a [10];
	char op=' ';
	
	scanf ("%d\n",&n);
	for (i=0; i<n; i++) {
		scanf ("%d",&a [i]);
	}
	for (j=0; j<n-1; j++) {
		index = j;
		for (i=j+1; i<n; i++) 
		   if (a [i] > a [index])
		   index = i;
		   t = a [index];
		   a [index] = a [j];
		   a [j] = t;
	}
	for (i=0; i<n; i++) {
		printf ("%d",a [i]);
		if (i<n-1) {
		  printf ("%c",op);
		}
	}
	
	return 0;
}

###2)、設計思路調試

###3)、本題調試過程碰到的問題及解決方法 無 ###4)、運行結果圖 code

###題目2. 7-1 找鞍點 (20 分) 一個矩陣元素的「鞍點」是指該位置上的元素值在該行上最大、在該列上最小。 本題要求編寫程序,求一個給定的n階方陣的鞍點。blog

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

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

輸入樣例1:

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 i,n,j,s,result=0,num;
	scanf ("%d",&n);
	int a [n] [n];
	char op=' ';
	
	for (i=0; i<n; i++) {
		for (j=0; j<n; j++) {
			scanf ("%d",&a [i] [j]);
	    }
	}
	for (i=0; i<n; i++) {
		num = a [i] [0];
		s=0;
		for (j=1; j<n; j++) {
			if (num <= a [i] [j]) {
				num = a [i] [j];
				s = j;
			} 
		}
		for (j=0; j<n; j++) {
			if (num > a [j] [s]) 
			    result++;
		}
		if (result == 0) {
			printf ("%d%c%d\n",i,op,s);
			break;
		}

###2)、設計思路

###3)、本題調試過程碰到的問題及解決方法

如圖,提交後顯示,「部分正確」,「最大規模,有並列極值元素,最後一個是鞍點」,而後解讀這句話是什麼意思。 想來想去,發現應該是當某一行有並列多個最大值時,按照最後面的算。問題找到後,開始想對策, 既然指出問題是當同一行出現多個極大值時,要後面的,因而就在行肯定後,當判斷列上是不是最小時改進一下, 即在代碼第18行中,‘<’ 改成'<=’。當去掉'='時,當同一行有多個相同最大值時,以第一個爲準;但題目要求之後面爲準,因此要加一個‘=’;

###4)、運行結果圖

##挑戰做業 ###題目1. 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 ()
{
	int n,i,j,t;
	scanf ("%d",&n);
	int a [n];
	char op=' ';
	
	for (i=0; i<n; i++) {
		scanf ("%d",&a [i]);
	}
	for (i=1; i<n; i++)
	   for (j=0; j<n-i; j++)
	      if (a [j] < a [j+1]) {
	      	t=a [j];
	      	a [j] = a [j+1];
	      	a [j+1] = t;
		  }
	for (i=0; i<n; i++) {
		printf ("%d",a [i]);
		if (i<n-1) {
			printf ("%c",op);
		}
	}
	
	return 0;
}

###2)、設計思路

###3)、本題調試過程碰到的問題及解決方法 本題書本上有例題,看懂之後很簡單,順着就作下來了。 ###4)、運行結果圖

##2、學習進度條

周/日期 這周所花的時間 代碼行數 學到的知識點簡介 目前比較迷惑的問題
3/2-3/8 三天六小時 50 一、定義、運用文件指針;二、如何打開、關閉文件三、如何讀出指定文件中的數據;四、如何向指定文件中寫入數據; 字符、字符串有什麼區別?兩者輸入、輸出有沒有很大不一樣?什麼纔算字符串?什麼算字符?在文件中兩者有沒有差異?
3/9-3/15 四天三小時 180 一、運用二維數組解決問題,矩陣的判斷;二、對一組數的全部子數組求和 如何在輸出時利用數組的性質
3/16-3/22 三天八小時 210 一、二維數組加深理解,二維數組與矩陣;二、選擇排序法解決問題;三、二分查找法 二分查找法這周沒練習,只是看看書上例題大體懂了,不知道真正應用時可否掌握。

##3、學習感悟 本週講課講了很多內容,一節大課,分兩節上,第一節聽懂了,中間休息一會,第二節上課再講新內容,前面就忘了。下課後就只記得第二節課的一點點知識。因此,感受只靠老師講的話,懂,只是暫時的,課下本身要再消化消化。總之,本週感受學了很多,並且我發現這些都是書上內容,本身徹底能夠日後看看,就能夠理解,當上課時,再聽一遍,就會增強記憶。

相關文章
相關標籤/搜索