2019年春季學期第四周作業


這次作業屬於那個課程 C語言程序設計2
這個作業要求在哪里 2019年春季學期第四周作業
我在這個課程的目標是 學習二維數組和選擇排序法
這個作業在那個具體方面幫助我實現目標 讓我更加深入地了解了數組,並可以解決一系列數學問題

參考文獻 無
一、本周完成的作業:

基礎題:
題目1.輸入一個正整數 n (1≤n≤10)和n 階方陣a的元素,如果方陣a中的所有元素都沿主對角線對稱,輸出“Yes”, 否則,輸出“No”。主對角線為從矩陣的左上角至右下角的連線,方陣a中的所有元素都沿主對角線對稱指對所有i, k,a[i][k]和a[k][i]相等。

1).實驗代碼

#include <stdio.h>
int main(void)	
{	
   	int found, i, k, n;
   	int a[10][10];

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

 	found = 1;
   	for (i = 0; i < n; i++){	
   		for (k = 0; k < i; k++){
   			if (a[i][k]!=a[k][i])
                                           {	
			  found=0;          
           	          break;
       	                            }
	
		if (found==0){
			break;
   		}
  	}

  	if (found != 0){
  		printf("Yes\n");
  	}  
  	else{
  		printf("No\n");
  	}  

	return 0;
}

2) 設計思路

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

問題:錯誤地使用了變量b
解決:將b改為k

4).運行結果截圖

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

1).實驗代碼

#include<stdio.h>
int main (void)
{
  int i,a[30],b,c,d,e;
  scanf("%d",&d);
  for(i=0;i<d;i++)
  scanf("%d",&a[i]);
  for(c=0;c<d-1;c++){
                     b=c;
                     for(i=c+1;i<d;i++)
                        if(a[i]<a[b]){
                                 b=i;}
                               e=a[b];
                         a[b]=a[c];
                             a[c]=e;
  }
  for(i=d-1;i>0;i--){
    printf("%d ",a[i]);
  }
  printf("%d",a[0]);
  
  return 0;
}

2) 設計思路

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

問題:使用了中文字符
解決:將中文)改為)

4).運行結果截圖

題目3. 找鞍點 (20 分)
一個矩陣元素的“鞍點”是指該位置上的元素值在該行上最大、在該列上最小。

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

1).實驗代碼

#include<stdio.h>  
int main(void)
{       
  int a,b,c,d=0,e=0,f,g=1,h[30][30];
  
  scanf("%d",&a);
    for(b=0; b<a; b++){
        for(c=0; c<a; c++)  {  
         scanf("%d",&h[b][c]);  
                            }       
                      } 
    if(a==1){
    printf("0 0");
            }
    else{  
        for(b=0; b<a; b++){  
            f=b;   
            for(e=0;e<a;e++) {   
                if(h[b][d]<=h[b][e]) {  
                    d=e;  
                                     }  
                             }  
            for(c=0;c<a;c++) {   
                if(h[f][d]>h[c][d]){ 
                    f=c;  
                    break;  
                                   }  
                            }  
            
            if(b==f){
                g=0;  
                break;  
                    }  
                          }  
        if(g==0) 
        printf("%d %d",b,d);  
        else        
        printf("NONE");  
        }  
   return 0;
}

2) 設計思路

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

問題:答案錯誤!
解決:將結果的none改正為NONE

4).運行結果截圖

挑戰題
題目1.冒泡法排序 (10 分)
輸入1個正整數n(1<=n<=10),然后輸入n個整數並存放在數組中,將這n個整數從大到小排序后輸出,相鄰數字間有一個空格,行末不得有多余空格。

1).實驗代碼

#include<stdio.h>
int main (void)
{
  int a[30],b,c,d,e,f,g;
  scanf("%d",&e);
  for(f=0;f<e;f++)
  {
  scanf("%d",&a[f]);
  }
  for(d=0;d<e-1;d++)
  {
    c=d;
    for(f=d+1;f<e;f++)
    {
     if(a[f]<a[c])
      {
      c=f;        
      }
     }
      g=a[c];
      a[c]=a[d];
      a[d]=g;
    }
  for(f=e-1;f>0;f--){
    printf("%d ",a[f]);
   }
  printf("%d",a[0]);
  
  return 0;
}

2) 設計思路

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

問題:出現了未被定義的變量
解決:將這個h改為f

4).運行結果截圖

二、學習進度條

周/日期 這周所花的時間 代碼行 學到的知識點簡介 目前比較迷惑的問題
2/26-3/3 13小時 100 數組的使用 數組的定義是否可以用long?
3/4-3/10 10小時 131 文件的指針 指針可不可以用多個?
3/11-3/17 18小時 235 二維數組 還有無限維數組嗎?
3/18-3/24 13小時 376 二維數組的矩陣問題 編程和數學一樣嗎?

三,學習感悟
c語言好像要記得特別少,只有好多重復的計算。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM