第二次作业
---恢复内容开始---
计算机18秋-函数 6-1 统计个位数字
1.实验代码
1 int Count_Digit ( const int N, const int D ) 2 { 3 int a,b,i=0; //定义变量 4 a=N; 5 if(a<0) 6 a=-a; //将输入的数字变为正数 7 do{ 8 b=a%10; //a与10取余得到个位上的数 9 if(b==D) 10 i++; //如果个位数字等于D,计数加一 11 a/=10; //将a除10继续验证下一位数字
12 }while(a>0); //如果a大于0则继续执行循环 13 return i; 14 }
2 解题思路
(1)描述题目算法
第一步:定义变量,将输入数字赋值给a
第二步:如果出现负数,将负数变为正数
第三步:执行循环计算数字D出现的次数
第四步:输出结果
(2)流程图
3.本题调试过程碰到问题及解决办法
3.本题调试过程碰到问题及解决办法
错误原因:提交时提交了整个程序
解决方法:经过反复的测试发现只提交函数部分
编译器设置断点、单步调试的界面截图
计算机18秋-数组1 7-1 交换最小值和最大值
1.实验代码
#include <stdio.h> int main() { int N,i,x,a[10],b,c,min,max; //定义变量 scanf("%d",&N); //读取数字 for(i=0;i<N;i++) { scanf("%d",&a[i]); //执行循环存入数组 } min=a[0]; //使最小值等于数组的第一个数 for(i=0;i<N;i++) { if(a[i]<=min) { min=a[i]; x=i; } //找出数组中的最小值 } c=a[0]; a[0]=min; a[x]=c; //最小值与数组第一个数交换 max=a[0]; for(i=0;i<N;i++) { if(a[i]>=max) { max=a[i]; x = i; } //找出数组中最大值 } b=max; a[x]=a[N-1]; a[N-1]=b; //将最大值与数组最后一个数字交换 for(i=0;i<N;i++) { printf("%d ",a[i]); //循环输出数组 } return 0; }
2 解题思路
(1)主要描述题目算法
第一步:定义变量
第二步:读取输入的数字
第三步:找到数组中最小值并且与数组第一位交换
第四步:找到数组中最大值并且与数组最后一位交换
第五步:输出数组
(2)流程图
3.本题调试过程碰到问题及解决办法
错误原因:未考虑数组的容量大小导致最后一位数字未存入
解决方法:反复调试找到错误,将数组改为a[10]
编译器设置断点、单步调试的界面截图
计算机18秋-数组2 7-4 选择法排序
#include <stdio.h> int main() { int i, j, min, temp, a[10]; //定义变量 for(i = 0; i < 10; i++) { scanf("%d",&a[i]); //读取输入数字 } for(i = 0; i < 3;i++) //循环的轮数 { min=i; for(j = i+1; j < 10; j++) //比较次数 { if(a[min] > a[j]) { min=j; //找出最小值 } } temp=a[i]; a[i]=a[min]; a[min]=temp; //将最小值与前一位交换 } for(i = 0; i < 10; i++) printf("%5d",a[i]); //输出结果 return 0; }
2 解题思路
(1)描述题目算法
第一步:定义变量输入数据
第二步:进行三轮选择排序
第三步:输出结果
(2)流程图
3.本题调试过程碰到问题及解决办法
程序运行结果截图
编译器设置断点、单步调试的界面截图
个人总结
(1)总结这几周你学习内容有哪些收获?
这几周主要学了数组,学会了数组的输入与输出
学会了两种排序发,冒泡排序和选择排序
还有一些数组的知识
(2)总结这几周所学内容中难点对此做的措施去克服困难
难点是两种排序法冒泡排序和选择排序
措施:理解老师的程序,自己反复思考
反复练习,逐渐的理解两种方法
互评和学习进度
表格和折线图
周数 | 此周代码行数/行 | 码代码所用时长/h | 所写博客字数/字 | 写博客所用时长/h | 所涉及的知识点 |
第14周 | 2000 | 12 | 0 | 0 | 有关简单函数的知识 |
第15周 | 2100 | 13 | 0 | 0 | 有关较深奥函数的知识 |
第16周 | 2500 | 14 | 0 | 0 | 有关简单数组的知识 |
第17周 | 2500 | 13 | 900 | 5 | 加深对数组的知识 |