第2次作业

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

函数-4判断奇偶性

1.实验代码

int even( int n )
{
    int aleck;
    if(n%2==0)
    {
        aleck=1;
    }else
    {
        aleck=0;
    }
    return aleck;
}

2.解题思路

(1)主要描述题目算法

第一步:判断输入值的奇偶性

第二步:根据判断的奇偶性,和题目要求赋值给整形函数返回主函数

(2)流程图

3.本题调试过程碰到问题及解决办法

编译过程中没有遇到问题。

 数组1-1交换最大值和最小值

1实验代码

#include<stdio.h>
int main()
{
    int max,min,step,i,n,j;
    int a[10];
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    
    
    max=0;
    for(i=1;i<n;i++)
    {
        if(a[max]<a[i])
        {
            max=i;
        }
    }
    step=a[max];
    a[max]=a[n-1];
    a[n-1]=step;
    
    
    min=0;
    for(i=1;i<n-1;i++)
    {
        if(a[min]>a[i])
        {
            min=i;
        }
    }
    step=a[min];
    a[min]=a[0];
    a[0]=step;
    for(i=0;i<n;i++)
    {
        printf("%d ",a[i]);
    }
 } 

2.解题思路

(1)主要描述题目算法

第一步:根据输入的N给数组赋值

第二步:穷举出最大值a[max]与a[n-1]交换大小

第三步:在a[0]与a[n-2]寻找穷举最小值a[min]与a[0]交换大小

第四步:输出数组中储存的值

(2)流程图

 

3.本题调试过程中遇到的问题及解决办法

在dev-c++中编译运行样例时正确在pta中提交发现错误如图,发现当n=1时运行结果不正确,于是起初在输入n后加入if语句解决当n=1时特殊输入和输出;

后在进行重复练习时发现在该源程序中调整最大值和最小值的筛选位置能解决这一问题.

数组2-1简化的插入排序

1实验代码

#include<stdio.h>
int main()
{
    int n,a[10],x,i,count;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    scanf("%d",&x);
    if(x>a[n-1])
    {
        for(i=0;i<n;i++)
        {
            printf("%d ",a[i]);    
        }
        printf("%d ",x);    
    }else{
    
        for(i=0;i<n;i++)
        {
            if(x<a[i])
            {
                count=i;
                break;
            }
        }
        for(i=0;i<count;i++)
        {
            printf("%d ",a[i]);
        }
        printf("%d ",x);
        for(i=count;i<n;i++)
        {
            printf("%d ",a[i]);
        }
    }
}

2.解题思路

(1)主要描述题目算法

第一步:因为是升序的有序的整数序列比较输入的x与最大值a[n-1]的大小关系

第二步:若x大于a[n-1]则有序的输出a[0]到a[n-1]后在输出x

第三步:若x小于a[n-1]则a[0]到a[n-1]依此从小到大比较大小与x的大小关系至第一个大于x的值a[count]为止

第四步:输出a[0]到a[count-1]的值,再输出x的值,再输出a[count]到a[n-1]的值

(2)流程图

3.本题调试过程中遇到的问题及解决办法

 

分析:再提交pta前只以样例进行调试而忽略了当x大于数组中所有数据时所要输出的顺序,所以当x大于a[n-1]时输出的答案错误

更改:在x输入后直接进行x与a[n-1]的比较排除这种情况对程序的干扰

个人总结

(1)最近学习了数组的相关知识,以及关于数组的冒泡排序法,选择排序法,等一些关于数组的应用

收获:跟多的学习了关于c的知识并掌握了冒泡的一些排序

 

(2)在学习过程中对多种排序法有许多的不了解,和数组排序流程图的一些排列问题

通过老师提供的代码每天的练习逐渐掌握了一些排序法的编程,上网查找一些关于冒泡排序法的相关流程图逐渐联系画流程图

互评和学习进度

1.(1).https://www.cnblogs.com/cfy991213/p/10127646.html崔凤宇同学的作业清晰明了,流程图简单流畅,正确性让人担忧,但细节描写详细,值得我深刻的学习。

 (2)https://www.cnblogs.com/4399yt/p/10139089.html于桐同学的作业中流程图,高深莫测。虽简洁明了但暗藏玄机,让人琢磨不透。图中的语句让我惊讶。折线图是真滴不懂,望指点。做题的正确率是真滴高,完全不需要调试,值得我们学习。

 (3)https://www.cnblogs.com/cfy991213/p/10127646.html梁宇同学的作业中流程图简洁明了,图中连线略有交叉,但不影响总体视觉效果

2.

posted @ 2018-12-17 20:36  梁德辉  阅读(237)  评论(20编辑  收藏  举报