第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

 

 

学习进度:

posted @ 2018-12-22 09:15  李靖靖  阅读(210)  评论(10编辑  收藏  举报