第二次作业

作业要求:【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.学习进度

 

posted on 2018-12-22 09:22  段连玉  阅读(1050)  评论(10编辑  收藏  举报

导航