C語言I博客作業09


1.作業頭

這個作業屬於哪個課程 班級的鏈接
這個作業要求在哪里 作業要求鏈接
這個作業的目標 掌握自定義函數的各種用法
學號 20208945

1.PTA實驗作業

1.1 題目名1
PTA 6-1 統計某類完全平方數
本題要求實現一個函數,判斷任一給定整數N是否滿足條件:它是完全平方數,又至少有兩位數字相同,如144、676等。

函數接口定義:
int IsTheNumber ( const int N );
其中N是用戶傳入的參數。如果N滿足條件,則該函數必須返回1,否則返回0。

裁判測試程序樣例:

#include <stdio.h>
#include <math.h>

int IsTheNumber ( const int N );

int main()
{
    int n1, n2, i, cnt;

    scanf("%d %d", &n1, &n2);
    cnt = 0;
    for ( i=n1; i<=n2; i++ ) {
        if ( IsTheNumber(i) )
            cnt++;
    }
    printf("cnt = %d\n", cnt);

    return 0;
}

/* 你的代碼將被嵌在這里 */

1.1.1數據處理

數據表達:讓n=N,b=一個數字每位上的數,m=一個數開根號后的值,並且定義了一個int型的大小為10的數組p,同時該數組所有的元素均被初始化為0。
         偽代碼如下: int n=N;
                     int b;
                     int p[10]={0};
                     int m=sqrt(n);
數據處理:利用while循環將一個數的每位數字上的值求出來,並且相同的數值用數組p儲存,然后用for鑲套if語句判斷,最后解決問題。
         偽代碼如下: if(m*m==n){
                       while(n!=0){
                             b=n%10;
                             p[b]++;
                             n/=10;
                             }
                     for(int i=0;i<=9;i++){
                          if(p[i]>1)
                        return 1;
                        }
                    }

1.1.2實驗代碼截圖

1.1.3 造測試數據

輸入數據 輸出數據 說明
105 500 cnt = 6 成功輸出
138 354 cnt=2 成功輸出

1.1.4 PTA提交列表及說明

說明:1.答案錯誤:while語句判斷條件弄錯了,沒有處理題目后面的要求。
     2.答案正確:進行了改正。

1.2 題目2
PTA作業6-2 統計各位數字之和是5的數
本題要求實現兩個函數:一個函數判斷給定正整數的各位數字之和是否等於5;另一個函數統計給定區間內有多少個滿足上述要求的整數,並計算這些整數的和。

函數接口定義:
int is( int number );
void count_sum( int a, int b );
函數is判斷number的各位數字之和是否等於5,是則返回1,否則返回0。

函數count_sum利用函數is統計給定區間[a, b]內有多少個滿足上述要求(即令is返回1)的整數,並計算這些整數的和。最后按照格式

count = 滿足條件的整數個數, sum = 這些整數的和
進行輸出。題目保證0<a≤b≤10000。

裁判測試程序樣例:

#include <stdio.h>

int is( int number );
void count_sum( int a, int b );

int main()
{
    int a, b;

    scanf("%d %d", &a, &b);
    if (is(a)) printf("%d is counted.\n", a);
    if (is(b)) printf("%d is counted.\n", b);
    count_sum(a, b);

    return 0;
}

/* 你的代碼將被嵌在這里 */

1.2.1 數據處理

數據表達:int is(int number)中定義a為數的位數數值,s為各位數數值之和。
        代碼如下:int a,s=0;a=number%10;s=a+s;
數據處理:函數is判斷number的各位數字之和是否等於5,是則返回1,否則返回0。函數count_sum利用函數is統計給定區間[a, b]內有多少個滿足上述要求(即令is返回1)的整數,並計算這些整數的和。
        代碼如下:
int is(int number)
{
	int a,s=0;
	while(number!=0)
	{
		a=number%10;
		number=number/10;
		s=a+s;
	}
	if(s==5)
	return 1;
	else
	return 0;
}
void count_sum(int a,int b)
{
	int m=0,sum=0;
	for(int i=a;i<=b;i++)
	{
		if(is(i)!=0)
		{
		m++;
		sum=sum+i;
		}
	}

1.2.2 實驗代碼截圖

1.2.3 造測試數據

輸入數據 輸出數據 說明
104 999 104 is counted. count = 15, sum = 3720 成功輸出正確結果
399 480 count = 2, sum = 811 成功輸出正確結果

1.2.4 PTA提交列表及說明

說明:1.編譯錯誤:定義了兩個函數銜接有問題,int is(int number)中沒有定義a,void count_sum(int a,int b)中調用int is(int number)錯誤。
     2.答案正確:改正后正確。

2.代碼互評
找2份同學代碼,和自己代碼比較,建議互評代碼盡量找代碼風格差異較大。

PTA作業6-1
同學代碼截圖

同學代碼截圖

自己代碼截圖

對比說明:同學的代碼和我的代碼都有共同之處都運用了for語句嵌套循環,都使用了數組計數的方法,雖然我做出來了,但我花費的時間非常多,我還是不能理解數組。

3.學習總結

3.1 學習進度條

周/日期 這周所花的時間 代碼行 學到的知識點簡介 目前比較迷惑的問題
第八周10.19-10.25 8 5 如何打開編譯器 我該怎么學習c語言
第九周10.26-11.1 10 54 學會如何提問 c語言怎么才能學好
第十周11.2-11.7 48 138 for語句,數據的類型 為什么作業這么麻煩
第十一周11.8-11.14 51 256 for語句的應用,如何自己定義函數 怎樣去理解題意,自己定義的函數如何符合題意去調用
第十二周11/15-11/21 49 528 學習了分支結構,switch語句,以及簡單數組定義 如何正確的理解題目意思,怎樣解讀問題
第十三周11/22-11/28 50 656 學習了分支結構,switch語句,以及簡單一維數組 怎樣用所學的知識更簡單的解決問題
第十四周11/29-12/5 56 689 學習了新的循環結構while語句 怎樣用所學的知識更簡單的解決問題
第十五周12/6-12/12 78 1026 學習了鑲套循環break,continue 為什么老師布置的作業這么難
第十五周12/13-12/19 80 1268 學習了函數的各種定義及其用法 為什么老師布置的作業這么難

3.2 累積代碼行和博客字數
1.累積代碼行:4973
2.博客字數:26405

3.3 學習內容總結和感悟

3.3.1 學習內容總結

3.3.2 學習體會
這一周的學習體會,這一周學習真的累,臨近期末了,為什么作業這么難,考試這么難的話我真的不行了,平常作業還可以問問室友,查查資料,用時間慢慢把作業磨出來,可如果考試這樣的話……唉,c語言學習全在於努力碼代碼呀,用時間去堆積才能得到提升,繼續努力吧。


免責聲明!

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



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