本次作业要求:https://edu.cnblogs.com/campus/hljkj/Cprogramming_2018Autumn_CST2018_4/homework/2502
一:函数6-1 统计个位数字:
实验代码:
int Count_Digit ( const int N, const int D ) { int i,j,b=0; i=N; if(i<0) i=-i; do { j=i%10; if(j==D) b++; i=i/10; }while(i>0); return b; }
解题思路:判断每一位数字是否与给出的数的个位数相同并统计其出现次数。
步骤一:输入要处理的数字i,j为存放个位的数,b初始值为0。
步骤二:判断i的正负当i<0时,执行i=-i。
步骤三:执行循环体语句数字对10取余若得到需得的末尾数则b=b+1。数字/10则得到每一位。
步骤四:判断得到的i>0?若是执行循环,反之返回函数b。
流程图:
单步调试:
本题调试过程碰到问题及解决办法:无
运行成功截图:
二:数组一7-4交换最小值和最大值
实验代码:
#include<stdio.h> int main() { const int N=10; int i, x, n; int min, max; int p, q, temp; int a[N]; scanf("%d", &n); for (i = 0; i < n; i++) { scanf("%d", &a[i]); } min = a[0]; for (i = 0; i < n; i++) { if (min > a[i]) { min = a[i]; p = i; } } temp = a[0]; a[0] = a[p]; a[p] = temp; max = a[0]; for (i = 0; i < n; i++) { if (max < a[i]) { max = a[i]; q = i; } } temp = a[n - 1]; a[n - 1] = a[q]; a[q] = temp; for (i = 0; i < n; i++) { printf("%d ", a[i]); } return 0; }
解题思路:输出最小值和它的下标,将最小值与第一个数交换,输出交换后的n个数。在从中输出最大值和他的下标,将最大值与最后一个数交换。
步骤一:定义一个数组(数组长度),以及变量。
步骤二:读入数组,将其初始化,假设a[0]是最小值,即下标为0的元素最小。
步骤三:如果a[i]比假设的最小值还小,再假设a[i]是新的最小值,即下标为i的元素最小。然后将最小值和第一个数交换。
步骤四:在剩余的n-1个数中按照与寻找最小值的方法寻找最大值,并与最后一个数交换。
流程图:
单步调试:
本题调试过程碰到问题及解决办法:无
运行成功截图:
三:数组2 7-4选择排序法
实验代码:
#include <stdio.h> int main() { int i; int a[10]; int index,temp; int k; for(i=0;i<10;i++) { scanf("%d",&a[i]); } for(k=0;k<3;k++) { index = k; for(i=k;i<10;i++) { if(a[i]<a[index]) { index = i; } } temp = a[index]; a[index]=a[k]; a[k]=temp; } for(i=0;i<10;i++) { printf("%5d",a[i]); } }
解题思路:输入一个正整数n,在输入n个整数,将他们从小到大排序后输出。
在未排序的n个数中找到最小数,将它与a[0]交换,在剩余未排序的n-1个数中找到最下数将它与a[1]交换。以此类推.....
for(k=0;k<3;k++)对轮数进行控制。
步骤一:定义一个整形数组,将输入数依次赋给数组a的n个元素。
步骤二:对n个数排序, index存放最小值的下标,利用for循环寻找最小值的下标,最小元素与下标k的元素交换。
步骤三:输出n个数组的值。
流程图:
单步调试:
本题调试过程碰到问题及解决办法:要求排序进行三轮,但写成了for(k=0;k<4;k++),此处or(k=0;k<n-1;k++)使得进行了四轮
解决方案,重新进行调试,更改。
个人总结:
(1):本周做了很多练习,加强了对语句的了解,也基本达到了熟练的程度,然后就是对一维数组的练习,二维数组也了解了一些。课下时间做了书上的习题,从程序段得出一个结果,或者填写程序。
解决数组问题时候数组的定义十分重要,数组名的命名规则与变量的命名相同,但在同一过程中数组名不能与变量名同名否则会出错,下标的最大值和最小值分别为下界和上界,元素在中连续。
(2):数组的学习还是难点,当你真正需要运用的时候,却不知应如何调用,书上的习题有的做不明白,不知道怎样得出的结果。
解决方法:上网查找,反复练习理解。
互评和学习进度:
王恩临:https://www.cnblogs.com/wangtiezhu666/p/10127789.html
周文豪:https://www.cnblogs.com/promise-781465023/p/10133773.html
闫慧欣:https://www.cnblogs.com/yanhuixin/p/10158447.html
学习进度:
表格:
折线图: