第四次作业
2018-12-24 20:41 cheng程旭 阅读(277) 评论(14) 编辑 收藏 举报作业要求:https://edu.cnblogs.com/campus/hljkj/CS201801/homework/2523
预习作业:
1:我观看了有关数组的四节视频;
2:学习的主要是翁恺老师关于数组的讲述以及他对寻找素数这道题的扩展;
3:疑问是a[2][3]这个是什么表达方式,还不太理解;
二:PTA作业
第一次作业:
【1】:代码:
#include <stdio.h> int main(void) { int n; scanf("%d",&n); int i; int a[10]; for(i=0;i<n;i++) { scanf("%d",&a[i]); } /*for(i=0;i<n;i++) { printf("%d ",a[i]); }*/ int index_max=0; int index_min=0; for(i=1;i<n;i++) { if(a[index_max]<a[i]) { index_max=i; } } int num_last; num_last=a[n-1]; a[n-1]=a[index_max]; a[index_max]=num_last; int j; for(j=1;j<n;j++) { if(a[index_min]>a[j]) { index_min=j; } } //printf("%d %d\n",a[index_max],a[index_min]); int num_first; num_first=a[0]; a[0]=a[index_min]; a[index_min]=num_first; for(i=0;i<n;i++) { printf("%d ",a[i]); } return 0; }
【2】:解题思路
这道题是交换最小值与最大值,需要将最小值与第一个数交换,再将最大值与最后一个数进行交换,所以我们们第一步需要找到最小值与最大值。
思路:1:找到最小值
2:将最小值与第一位进行交换
3:找到最大值
4;将最大值与最后一位进行交换
【3】:流程图
【4】:调试过程:
(1):错误;将交换最小值与最大值同时放在最后
发现解果是错误的
进行调试:
发现如果将交换程序放在后面,那么交换数值就不正确,经过向同学请发现需要将判断语句分开放置。
正确结果:
第二次作业:
【1】:代码
#include <stdio.h> int main(void) { int n,k; scanf("%d %d",&n,&k); int i; int a[n]; for(i=0;i<n;i++) { scanf("%d",&a[i]); } int j; int num; int l=1; for(j=1;j<=k;j++) { for(i=1;i<n;i++) { if(a[i-1]>a[i]) { num=a[i-1]; a[i-1]=a[i]; a[i]=num; } } } for(i=0;i<n;i++) { if(i<n-1) { printf("%d ",a[i]); } if(i==n-1) { printf("%d",a[i]); } } }
【2】:解题思路:
这道题是冒泡排序法,我们需要的就是将相邻的两个数进行比较,如果前面的数比后面的大,那么就进行交换,通过一遍遍地交换,使输入的数据有序的排列/
(1):通过一个for循环嵌套,来比较前后两个数的大小并进行交换
(2):输出
【3】:流程图
【4】:调试过程:
【5】运行结果:
三:个人总结
最近几周学习的是有关数组的知识,从一开始的数组的定义,到后来的比较数组中数的大小,再到后来的对数组中的数进行排序,通过不断的学习,学到的就是这些知识,让我们对数组已经有了比较深刻的了解,为以后学习二维数组打好了基础。
四:代码字数,博客字数及点评
(1):柱状图:
(2):评价博客:
https://www.cnblogs.com/wangxiangbo/p/10165493.html