C語言1博客作業11


問題 答案
這個作業屬於在哪個課程 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!!!


免責聲明!

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



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