第十四,十五周作业

Posted DavidPark

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第十四,十五周作业相关的知识,希望对你有一定的参考价值。

一,pta:

1,交换最小值和最大值:

(1),实验代码:

#include<stdio.h>

int main()
{
    int i, n,idx,t;
     scanf("%d",&n); 
     int a[n];  
    for ( i = 0; i < n; i++ ) 
    {
        scanf ( "%d", &a[i] );
    } 
    idx=0;
      for ( i = 0; i < n; i++ ) 
      { 
           if ( a[i] < a[idx] )
        { 
          ; }         
    }     
       
    if(idx!=0){
        t=a[0];a[0]=a[idx];a[idx]=t;
    }
    idx=0;
    for ( i = 0; i < n; i++ ) 
      { 
           if ( a[i] > a[idx] )
        { 
           idx=i;}         
    } 
    
    if(idx!=(n-1)){
        t=a[n-1];
        a[n-1]=a[idx];
        a[idx]=t;}
        
        
        
        for ( i = 0; i < n; i++ ){
            printf("%d ",a[i]);
        }
        
        
        
      
}

(2),设计思路:

第一步:输入一个n用来了解总共有多少个数。

第二步:用一个遍历输入每个数并存储到相应的空间内。

第三步:用一个for语句依次输出所存储的数据,并用一个if语句判断这个数据和idx数位的数据,如果这个数据比idx的那个大就将i赋给idx,循环结束后idx就是最大的那个数所处的数位。最后,判断第一项是不是最大值不是的话经过交换结束。最小的数的交换与其相同。

第四步:最后经过一个遍历将数输出结束。

 

 

 

 

(3),遇到问题:

是因为上课的时候老师特别说了一下,便将问题解决。错误原因是在交换之前没有判断第一个是不是就是最大值。

解决办法,在交换之前加if语句,看是否第一项就是最大,最小值同理。

2,冒泡排序法:

(1),实验代码:

#include<stdio.h>

int main()
{   
    int i,j,t=0,n,k;
    scanf("%d %d",&n,&k);
    int a[n];
    
    for(i=1;i<=n;i++){
       scanf("%d",&a[i]);}
    
    for(j=1;j<=k;j++){
       for(i=1;i<=n-j;i++){
          if(a[i]>a[i+1])
         {t=a[i]; a[i]=a[i+1]; a[i+1]=t;}
                          }
                    }
                    
    for(i=1;i<=n;i++){
        if(i==n){
        printf("%d",a[i]);}
        else{
        printf("%d ",a[i]);}
    }
    
    return 0;
}

(2),设计思路:

第一步:输入数据个数n,比较次数k。用一个遍历输入每个数并存储到相应的空间内。

第二步:用一个for语句控制比较的趟数,在此for语句中再用一个for语句将最大的数放置在后面(因为每减少一趟所需比较的次数就少一次,所以每趟只需判断n-j次。)

第三步:用一个遍历将数据输出,因为末尾不能有空格所以在其中加一个if语句控制输出。 

 

 

(3),遇到问题:

 在Dev c++上运行的时候总是会拉掉一些点导致答案出现错误。

解决办法就是对比TXT进行错误查找。

3,四次pta:

 

二,Git:

(1),截图:

(2),Git地址:https://git.coding.net/DavidPark/123.git

三,学习总结:

这两周主要学习了数组,感觉数组包含的知识较多,尤其是for语句所以经过两周的训练for语句更加熟练,并且感觉学习了数组并做一些应用题后自己的思维更加开阔。

难点的话就是在做一些应用的时候有时会感觉手足无措。

四,学习进度与互评:

时间

代码行数

时间(min

博客字数

博客时间min

知识点

11.20

100

90

0

0

Pta

11.21

100

100

0

0

PtaTXT事例练习

11.22

120

100

0

0

Pta,数组输入,输出

11.23

100

100

0

0

Pta,下标

11.24

150

110

0

0

数组实例练习

11.25

180

120

0

0

数组实例练习

11.26

150

120

0

0

Pta

11.27

100

100

50

10

Pta

11.28

100

90

0

0

Pta,二维数组输入输出

11.29

100

100

0

0

二维数组输入输出

11.30

200

110

0

0

Pta

12.1

150

90

60

30

Pta

12.2

160

110

110

90

数组实例练习

12.3

200

120

40

10

数组实例练习

互评:

1,高立彬:http://www.cnblogs.com/gao628526/p/7931800.html

2,班庆泽:http://www.cnblogs.com/wsbqz/p/7965666.html

3,张国庆:http://www.cnblogs.com/zgq947/p/7966299.html

 

以上是关于第十四,十五周作业的主要内容,如果未能解决你的问题,请参考以下文章

第十四,十五周作业

第十四,十五周作业

第十四十五周作业

第十四十五周新总结

第十五周个人作业

第十五周个人作业