第2次作业
第2次作业:https://edu.cnblogs.com/campus/hljkj/Cprogramming_2018Autumn_CST2018_4/homework/2502
一.函数 6-1 统计个位数字
1.实验代码
1 int Count_Digit ( const int N, const int D ) 2 { 3 int i,j,b=0; 4 i=N; 5 if(i<0) 6 i=-i; 7 do{ 8 j=i%10; 9 if(j==D) 10 b++; 11 i/=10; 12 }while(i>0); 13 return b; 14 }
2.解题思路
(1)文字描述
第一步: 调用函数
第二步: 定义I,j,b 。将N的值赋给i。如果i是负数,则取它的绝对值。
第三步:进行do-while语句,将i除以10取余值赋给j;如果j等于求的那个数字,b的值增加,然后再将i除以10的值赋给i
第四步:返回
(2)流程图
3.本题调试过程碰到问题及解决办法
错误:调用函数后,应该返回调用它的地方,而不是直接结束,所以最后不能输入return 0;得到的结果不对
解决办法:改为return b;
二. 数组1 7-4 求一组数中的最大值和次最大值
1.实验代码
1 #include<stdio.h> 2 int main() 3 { 4 int i; 5 int max,cmax,a[10]; 6 for(i=0;i<10;i++) 7 { 8 scanf("%d ",&a[i]); 9 } 10 max=cmax=a[0]; 11 for(i=0;i<10;i++) 12 { 13 14 if(max<a[i]) 15 { 16 max=a[i]; 17 } 18 } 19 for(i=0;i<10;i++) 20 { 21 if((cmax<a[i])&&(a[i]<max)) 22 { 23 24 cmax=a[i]; 25 } 26 } 27 printf("max=%d,cmax=%d",max,cmax); 28 29 return 0; 30 }
2.解题思路
(1)文字描述
第一步:定义 max,cmax,a[10],i
第二步:运用for语句进行最大值的判断 如果max小于a[i],那么将a[i]赋给max,由此可得出最大值
第三步:运用for语句进行次大值的判断 如果cmax小于a[i]且a[i]小于最大值,那么将a[i]的值赋给cmax
第四步:输出最大值和次大值
(2)流程图
3.本题调试过程碰到问题及解决办法
错误:在进行次大值的判断时忘了加前提条件,即小于最大值
解决办法:判断次大值 if中输入的条件是 cmax<a[i]且a[i]<max
三. 数组2 7-4 选择法排序
1.实验代码
1 #include <stdio.h> 2 int main() 3 { 4 int i, j, min, temp, a[10]; 5 for(i = 0; i < 10; i++) 6 { 7 scanf("%d",&a[i]); 8 } 9 10 for(i = 0; i < 3;i++) 11 { 12 min=i; 13 for(j = i+1; j < 10; j++) 14 { 15 if(a[min] > a[j]) 16 { 17 min=j; 18 } 19 } 20 temp=a[i]; 21 a[i]=a[min]; 22 a[min]=temp; 23 24 } 25 for(i = 0; i < 10; i++) 26 printf("%5d",a[i]); 27 return 0; 28 }
2.解题思路
(1)文字描述
第一步:定义i, j, min, temp, a[10]
第二步:读取输入的数字
第三步:运用for语句设轮数和比较次数
第四步:最小值与前一位交换
第五步:输出结果
(2)流程图
3.本题调试过程碰到问题及解决办法
错误:题目要求每个数占5列,而此时的结果并没有体现这一点
解决办法: 将%d改为%5d
四.个人总结
(1) 这几周我学习了函数、数组(一维数组和二维数组)。
在课堂中学习到如何调用函数,什么是函数的参数,怎样确定函数的参数,什么是静态变量等函数相关知识;学系到了数组的概念,一维数组和二维数组,选择排序法等数组相关知识。
(2) 难点:对函数中参数的理解,数组的应用,字符串。
方法:回看PPT,与同学讨论,看书和视频理解。
五.互评和学习进度
初可欣同学:https://www.cnblogs.com/ckx001029-/p/10123682.html
邱作鹏同学:https://www.cnblogs.com/qzp123/p/10154564.html
袁于纯同学:https://www.cnblogs.com/reunion/p/10151920.html
学习进度: