第14、15教学周作业
要求二
7-1 求最大值及其下标
一,实验代码
# include <stdio.h> int main(void) { int n, a[10], i, max, j; scanf("%d", &n); for(i=0; i<n;i++) { scanf("%d", &a[i]); } for(i=0; i<n;i++) { if(i==0) { max = a[i]; j = i; } if(max<a[i]) { max = a[i]; j = i; } } printf("%d %d\n", max, j); return 0; }
二,设计思路
1.根据题意定义变量,分别是整型变量i(下标),n(数组长度),j,max(最大值),a[10](数组);
2.理解题意,本题需要循环和判断两种结构,然后确定循环体和判断条件,例如:判断条件:max<a[i]),
循环体: for(i=0; i<n;i++)
{
scanf("%d", &a[i]);
}
3.先输入一个值,确定数组长度,然后输入几个数,在进行判断,即与最大值进行比较,最后进行循环,遍历数组找到最大值;
4.输出最大值及其下标。
三,程序框图
四,遇到的问题及解决方法
遇到的问题:编译没有错误,提交时总是提示答案错误,截图如下:
解决方法:先将错误提示翻译成汉语,然后再编译器上单步调试,再对比其他同学的答案,发现应将i=1,写成 i=0,改过来就对了。
五,运行结果图
六,提交列表
7-3 将数组中的数逆序存放
一,实验代码
#include <stdio.h> int main() { int i, n, swap, array[10]; scanf("%d", &n); for (i = 0; i < n; i++) scanf("%d", &array[i]); for (i = 0; i < n/2; i++) { swap = array[i]; array[i] = array[n-1-i]; array[n-1-i] = swap; } for (i = 0; i < n-1; i++) printf("%d ", array[i]); printf("%d\n", array[n-1]); return 0; }
二,设计思路
1.根据题意定义变量,分别是整型变量:i,n(数组长度),swap(中间变量),array[10](数组),
2.理解题意,本题需要用到循环结构,确定循环体,即数组中的数逆序存放的代码:
for (i = 0; i < n/2; i++)
{
swap = array[i];
array[i] = array[n-1-i];
array[n-1-i] = swap;
}
3.输入数字,确定数组长度,再输入几个数,确定数组长度,数组首尾位置的数互换,以此类推‘
4.输出新的数组。
三,程序框图
四,遇到的问题及解决方法
遇到的问题同上,错误截图如下:
解决方法:单步调试,发现循环体的确定有误,后又上网查找,改成
for (i = 0; i < n/2; i++)
{
swap = array[i];
array[i] = array[n-1-i];
array[n-1-i] = swap;
}
就对了。
五,运行结果图
六,提交列表
附加题:
7-3 求整数序列中出现次数最多的数
一,实验代码
#include<stdio.h> int main() { int i,j,n,max,x=0; scanf("%d",&n); int a[n],b[n]; for(i=0;i<n;i++) scanf("%d",&a[i]); for(i=0;i<n;i++) { b[i]=0; for(j=0;j<n;j++) if(a[i]==a[j]) b[i]++; } max=b[0]; for(i=1;i<n;i++) if(max>b[i]) { max=b[i]; x=i; } printf("%d %d",a[x],max); return 0; }
二,设计思路
1.根据题意定义变量,分别是整型变量i,j,n(定义数组长度),max(出现最多的次数),x(下标),a[i](数组),b[i](数组);
2.理解题意,本题需用循环,判断两种结构,并确定循环体和判断条件,例如:循环体:
for(i=0;i<n;i++)
{
b[i]=0;
for(j=0;j<n;j++)
if(a[i]==a[j])
b[i]++;
};
判断条件:max>b[i];
3.先输入一个数,确定数组长度,在输入几个数,即数组中的数,然后遍历数组,找到出现最多的数;
4.输出结果。
三,程序框图
四,遇到的问题及解决方法
问题截图如下:
问题原因:第一个for中,i=1.
问题原因:最后一个for循环中max>b[i].
解决方法:将上述的问题都改正后,在编译器上编译运行,结果正确后,提交就可以了。
五,运行结果图
六,提交列表
要求三
上传文件截图
GIT地址:https://git.coding.net/Hunjunxian/juhao.git
要求四
个人总结
1.学习了一维数组的定义,初始化,及一些经典的例子,如选择排序法,冒泡排序法等。
2.学习了二维数组的定义,赋初值,以及一些实例,如求矩阵每一行的和,求下三角,对角线两侧数据交换等。
3.收获:对数组有了更深入地了解,也学会了用程序坚决一些简单的问题,如求数组中的最大值及其下标。
4.难点:我认为对数组中的数进行排序是一个难点,尤其是冒泡排序法,不是很好理解,而且也不能很好的区分选择排序法和冒泡排序法。
5.对于难点问题,课下需要多看,多练习,个人认为若实在理解不了也可以直接背下来,以后也可以直接拿来用。
要求五
互评和学习进度
1.我评价的博客:
何宗彦:http://www.cnblogs.com/hezongyan/
陈雨秋:http://www.cnblogs.com/cyq66992152/
姚爽:http://www.cnblogs.com/yaoshuang/
2.学习进度条
日期 | 代码行数 | 时间1 | 博客字数 | 时间2 | 知识点 |
2017.12.2 | 230 | 约5hours | 约400 | 1.5hours | 数组的相关内容 |
3.折线图