第二次作业

 

作业要求(博客链接):https://edu.cnblogs.com/campus/hljkj/Cprogramming_2018Autumn_CST2018_4/homework/2502

 

PTA作业情况:

一、计算机18秋-函数 6-1 统计个位数字

[1] 实验代码

int Count_Digit( const int N, const int D )
{
    int count,yushu,i;
    i=N;
    count = 0;
    
    if(i<0)
    {
        i = -i;
    }
    do
    {
        yushu=i%10;
        if(yushu==D)
        {
            count++;
        }
        i/=10;
    }while(i>0);
    return count;
}

[2] 设计思路

(1)文字描述

第一步:定义这个数的余数yushu,定义替换N的数i,定义D出现的次数count。

第二步:先判断i是否为正数,若是则继续,若否则先转换为其相反数。

第三步:从个位到最高位依次判断各位次上的数是否等于D。

(2)流程图

[3] 运行结果

(1)结果截图

 

 

 

 

(2)调试截图

 

 

(3)遇到问题及解决办法

本题运用了调用函数的方法。

开始时不清楚如何将每个位置上的数与D进行对比。看到题后应先理清思路,应思考如何遍历每个位置上的数,并判断是否与D相等。方法:应将一个数字除尽10,得到余数与D进行比较,再将这个数除以10,如此循环来进行比较。

二、计算机18秋-数组1  7-4 求一组数中的最大值和次大值

[1] 实验代码

#include<stdio.h>
#define N 10
int main()
{
    int a[N];
    int i,max,cmax;
    for(i=0;i<N;i++)
    {
        scanf("%d",&a[i]);
    }
    max=a[0];
    cmax=0;
    for(i=0;i<N;i++)
    {
    
        if(a[i]>max)
        {
            max=a[i];
        }
    }
    for(i=0;i<N;i++)
    {
        if(a[i]>cmax && a[i]<max)
        {
            cmax=a[i];
        }
    }
    printf("max=%d,cmax=%d",max,cmax);
    return 0;
}

[2] 设计思路

(1)文字描述

第一步:定义变量i,最大值max=0,次大值cmax=0。

第二步:依次输入十个元素,令max=数组中第一个数,令cmax=0,遍历数组,找出最大值。

第三步:再次遍历数组找出次最大值。

(2)流程图

 

[3] 运行结果

(1)结果截图

 

(2)调试结果

 

 

 

(3)运行问题及解决方法

 本题最应注意cmax的值如何判断,一定要满足在数组元素中除max值以外,cmax为最大的值。

三、计算机18秋-数组2  7-4 选择法排序

[1] 实验代码

 

#include<stdio.h>
#define N 10
int main(void)
{
    int a[N];
    int i,k,j,temp;
    for(i=0;i<N;i++)
    {
        scanf("%d",&a[i]);
    }
    for(i=0;i<3;i++)
    {
        k=i;
        for(j=i+1;j<N-1;j++)
        {
            if(a[j]<a[k])
            {
                k=j;
            }
        }
        if(k!=i)
        
            temp=a[k];
            a[k]=a[i];
            a[i]=temp;
        }
    }

    for(i=0;i<N;i++)
    {
        printf("    %d",a[i]);
    }
    
}    

 

[2] 设计思路

(1)文字描述

第一步:定义变量i,k,j,temp。将元素依次输入到数组中。

第二步:创建外循环和内循环,将其元素进行比较,将外循环设成只循环三次(因为题内要求排序只排三轮)。

第三步:比较完毕后输出数组。

(2)流程图

[3] 运行结果

(1)结果截图

 

 

(2)调试结果

 

 

 

 

(3)遇到的问题及解决方法

做题前应仔细理解选择法排序的意义 及题的要求。

刚开始没理解题的要求,导致我一直认为是把输入的数从小到大全部排列。

应理解内外循环比较的过程,根据题意,外循环的循环次数应为三次。

 

四、个人总结

(1)这几周进一步学习了函数及数组,讲解了内存的一些概念,应用了调用函数这个方法。

通过做PTA和看书,更加深入地理解了数组的应用和意义。

(2)我觉得内存知识的理解为较难的地方,数组的应用也不是非常熟练。解决问题最好的方法就是去实践,内存的概念应该用调试及观测地址一点一点去理解,对于提高应用数组的熟练度应多刷题,进行耐心的思考和调试。

 

五、互评和学习进度

(1)点评

 袁潮

袁于纯

邱作鹏

 

(2)学习进度

表格:

周数 此周代码行数/行 码代码所用时长/h 写博客字数/字 写博客所用时长/h 所涉及的知识点
第十三周 2000 8 0 0 函数的应用、内存的理解
第十四周 1800 6 0 0 函数的应用、数组的应用
第十五周 1900 6 0 0 数组的应用
第十六周 2400 12 1200 6 数组的应用

折线图:

 

posted @ 2018-12-21 09:58  王铁柱666  阅读(403)  评论(14编辑  收藏  举报