第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.


免責聲明!

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



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