C語言I博客作業11


問題 回答
這個作業屬於那個課程 C語言程序設計II
這個作業要求在哪里 作業要求
我在這個課程的目標是 完成作業,學會編程
這個作業在那個具體方面幫助我實現目標 在PTA練習中學會運用
參考文獻 百度百科

1.PTA實驗作業(20分/題)

1.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的平方根乘n的平方根,N是輸入的整數,定義一個10位的數組num用了收集n的值;n1,n2為輸入的取值范圍,i用於控制循環,cnt用於記數
數據處理:

int IsTheNumber ( const int N )
	定義整形變量i循環終止條件,n是N的平方根乘n的平方根
	定義數組num[10]並將數組初始化為0
	n=(int)sqrt(N)*(int)sqrt(N) /*利用函數sqrt()進行判斷是否為完全平方數*/
	if(n==N)                /*在完全平方數的基礎上進行判斷第二步*/
		while(n!=0)     /*檢驗數字是否相同*/
			for(i=0;i<10;i++)
				if(n%10==i)
					num[i]累加
					if(num[i]==2)   /*判斷是否有相同的數字*/
						返回值為1	
					end if
				end if
			end for
			n←n/10
		end whlie
		返回值為0	
	end if
	else 
		返回值為0 結束

1.1.2實驗代碼截圖

1.1.3 造測試數據

輸入數據 輸出數據 說明
105 500 cnt = 6 在題中的數據
0 100 cnt = 1 在題中數據的左側
500 1000 cnt = 2 在題中數據的右側

1.1.4 PTA提交列表及說明

提交列表說明:
編譯錯誤:開始忘了把數組初始化。
編譯錯誤:中英文符號忘記換了

1.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<ab≤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 數據處理

數據表達:定義了整形變量a,b為輸入的范圍,自定義函數is並定義了整形變量i,sum,其中sum為number的每一位相加的和,i為返回值;
自定義函數count_sum並定義了整形變量count,sum,i,其中count為記錄滿足要求的個數,sum為每一個滿足條件的數的和,i用來控制循環。
數據處理:

int is(int number)
    定義整型變量c,d
    定義整數變量sum並賦值為0
    while(number!=0)/*number是否等於0*/
        c←number%10
        sum←sum+c
        number←number/10
    end while
    if(sum==5)  /*判斷各位數之和是否等於0*/
        返回值為1
    else
        返回值為0
    end if-else
end
void count_sum( int a, int b )
    定義整型變量i為控制循環
    定義整型count用於記錄滿足條件數的個數,sum1為滿足條件的每一個數累加的和
    for(i=a; i<=b; i++)  /*在區間a-b中循環尋找各位數字之和是5的數*/
        if(is(i))
            count累加
            sum1←sum1+i
        end if
    end for
    輸出count = , sum = 
end

1.2.2 實驗代碼截圖

1.2.3 造測試數據

輸入數據 輸出數據 說明
104 999 104 is counted.
count = 15, sum = 3720
題中數據
0 103 count = 6, sum = 165 在題中數據的左側
1000 9999 count = 35, sum = 73885 在題中數據的右側

1.2.4 PTA提交列表及說明

提交列表說明:
Dvc++上調試編譯錯誤
編譯錯誤:錯把number=number/10;打成number=number%10;

2.代碼互評(5分)

同學代碼截圖

自己代碼截圖

算法大體相同,我的n是兩個根號下N相乘,他用m等於根號下n,m乘m來代替我的n,我這樣少一個變量。

同學代碼截圖

自己代碼截圖


該同學使用了自定義函數來判斷素數,而我用的常規方法,在for循環中判斷素數
在判斷N是否滿足條件上,他的判斷語句是(b[a[i]]1),而我的判斷語句是滿足s[i]2,返回1,滿足n/=10,返回0。

3.學習總結(15分)

3.1 學習進度條(5分)

周/日期 這周所花的時間 代碼行 學到的知識點簡介 目前比較迷惑的問題
第四周 7 120 學會了基本結構
第五周 8 140 學會了scanf和printf
第六周 10 170 如何用 MinGW-w64 來編譯C程序
第七周 17 240 運用if,else語句完成數學問題 不太熟練if-else語句
第八周 20 344 運用for循環語句 對char的用法還不怎么會
第九周 23 350 學習了如何使用自定義函數 自定義函數還不太會
第十周 24 410 熟悉並掌握多分支結構、字符型數據類型和邏輯運算符結構 各個運算符的意思還不太理解
第十一周 22 430 熟悉並掌握分支結構switch語句 對於&&和||的用法不熟練
第十二周 29 410 學會使用while和do-while結構解決問題 嵌套語句用不熟練
第十三周 24 455 嵌套循環 continue語句和break語句 新學的語句用不熟練
第十四周 26 480 了解了數組 數組不熟練

3.2 累積代碼行和博客字數(5分)

3.3 學習內容總結和感悟(5分)

3.3.1 學習內容總結

3.3.2 學習體會

作業難度依次再增加,自己的時間也木得安排好。學習了函數的用法,類型,變量的用法及類型,自學能力很重要,身邊優秀的同學很多,多向他們學習。


免責聲明!

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



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