第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

 

 

學習進度:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM