第四次作業


作業要求:【https://edu.cnblogs.com/campus/hljkj/CS201802/homework/2522

要求一:

1、你觀看了幾個視頻?給出觀看列表截圖。

 

2、通過觀看視頻你學習到哪些知識點或者編程題目?

我對數組各加的了解,以及對函數應用了解的更多了,另外還了解了一些二維數組。

3、對於所學知識點還有哪些疑問?有哪些知識點沒有學會?

 對於上周所學的知識點,函數的部分還有一點不熟練,我要再練習一下pta中的題,爭取更加好的掌握這些知識點。

要求二:

第13次作業(數組)7-2 輸出所有大於平均值的數 (15 分)

本題要求編寫程序,將輸入的n個整數存入數組a中,然后計算這些數的平均值,再輸出所有大於平均值的數。

輸入格式:輸入在第1行中給出一個正整數n(1n10),第2行輸入n個整數,其間以空格分隔。題目保證數據不超過長整型整數的范圍。

輸出格式:輸出在第1行給出平均值,保留2位小數。在第2行輸出所有大於平均值的數,每個數的后面有一個空格;如果沒有滿足條件的數,則輸出空行。

如果輸入的n不在有效范圍內,則在一行中輸出"Invalid."。

輸入樣例1:

10 55 23 8 11 22 89 0 -1 78 186

輸出樣例1:
47.10 55 89 78 186 

輸入樣例2:0
輸出樣例2:Invalid.

一.實驗代碼

#include<stdio.h>
#define N 10
int main()
{
  int i,num;
  double average,sum;
  sum=0;
  int a[N];
  scanf("%d",&num);
  sum=0;
  if(num>=1&&num<=10){
    for(i=0;i<num;i++){
      scanf("%d",&a[i]);
      sum=sum+a[i];
    }
  average=sum/num;
  printf("%.2f\n",average);
  for(i=0;i<num;i++){
    if(a[i]>average)
    printf("%d ",a[i]);
  }
}
else{
  printf("Invalid.");
}
  printf("\n");
  return 0;
} 

二.解題思路

1.步驟

1).先定義整形變量num表示輸入數的個數和i,再定義雙精度變量average表示平均數,sum表示總和,同時定義數組a[num]。

2).先輸入數的個數,然后用if語句在for循環中輸入數組中的數,求出總和sum。

3).求average,並輸出到小數點后兩位。

4).在for循環中用if語句找出大於平均值的數,有則輸出,沒有則輸出Invalid.。

運行的結果:

 

 2.流程圖

 

 

三.調試過程碰到的問題及解決辦法

在編譯成功后,開始運行時出現了能運行但是沒有結果的情況。

 后來找到是了是第19行代碼應該輸出的是a[i]不是a[num]

還有一個問題就是測試點1的n=1一直是格式錯誤,后來知道應該在最后加上printf("\n");測試點通過了。

 

 調試過程,輸入數組內數的個數和10個數的數據

求平均值

進入循環,找出比平均值大的數並輸出,程序結束

7-4 數字加密

輸入一個四位數,將其加密后輸出。方法是將該數每一位上的數字加9,然后除以10取余,做為該位上的新數字,最后將千位和十位上的數字互換,百位和個位上的數字互換,組成加密后的新四位數。例如輸入1257,經過加9取余后得到新數字0146,再經過兩次換位后得到4601。

輸入格式:輸入在一行中給出一個四位的整數x,即要求被加密的數。

輸出格式:在一行中按照格式“The encrypted number is V”輸出加密后得到的新數V。

輸入樣例:1257

輸出樣例:The encrypted number is 4601

一.實驗代碼

#include<stdio.h>
int main()
{
    int a[4];
    int i=3,x,b;

    scanf("%d",&x);
    while(i!=-1){
        a[i]=x%10;
        x=x/10;
        i--;
    }
    for(i=0;i<4;i++){
        a[i]=a[i]+9;
    }
    for(i=0;i<4;i++){
        a[i]=a[i]%10;
    }
    for(i=0;i<2;i++){
        b=a[i];
        a[i]=a[i+2];
        a[i+2]=b;
    }
    printf("The encrypted number is ");
    for(i=0;i<4;i++){
        printf("%d",a[i]);
    }
    return 0;
}

二.解題思路

1.步驟

1).先定義整形變量i、x、b,再定義數組a[4],輸入四位整數x。

2).用while循環語句將四位整數的每一位輸入進數組a[4]中。

3).用for循環將數組的每一個數加9。

4).用for循環將數組的每一個數除以10取余。

5).調整下標使千位和十位上的數字互換,百位和個位上的數字互換。

運行的結果:

2.流程圖

 

 

三.調試過程碰到的問題及解決辦法

這道題我只是在如何換位上思考了一下其他的步驟都很明確

調試過程

輸入x=1257

進入while循環並將每一個數輸入進數組a[4]中

經過前兩個for循環將數組的每一個數先加9再除以10取余

進入第三個for循環使千位和十位上的數字互換,百位和個位上的數字互換,最后輸出a[i]的每一個數

 

 個人總結:本周學習了數組,感覺自己接受的還行,另外還有兩個排序方法,冒泡法和選擇排序法,選擇排序法運用的還算熟練,冒泡法還需要加強,要在多看看書上的內容。

 

 

作業點評:

1.https://www.cnblogs.com/chumengGTRlhz/p/10116012.html

2.https://www.cnblogs.com/nansu/p/10134717.html

3.https://www.cnblogs.com/0224ming/p/10164004.html


免責聲明!

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



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