這次作業屬於那個課程 | 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語言好像要記得特別少,只有好多重復的計算。