第四次作业
作业要求:https://edu.cnblogs.com/campus/hljkj/CS201801/homework/2523
我观看了四个视频,通过观看视频我学习到了如何定义数组,怎样给数组中的元素排序,逆序排列和顺序排列,但是针对于冒泡排序,较大的数排前面和较小的数排后面这两种情况给我的感觉是一样的,也就是一个程序就看可以完成,我并没有想出两种方法(编程想法)
第十三次作业:
题目7-2 输出所有大于平均值的数
#include <stdio.h>
int main(void)
{
int a[10],total_times;
int i=0;
double sum=0,average=0;
scanf("%d",&total_times);
if(total_times<=0||total_times>10){
printf("Invalid.");
return 0;
}
for(i=0;i<total_times;i++){
scanf("%d",&a[i]);
sum=sum+a[i];
}
average=sum/total_times;
if(total_times==1){
printf("%.2lf ",average);
return 0;
}
printf("%.2lf ",average);
for(i=0;i<total_times;i++){
if(a[i]>average){
printf("%d ",a[i]);
}
}
int main(void)
{
int a[10],total_times;
int i=0;
double sum=0,average=0;
scanf("%d",&total_times);
if(total_times<=0||total_times>10){
printf("Invalid.");
return 0;
}
for(i=0;i<total_times;i++){
scanf("%d",&a[i]);
sum=sum+a[i];
}
average=sum/total_times;
if(total_times==1){
printf("%.2lf ",average);
return 0;
}
printf("%.2lf ",average);
for(i=0;i<total_times;i++){
if(a[i]>average){
printf("%d ",a[i]);
}
}
return 0;
}
}
解题思路:
第一步,输入总循环次数,判断循环次数是否在要求范围内
第二步,输入数值,并利用sum求出总和
第三步,求出average平均数
第四步,判断各个数值与平均数的大小,输出大于平均数的数值与平均数
流程图:
出现问题:
当total_times=0时,输出格式错误
错误原因是total_times=0时,输出有两个回车,而我的程序只有一个回车
所以,在程序中插入
if(total_times==1){ printf("%.2lf ",average); return 0; }
使其输出结果时带有两个回车
第十四次作业 7-5 将数组中的数逆序存放
#include <stdio.h> int main(void) { int i1=0,i2=0,times=0,a[10],b[10]; scanf("%d",×); i2=times-1; for(i1=0;i1<times;i1++,i2--){ scanf("%d",&a[i1]); b[i2]=a[i1]; } for(i2=0;i2<times;i2++){ if(i2<i1-1){ printf("%d ",b[i2]); } else{ printf("%d",b[i2]); } } return 0; }
解题思路:
第一步,输入要数值的个数
第二步,输入第一组数组的数值,并令第二组数组倒序令其赋值
第三步,正序输出第二组数组
流程图:
遇到的问题:
在数组赋值时,并没有达到预期效果,即a[0]=b[i-1],a[1]=b[i-2]
因为两个数组使用了同一个计数器,使得a[0]=b[0],所以,对b[i]单独使用一个计数器
总结:
学习数组之后,数组对于处理问题有很大帮助,但要注意计数器,计数器可能会影响数组对于数值的储存和调用
评论链接:
https://www.cnblogs.com/moyoujiang/p/10166337.html