| 問題 | 答案 |
|---|---|
| 這個作業屬於在哪個課程 | C語言程序設計II |
| 這個作業要求在哪里 | <a href="http://edu.cnblogs.com/campus/zswxy/CST2019-1/homework/10132" |
| target="_blank">C語言I作業11 | |
| 我在這個課程目標是 | 學好C語言,為后面學習打好基礎 |
| 這個作業具體在哪里方面幫助我 | 掌握各種類型函數的定義、調用和申明,熟悉變量的作用域、生存周期和存儲類型 |
| 參考文獻 | <a href="https://baidu.com"target="_blank">百度 , <a href="https://www.cnblogs.com/pengchen511/p/10564067.html"target="_blank">C語言作業評價標准 |
一:PTA實驗作業

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;
}
/* 你的代碼將被嵌在這里 */
輸入樣例:
105 500
輸出樣例:
cnt = 6
1.1.1數據處理
1.數據處理:用了整形變量n,i,a;雙精量變量m;n,m是題目要求兩位相同數,i是循環變量,a是完全平方數
2.數據表達:
定義整形變量n,i,a;雙精量變量m
int num[10]={0};
n=(int) sqrt(N);
m=sqrt(N);
a=N; //判斷完全平方數
if(a=m*n) then
while(a)
do
for(i=0;i<=9;i++) // 這里的for循環起到了一個類似於計數器的作用,t依托數組通過數組從0-9的下標對應與輸入數N的個十百位.在用下標對應的數計數中出現w數字的次數
end
if(a%10==i)
then
num[i]+=1;
if (num[i]>=2)
return 1//滿足返回1
}
}
a=a/10//用a代替M是因為const是一個C語言的關鍵字,它限定一個變量不允許被改變;用一個a代替來解決這個問題
}
return 0//不是返回0
1.1.2PTA實驗貼圖

1.1.3造數據測試
| 輸入數據 | 輸出數據 | 說明 |
|---|---|---|
| 144 676 | cnt=6 | 隨機 |
| 220 990 | cnt=6 | 隨機 |
| 400 800 | cnt=4 | 隨機 |
1.1.4PTA提交列表說明

1.答案正確:這題寫了蠻久,放在Dev上運行了
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<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;
}
/* 你的代碼將被嵌在這里 */
輸入樣例:
104 999
輸出樣例:
104 is counted.
count = 15, sum = 3720
1.2.1數據處理:
1.數據處理:這題是要寫兩個函數,一個判斷各位數字之和是否等於5,一個利用函數is統計給定區間[a, b]內有多少個滿足上述要求(即令is返回1)的整數,並計算這些整數的和。第一個函數用了整形變量s,t;s是求各位數字之和,t是各位數字商,第二個函數用了整形變量sum,count,i;sum用來統計滿足數字之和,count是統計給定區間[a, b]內有多少個,i是循環變量
2.數據表達:
定義變量s,t
while(n!=0)
do
t=n%10//求余
n=n/10
s=s+t//求和
if(s==5)//判斷各位數字之和是否等於5
return 1;
else
return 0;
}
void count_sum( int a, int b )
{
int sum=0,count=0,i;
for(i=a;i<=b;i++)//循環
do
if(is(i)){
then
count=count+1//統計給定區間[a, b]內有多少個數
sum=sum+i//統計滿足數字之和
1.2.2PTA實驗貼圖

1.2.3造數據測試
| 輸入數據 | 輸出數據 | 說明 |
|---|---|---|
| 104 999 | ![]() |
隨機 |
| 203 666 | ![]() |
隨機 |
| 253 777 | ![]() |
隨機 |
1.2.4PTA提交列表說明

1.編譯錯誤:雙引號打錯
2.多種錯誤:表達式寫錯了,循環語句錯誤
3.編譯錯誤:沒有空格
二:代碼互評
同學代碼1


同學代碼2

自己代碼

相互對比
1.第一個同學用的數組方法來寫這題,中間還來了for語句,表達式較多
2.第二個同學用的是do-while循環語句來寫這題
3.我的方法和第二位差不多,但我用的是while循環語句
4.感覺第一種方法復雜一點,但是學習了新的知識點,是很有幫助的
三:學習體會
3.1學習進度條
| 周 | 這周花的時間 | 代碼行 | 學到的知識簡介 | 目前比較疑惑的問題 |
|---|---|---|---|---|
| 第一周 | 3天 | 47 | 簡單的編程 | 無 |
| 第二周 | 4天 | 55 | 常量,變量,數據類型和一些運算符以及賦值運算 | 無 |
| 第三周 | 4天 | 95 | 關系運算、if-else語句、格式化輸入語句scanf(),以及常用的數學庫函數 | 格式控制 |
| 第四周 | 4天 | 92 | 使用for循環語句實現指定次數的循環程序設計 | 循環的順序 |
| 第五周 | 4天 | 85 | 對函數的定義和調用有初步的認識,能模仿編程 | 對函數題還不熟練 |
| 第六周 | 4天 | 152 | 學會多分支結構、字符型數據類型和邏輯運算符 | 字符型函數不太了解 |
| 第七周 | 4天 | 182 | 熟悉多分支結構switch語句的使用 | 怎么用switch語句簡單些 |
| 第八周 | 3天 | 118 | 熟悉使用while和do-while結構解決問題 | 字符型再加上while語句不太會用 |
| 第九周 | 4天 | 196 | 熟悉break、continue的使用 ;熟悉使用循環的嵌套解決問題 | 嵌套問題還不是很會 |
| 第十周 | 5天 | 200 | 綜合運用循環結構的程序設計 | 較復雜的代碼不太會用循環結構 |
| 第十一周 | 5天 | 200 | 學習各種類型函數的定義、調用和申明,熟悉變量的作用域、生存周期和存儲類型 | 函數題不是很會 |
3.2累積代碼行和博客字數

3.3學習內容總結和感悟
3.3.1學習總結

3.3.2學習體會
1.本周學習有點困難,學習各種類型函數的定義、調用和申明,熟悉變量的作用域、生存周期和存儲類型。上課的時侯真的很多概念,感覺很懵
2.這周真的很忙,時間很緊,就這樣慢慢一點一點學,學會了一點,還不是很會,還需要花很多時間
3.感覺后面的學習越來越難,真的需要很努力了,加油,fighting!!!



