第四次作业
作业要求:https://edu.cnblogs.com/campus/hljkj/CS201801/homework/2523
观看mooc:
1 视频截图
2 通过观看视频我明白了
1)数组作为函数参数时,往往必须再用另一个参数来传入数组的大小。
2)判断素数还可以构造素数表来解决。
3)在代码中加大括号可以用来调试。
3. 对于视频中那些关于指针的还不太明白,并且对素数的相关程序掌握的还不够熟练。
7-2 求最大值及其下标 (20 分)
本题要求编写程序,找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)。
输入格式:
输入在第一行中给出一个正整数n(1<n≤10)。第二行输入n个整数,用空格分开。
输出格式:
在一行中输出最大值及最大值的最小下标,中间用一个空格分开。
试题代码
#include<stdio.h> int main(void) { int n,i,index; int a[10]; index = 0; scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d",&a[i]); } for(i=0;i<n;i++) { if(a[0]<a[i]) { a[0] = a[i]; index=i; } } printf("%d %d",a[0],index); return 0; }
解题思路
1 定义n,i,index; n是用户输入的整数的个数。
2 输出最大值与它对应的下标。
3 将最大值与第一个数交换,输出交换后的n个数。
程序流程图
总结:
此题所遇到的问题:在数组中,要注意i是从0开始的。
运行结果
调试截图
7-2 输出所有大于平均值的数 (15 分)
本题要求编写程序,将输入的n个整数存入数组a中,然后计算这些数的平均值,再输出所有大于平均值的数。
输入格式:
输入在第1行中给出一个正整数n(1≤n≤10),第2行输入n个整数,其间以空格分隔。题目保证数据不超过长整型整数的范围。
输出格式:
输出在第1行给出平均值,保留2位小数。在第2行输出所有大于平均值的数,每个数的后面有一个空格;如果没有满足条件的数,则输出空行。
如果输入的n不在有效范围内,则在一行中输出"Invalid."。
试题代码
#include<stdio.h> int main(void) { int i,n; double average,sum=0; scanf("%d",&n); int a[n]; sum=0; if(n < 1||n>10){printf("Invalid.");} else{ 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]); } } printf("\n"); return 0; }
解题思路
1定义变量 i,n, average,sum;average存放平均值,sum保存数据之和。
2 利用for循环求平均值。
3逐个与平均值比较,输出大于平均值的数。
程序流程图
运行结果
调试截图
个人总结:
这周学习了数组,明白了使用数组可以让一批相同类型的变量使用同一个数组变量名,用下标来相互区分,优点是表达简洁,可读性好,便于使用循环结构,但使用时一定要注意是从a[0]开始。通过这周努力的学习,我相信自己一定可以更好地学习c语言了。
学习进度
点评作业:
1 https://www.cnblogs.com/zst1/p/10133338.html
2 https://www.cnblogs.com/zhaoxuan/p/10165311.html
3https://www.cnblogs.com/mayijing/p/10158728.html