第二次作業


作業要求鏈接:https://edu.cnblogs.com/campus/hljkj/Cprogramming_2018Autumn_CST2018_4/homework/2502

一、計算機18秋-函數    

6-3 數字金字塔 (15 分)

本題要求實現函數輸出n行數字金字塔。

函數接口定義:

void pyramid( int n );

其中n是用戶傳入的參數,為[1, 9]的正整數。要求函數按照如樣例所示的格式打印出n行數字金字塔。注

意每個數字后面跟一個空格。

裁判測試程序樣例:

#include <stdio.h>

void pyramid( int n );

int main()
{    
    int n;

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

    return 0;
}

/* 你的代碼將被嵌在這里 */

輸入樣例:

5

輸出樣例:

    1 
   2 2 
  3 3 3 
 4 4 4 4 
5 5 5 5 5 

1、實驗代碼

 1 void pyramid( int n )
 2 {
 3   int i,j;
 4   for(i=1;i<=n;i++){
 5     for(j=1;j<=n-i;j++){
 6       printf(" ");
 7     }
 8     for(j=1;j<=i;j++){
 9       printf("%d ",i);
10     }
11     putchar('\n');
12   }
13 }

2、解題思路

(1)文字描述

第一步:設置所需變量:i,j,n;

第二步:若i=1時,在數字之前需要n-1個空格;若i=2時,在數字之前需要n-2個空格;以此類推,可知:若數字為i時,需要n-i個空格;

第三步:當i=1時,需要輸出一個1;當i=2時,需要輸出兩個2;以此類推,可知:若數字為i時,需要輸出i個i;

第四步:每一行之后需要輸入一個“\n”用於分行。

(2)流程圖


 

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

(1)問題

在輸出時忘記分行,如圖:

(2)解決辦法

在循環過程最后添加“\n”用於分行。

 

二、計算機18秋-數組1

7-2 輸出數組元素 (15 分)

本題要求編寫程序,對順序讀入的n個整數,順次計算后項減前項之差,並按每行三個元素的格式輸出結果。

輸入格式:

輸入的第一行給出正整數n(1<n10)。隨后一行給出n個整數,其間以空格分隔。

輸出格式:

順次計算后項減前項之差,並按每行三個元素的格式輸出結果。數字間空一格,行末不得有多余空格。

輸入樣例:

10
5 1 7 14 6 36 4 28 50 100

輸出樣例:

-4 6 7
-8 30 -32
24 22 50

1、實驗代碼

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int a[10];
 5     int i,j,n,count=0;
 6     scanf("%d", &n);
 7     for(i=0;i<n;i++)
 8     {
 9         scanf("%d",&a[i]);
10     }
11     for(j=0;j<n-1;j++)
12     {
13         a[j]=a[count+1]-a[count];
14         count++;
15     }
16     count=0;
17     for(j=0;j<n-1;j++)
18     {
19         if(j==0)
20         {
21             printf("%d",a[0]);
22         }
23         else if(count==3)
24         {
25             printf("\n");
26             printf("%d",a[j]);
27             count=0;
28         }
29         else{
30             printf(" %d",a[j]);    
31         }
32         count++;
33     }
34 }

2、解題思路

(1)文字描述

第一步:設置變量:i,j,n,count以及一串數組a[10];

第二步:輸入十個量,放入數組a[i]中,並且重新定義一組數組a[j],a[j]為a[i]-a[i-1]所得,共九個數;

第三步:在循環變量中設置count=0,當count=3時,先輸出“\n”分行,然后輸出數值,再將count賦值為0;

第四步:若j=0,則直接輸出數值,其余的先輸出一個空格,在輸出數值。

(2)流程圖 


 

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

(1)問題

a、PTA顯示格式錯誤,因輸出時格式出錯,如圖:

b、當n為最小時以及次小時,答案出現錯誤,如圖:

(2)解決辦法

a、將(i+1)%3=0時,輸出數值改為輸出“%d\n”用於分行;

b、另設量count,用於計算輸出次數,且另設j,用於輸出數組。

 

 三、計算機18秋-數組2

 

7-2 查找整數 (10 分)

 

本題要求從輸入的N個整數中查找給定的X。如果找到,輸出X的位置(從0開始數);如果沒有找到,輸出“Not Found”。

輸入格式:

輸入在第一行中給出兩個正整數N(≤20)和X,第二行給出N個整數。數字均不超過長整型,其間以空格分隔。

輸出格式:

在一行中輸出X的位置,或者“Not Found”。

輸入樣例1:

5 7
3 5 7 1 9

輸出樣例1:

2

輸入樣例2:

5 7
3 5 8 1 9

輸出樣例2:

Not Found

 

 1、實驗代碼

 1 #include <stdio.h>
 2 
 3 int main()
 4 {
 5     int n, m;                       
 6     scanf("%d %d", &n, &m);
 7     
 8     int a[n], i, k = 1;         
 9     for(i = 0; i < n; i++) {
10         scanf("%d", &a[i]);
11         if(a[i] == m) {
12             printf("%d", i);      
13             k = 0;
14         }
15     }
16     if(k == 1) {                 
17         printf("Not Found");
18     }
19     
20     return 0;
21 }

2、解題思路

(1)文字描述

第一步:設置變量:i,k,n,m,設置一串數組:a[n];

第二步:輸入所需要的數置於數組a[n]中,以及想要查詢的數值;

第三步:運用循環語句,從a[n]中尋找與m相等的數,並設一變量k;若能找到與m想等的數,則k=0,反之,k=1;

第四步:若k=0,輸出與m數相等的a[n]中的n,若k=1,輸出Not Found。

(2)流程圖

 

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

(1)問題

a、運行出錯,僅小部分正確,如圖:

b、出現無論能否查到,皆輸出Not  Found,且出現循環多次,如圖:

(2)解決辦法

a、if語句出錯,條件中改為a[i]==m;

b、將Not Found 放入for語句之外,並另設變量k,用來辨別是否查詢得到m,如圖:

 

 四、個人總結

(1)這幾周主要學習了有關函數、數組的相關內容,了解了有關局部變量和全局變量的相關概念及含義。也學習了有關html的相關內容,使我了解到了計算機編程的用途。

(2)通過這幾周的學習內容來看,有關數組的知識比較困難,涉及到循環的算法思路不太明白,通過看書上的例題以及網課的講解,稍微明白了一點。

五、互評和學習進度

1、互評

(1)王天奇:https://www.cnblogs.com/z-x-c2429657075-/p/10111309.html

(2)王恩臨:https://www.cnblogs.com/wangtiezhu666/p/10127789.html

(3)楊仕奇:https://www.cnblogs.com/ysq1n/p/10139936.html

2、學習進度

(1)表格


(2)折線圖

 


免責聲明!

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



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