第二次作業


作業要求:【https://edu.cnblogs.com/campus/hljkj/Cprogramming_2018Autumn_CST2018_3/homework/2503】

 一·  函數

6-2 找兩個數中最大者 (10 分)

本題要求對兩個整數a和b,輸出其中較大的數。

函數接口定義:

int max( int a, int b );

其中ab是用戶傳入的參數,函數返回的是兩者中較大的數。

裁判測試程序樣例:

#include <stdio.h>

int max( int a, int b );

int main()
{    
    int a, b;

    scanf("%d %d", &a, &b);
    printf("max = %d\n", max(a, b));

    return 0;
}

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

輸入樣例:

-5 8

輸出樣例:

max = 8
1.實驗代碼
int max(int a, int b)
{
    if(a>b){
        return a;
    }else{
        return b;
    }
}

2.解題思路

(1)文字描述

第一步:定義函數

第二步:判斷a,b大小

第三步:輸出大的數

(2)流程圖

(3)遇到問題及解題思路

這道題沒有太大困難,根據要求定義函數,判斷大小即可。

二·  數組1

7-3 最高分、最低分、平均分 (10 分)

從鍵盤輸入6個學生的成績,統計最高分,最低分和平均分。

輸入格式:

在一行中輸入6個用空格間隔的整數。

輸出格式:

分別在不同行輸出結果,結果均為整數,沒有列寬控制,結果前后都沒有空格,請參照輸出樣例。

輸入樣例:

56 89 48 78 58 92

輸出樣例:

max:92
min:48
avg:70

1.實驗代碼

 

#include <stdio.h>
int main()
    {
        int i;
        int a[10],min,max,avg = 0,sum = 0;    
        for(i=0;i<6;i++)
            {
                scanf("%d",&a[i]);
                sum+=a[i];
            }
        max=min=a[0];
        for(i=1;i<6;i++)
            {
                if(min>a[i])
                    {min=a[i];}
                if(max<a[i])
                    {max=a[i];}
            }
        avg=sum/6;
        printf("max:%d\nmin:%d\navg:%d\n",max,min,avg);
    }

 

(1) 文字描述

 第一步:輸入循環變量i,輸入一個數組,輸入max,min,avg=0,sum=0

第二步:做一個for循環給數組中元素賦值並求和

第三步:讓max=min=a[0]

第四步:構造for循環得到最大值和最小值

第五步:求出平均值並輸出max,min,avg

(2) 流程圖

 

(3) 遇到問題及解題思路

 

在做這道題時一定要注意pta中的輸出格式最后輸出時不能像下面一樣用三個printf。

 printf("max:%d\n", max);
 printf("min:%d\n", min);
 printf("avg:%d\n", avg);

應該用一個printf("max:%d\nmin:%d\navg:%d\n",max,min,avg);

以后應多注意pta中作業要求。

三·  數組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.實驗代碼

 

#include <stdio.h>

int main(){
    int N, i;
    long X;
    long num;
    scanf("%d%ld", &N, &X);
    for(i=0; i<N; i++){
        scanf("%ld", &num);
        if(num==X){
            printf("%d\n", i);
            break;
        }
    }
    if(i==N){
        printf("Not Found");
    }

    return 0;
}

 

2.解題思路

(1)文字描述

第一步:給N,i,x,num做定義並輸入N,x

第二步:做for循環(i<N),賦值給num

第三步:在i<N下,x=num則結束並輸出i

第四步:i<N,沒有與x相等的num,那么i=N,輸出Not Found

(2)流程圖

 

(3)遇到問題及解題思路

 

做這道題時不應把“=”與“==”弄混,不願忘記break的使用

 

四·  個人總結

學習內容

(1)更好的掌握函數,感覺用函數很方便。

(2)學習了一維數組,在定義一維數組時可以直接把把數組元素寫后面,要不還得賦值並在編譯時打上。

 (3) 在調用一維數組時每次只能調用一個元素而不是整個數組。

(4)學習二維數組,二維數組需要定義兩個循環變量,有行和列。

難點

(1)冒泡排序法與選擇排序法,多照着敲幾遍代碼,加深理解。

(2)二維數組行列互換問題, 向老師同學請教。

五·  互評與學習進度

1.評論: 

 李曉旭同學:http://www.cnblogs.com/lixiaoxu695022762/

崔鳳宇同學:http://www.cnblogs.com/cfy991213/

蘇末然同學:https://www.cnblogs.com/smr2018023977/p/10122983.html

2.學習進度

 


免責聲明!

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



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