C語言I博客作業11


這個作業屬於哪個課程 C語言程序設計II
這個作業要求在哪里 C語言I博客作業11
我在這個課程的目標是 熟悉代碼的編程,設計出一個小程序,能夠正常運行並且能夠擁有一定用戶
這個作業在哪個地方具體方面幫助我實現目標 掌握各種類型函數的定義、調用和申明,熟悉變量的作用域、生存周期和存儲類型
參考文獻 C語言課本 百度百科

1.PTA實驗作業

1.1題目名 ( 統計各位數字之和是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.1.1數據處理

數據表達:使用了is自定義函數,用整型變量digit表示位數,sum1累加位數,使用了while語句和if-else語句;
使用了整型變量count來計數,sum來求和,使用了for循環
數據處理:
偽代碼:

int is( int number )
{
	int digit;   //表示位數
	int sum1=0; //用來計算各位數字和
	while(number!=0)
	{
		digit=number%10;
		sum1+=digit;
		number/=10;
	}               //以上為求各位數字之和
	if (sum1==5)   //和為5時
    {
	return 1;   //返回值1
    }
	else
	return 0;   //否返回值0
} 
 void count_sum(int a, int b)
{
    int i,count = 0, sum = 0;  //count 用來計數;sum用來求和
    scanf("%d%d", &a, &b);
    for (i= a; i <= b; i++)
    {        
        if (is(i))
        {
            count++;  //計數
            sum += i; //求和在[a,b]區間內滿足條件的正整數
        }        
    }
    printf("count = %d, sum = %d\n", count, sum);   // 輸出count,sum的值
}

1.1.2實驗截圖代碼


1.1.3造測試數據

輸入數據 輸出數據 說明
104 999 104 is counted. count = 15, sum = 3720 滿足條件的整數有15個,整數和為3720
200 800 count = 10, sum = 3110 滿足條件的整數有10個,整數和為3110
300 888 count = 6, sum = 2244 滿足條件的整數有6個,整數和為2244

1.1.4 PTA提交列表及說明

Q1:編譯錯誤
A1:沒搞清題目意思(實現兩個函數),混亂了
Q2:格式錯誤
A:空格沒注意:數學符號,輸出的空格格式

1.2題目名(統計某類完全平方數)

本題要求實現一個函數,判斷任一給定整數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.2.1數據處理

數據表達:使用了整型變量a,m,n;使用了數組表達
數據處理:偽代碼

int IsTheNumber ( const int N ){
  int n=N;  //定義整型變量使其等於N
  int a;   //定義變量a
  int b[10]={0};   //定義一個整型的大小為10的數組b,同時使該數組所有的元素均被初始化為0
  int m=sqrt(n);   //完全平方數為一個數的平方
  if(m*m==n){    //(判斷是否為完全平方數的一個條件)執行下列循環
    while(n){   
      a=n%10;   //取余數
      b[a]++;   
      n/=10;   //取十位
    }
    for(int i=0;i<=9;i++){    // 為整型循環
      if(b[i]>1)     //判斷是否有兩個相同的數字
      return 1;  
    }
  }
  return 0;
}



1.2.2實驗截圖代碼

1.2.3造測試數據

輸入數據 輸出數據 說明
105 500 cnt = 6 有6個數滿足條件
100 500 cnt = 7 有7個數滿足條件
200 880 cnt = 5 有5個數滿足條件

1.2.4 PTA提交列表及說明

說明:Q:答案錯誤
A:考慮什么數是平方數時考慮不全面,開始使用的余數判斷是否為完全平方數,之后改用了數組判斷

2代碼互評

1.同學代碼截圖


2.自己代碼截圖

說明:該同學先是先划分了正負整數,然后在判斷完全平方數,用到了pow函數和sqrt函數,最后用if語句判斷是否有兩個數相同;
我是先定義一個整型數組,使其初始化,用if語句中一數為另一數的平方數判斷是否為完全平方數,在利用數組的原理判斷是否有兩個相同的數。

3.同學代碼截圖

4.自己代碼截圖


說明:自定義is函數中定義我是先定義digit表示位數最終用sum進行累加,該同學是直接定義sum來累加位數

3.學習總結

3.1學習進度條

周/日期 這周所花的時間 代碼行 學到的知識簡介 目前比較迷惑的問題
4/2019.9.21 7個小時 50 編程“hello word” 初次接觸對代碼很迷惘,不知道表示的是什么意思
5/2019.10.2 8個小時 100 安裝gcc編譯器,將代碼建在自己的文件里 如何安裝的程序不明白
7/2019.10.11 10個小時 200 三種表達式,printf流程和scanf流程,if-else語句 scanf流程還是不太明白
8/2019.10.17 20個小時 350 使用for循環語句數的循環程序設計 for循環語句的結構還是有點困惑
9/2019.10.25 25個小時 550 使用while語句循環,自定義函數,參數 自定義函數還是·不太明白
10/2019.11.1 20個小時 700 熟悉多分支結構、字符型數據類型和邏輯運算符 關於字符型的代碼還是不太明白
11/2019.11.7 15個小時 1000 熟悉多分支結構switch語句的使用 對swith語句的使用還有一定的困惑
12/2019.11.15 14個小時 1200 熟悉使用while和do-while結構解決問題 對while語句的使用還有一定的疑惑
13/2019.11.21 15個小時 1450 熟悉break、continue的使用,熟悉使用循環的嵌套解決問題 對continue的使用不夠熟練,還有很大疑惑
14/2019.11.28 20個小時 1660 選擇合適的算法、合理的循環結構,熟練的編寫程序 對字符型函數和abs函數還不是太懂
15/2019.12.5 22個小時 1888 掌握各種類型函數的定義、調用和申明,熟悉變量的作用域、生存周期和存儲類型 數組還很迷惑

3.2 累積代碼行和博客字數

3.3 學習內容總結和感悟

3.3.1 學習內容總結

請用思維導圖的形式將到目前為止所學的內容進行整理

3.3.2學習體會

這次的作業是我感覺有史以來最難的一次了,兩道編程題一點點思路都沒有,完全不知道怎么寫,感覺自己很受打擊。
在接下來的學習中,要注重思維的訓練,題目沒有思維邏輯的話完全不知道從何下手。


免責聲明!

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



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