第四次作业
作业要求:https://edu.cnblogs.com/campus/hljkj/CS201802/homework/2522
观看mooc:
1.我观看了3个视频:数组,二维数组和数组运算,搜索,排序初步
2.我知道了
1)数组一旦创建,就不能更改大小
2)a[0]可以存在但是无用,a[3][5]为3行5列的矩阵
3.对于素数的相关程序掌握不熟,还有对于素数的判断
第十三次作业:7-2 输出所有大于平均值的数
#include <stdio.h> int main() { int n,i; double average,sum=0; scanf("%d",&n); int a[n]; if(n>=1&&n<=10){ for(i=0;i<n;i++){ scanf("%d",&a[i]); sum=sum+a[i]; } average=sum/n; printf("%.2f\n",average); for(i=0;i<n;i++){ if(a[i]>average) printf("%d ",a[i]); } } else { printf("Invalid."); } printf("\n"); return 0; }
解题思路:
1.定义变量n,i,sum,average
2.输入数字个数,定义数组a[n],n不再有效范围输出Invalid.
3.输入数据,计算相加之和,和平均数
4.比平均数大的a[i]输出,小于等于平均数不输出
流程图:
运行结果:
运行结果是一堆不相关的数字,然后我又返回去读题,觉得可能是定义错了,将a[i]从int改为long
运行结果还是一堆不相关的数字,然后我发现我没有输出平均数,加上了输出平均数
因为平均数输出并没有问题,所以我将断点设在了if语句
结果c++并没有进入if语句中直接就return 0,然后突然发现if语句实际上只会应用一次,要把它放在for循环中
输出的值是对的,但是不应该输出Invalid.然后我发现它的输出条件错误,同学又告诉我输入int a[n]不是a[i],我对这些地方进行了改正
结果正确,在PTA中也显示正确。
第十四次作业:7-2 求最大值及其下标
#include <stdio.h> int main () { int n,max,index=0; scanf("%d",&n); int a[n],i; for(i=0;i<n;i++){ scanf("%d",&a[i]); } max=a[0]; for(i=0;i<n;i++){ if(max<a[i]){ max=a[i]; index=i; } } printf("%d %d",max,index); return 0; }
解题思路:
1.定义变量n,max,index
2.输入n后,定义a[n],max=a[0]
3.如果max<a[i],max=a[i],同时index=i依次循环
4.输出max index
流程图:
运行结果:
运行结果是正确的,在PTA上却报错,然后我在循环处设置了断点
调试也没有出错,然后我认真地查看了代码,发现有两行代码的位置错误
答案正确
本周总结:
1.本周学习了数组,函数的相关计算,让我更加充分地掌握了循环的应用
2.数组的循环条件和函数的定义对我来说有些困难,有时候无从下手;后来通过询问同学,在网上查阅资料解决
折线图:
作业点评: https://www.cnblogs.com/xiaofengqaq/p/10115956.html
https://www.cnblogs.com/kaitbkleyue/p/10164062.html
https://www.cnblogs.com/0224ming/p/10164004.html