2019年6月26日 星期三

C語言(online c) 寫簡單的 程式 ( 輸入n個位數的數值並計算 (1)總和 (2)平均值 (3)最大值 (4)最小值 (5)第2大的數 )

C語言(online c) 寫簡單的 程式 ( 輸入n個位數的數值並計算  (1)總和 (2)平均值 (3)最大值  (4)最小值 (5)第2大的數 )

輸入n個位數的數值並計算
(1)總和 (2)平均值 (3)最大值  (4)最小值 (5)第2大的數

#include<stdio.h>
#include<math.h>
#define max(x,y) (x > y?x:y)
#define min(x,y) (x < y?x:y)

int bubble_sort(int A[50], int n){
  int i, j, flag ,temp;
  for(i = 0; i<n-1; i++){ //n個數字排序,只用 n-1 回
    int flag = 0; //表示有無發生交換
    for(j = 0; j < n-i; j++){ //從第一個數字開始比較,直到最後一個數字
      if(A[j]>A[j+1]){
        temp=A[j];
        A[j]=A[j+1];
        A[j+1]=temp;
        flag = 1;
      }
    }
    if(flag == 0) break; //此回合沒有發生交換
  }
}

int main()
{
    int n,i,x[50] ,maxnum ,minnum ;
    float sum , avg ;
    printf("輸入n個位數的數值 並計算(1)總和 (2)平均值 (3)最大值  (4)最小值 (5)第2大的數請\n");
    printf("請輸入n個數字 n:\n");
    scanf("%d ", &n);
    for (i=0;i<=n-1;i++)
        scanf("%d ", &x[i]);

    printf("你輸入的 n=%d\n\n", n);
    printf("你輸入的數值= ");
    for (i=0;i<=n-1;i++)
        printf("%d ", x[i]);
   
    //======================
    maxnum=max(x[0],x[1]);
    for (i=2;i<=n-1;i++)
        maxnum=max(maxnum,x[i]);
    printf("\n最大值=%d",maxnum);
   
    //======================
    minnum=min(x[0],x[1]);
    for (i=2;i<=n-1;i++)
        minnum=min(minnum,x[i]);
    printf("\n最小值=%d",minnum);   

    //======================       
    for (i=0;i<=n-1;i++)
        sum=sum+x[i];
    avg=sum/n;   
    printf("\n總和=%0.0f",sum); 
    printf("\n平均值=%0.2f",avg); 
   
    printf("\n");
    printf("\n排序後的輸入數值為"); 
   
    bubble_sort(x,n-1);
    for (i=0;i<=n-1;i++)
        printf("%d ", x[i]);
    printf("\n第2大數值=%d",x[1]);

    return 0;
}       
輸入n個位數的數值 並計算(1)總和 (2)平均值 (3)最大值  (4)最小值 (5)第2大的數請
請輸入n個數字 n:
你輸入的 n=5

你輸入的數值= 12 23 45 54 15
最大值=54
最小值=12
總和=149
平均值=29.80

排序後的輸入數值為12 15 23 45 54
第2大數值=15

沒有留言:

張貼留言

2024_09 作業3 以Node-Red 為主

 2024_09 作業3  (以Node-Red 為主  Arduino 可能需要配合修改 ) Arduino 可能需要修改的部分 1)mqtt broker  2) 主題Topic (發行 接收) 3) WIFI ssid , password const char br...