第二次作业
作业要求:【https://edu.cnblogs.com/campus/hljkj/Cprogramming_2018Autumn_CST2018_4/homework/2502】
一. 函数中题目6-1 统计个位数字
1.实验代码
int Count_Digit ( const int N, const int D ) { if(N==D) { return 1; } int count=0; int n; if(N>=0){ n=N;} else{ n=-N;} while(n>0){ if(n%10==D){ count++; } n/=10; } return count; }
2.设计思路
(1)文字描述
第一步:先考虑当输入的数为个位时的可能
第二步:然后再定义一个中间变量,并且定义函数count的初始值为0
第三步:要考虑所输入的数值的政正负,并且通过中间变量将其全部转化为正数
第四步:然后用这个整数除以10取余数,每有一个余数均在D上加1
第五步:然后再让这个数除以10,循环上一步的动作
第六步:最后return这个函数
(2)流程图
3.错误提示
最开始没有考虑当输入的数值为个位时的情况
设置断点、单步调试
4.解决方法
(1)思考后得知,当输入的数值为个位数时(即N=D)直接输出1
二. 循环1中题目7-3 最高分,最低分,平均分
1.实验代码
#include<stdio.h> int main() { int a[6]; int i,max,min,avg; for(i=0;i<=5;i++){ scanf("%d",&a[i]); } avg=max=min=a[0]; for(i=1;i<=5;i++) { if(a[i]<min) { min=a[i]; } if(a[i]>max) { max=a[i]; } avg=avg+a[i]; } avg=avg/6; printf("max:%d\n",max); printf("min:%d\n",min); printf("avg:%d\n",avg); return 0; }
2.设计思路
(1)文字描述
第一步:先定义一个数组(a[6])
第二步:然后分别输入6个数
第三步:定义最高分,最低分,平均分的初始值
第四步:在for循环中将6个数中的每个数分别与最低分的初始值比较,取出最低分
第五步:在for循环中将6个数中的每个数分别与最高分的初始值比较,取出最高分
第六步:计算平均分
第七步:分别输出最高分,最低分,平均分的值
(2)流程图
3.错误提示
最开始没有考虑到定义最高分,最低分,平均分的初始值
设置断点、单步调试
4.解决方法
(1)思考后得知,在前面要定义最高分,最低分,平均分的初始值(即
avg=max=min=a[0];
)
三. 数组2中题目7-1 简化的插入排序
1.实验代码
#include<stdio.h> int main() { int n, x, i, j, a[11]; scanf("%d",&n); for(i=0;i<n;i++){ scanf("%d",&a[i]); } scanf("%d",&x); i=0; while(a[i]<x && i<n){ i++; } for(j=n-1;j>=i;j--){ a[j+1]=a[j]; }a[i]=x; for(i=0;i<n+1;i++){ printf("%d ",a[i]); } return 0; }
2.设计思路
(1)文字描述
第一步:先定义一个数组(a[11],具体由n决定)
第二步:然后分别输入n个数
第三步:然后输入打算插入的数
第四步:先将i从新定义回0
第五步:然后在已有的数组中插入一个新的数值顺便排个序,如:
while(a[i]<x && i<n){ i++; } for(j=n-1;j>=i;j--){ a[j+1]=a[j]; }a[i]=x;
第六步:最后在for循环中分别输出a[i]
(2)流程图
3.错误提示
设置断点、单步调试
4.解决方法
查阅了部分资料后,先将一个新的数插入进数组中,然后在给这个数赋值,并且在排序时运用了while的结构(重点复习了一下while)
四.总结
1.总结
a.所学内容
(1)有关数组与函数的一些必要步骤
(2)有关while的一些知识和数组中的插入以及输出一个数组中重复出现最多次数的数值和次数
b.遇到难点
(1)如何把一个数值插入数组
(2)如何运用函数解决问题
c.解决方法
(1)找到所需要用到函数的部分
(2)先将一个新的数组部分插入到你要加入的数组中,然后再给那个数组部分赋值
(3)定义两个数组,并让其中一个数组定义数值出现的次数(注意要定义各个数值的初始值为0)
2.点评
3.表格
周数 | 此周代码行数/行 | 码代码所用时长/h | 所写博客字数/字 | 写博客所用时长/h | 所涉及的知识点 |
第14周 | 3000 | 13.5 | 0 | 0 | 有关简单函数的知识 |
第15周 | 3300 | 15 | 0 | 0 | 有关较深奥函数的知识 |
第16周 | 3600 | 16 | 400 | 1.5 | 有关简单数组的知识 |
第17周 | 3500 | 15.5 | 650 | 3.5 | 加深对数组的知识 |
折线图