作业要求: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