實驗2-4-1 統計各位數字之和是5的數 (20 分)


本題要求實現兩個函數:一個函數判斷給定正整數的各位數字之和是否等於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

代碼:

// 判斷給定正整數的各位數字之和是否等於5
// 104—》104 % 10 = 4、104 / 10 = 10—》10 % 10 = 0、10 / 10 = 1 
int is( int number ) {
	int i = number,value = 0;
	while (1) {
		value += (i % 10);
		i /= 10;
		if (i < 10) {
			value += i;
			break; 
		}
	}
	if (value == 5) {
		return 1;
	}else {
		return 0;
	}
} 

// 統計給定區間內有多少個滿足上述要求的整數,並計算這些整數的和
void count_sum( int a, int b ){
	int i,count = 0,sum = 0;
	for (i=a;i<=b;i++) {
		if (is(i) == 1) {
			count += 1;
			sum += i;
		}
	}
	printf("count = %d, sum = %d",count,sum);
} 

提交截圖:

在這里插入圖片描述

解題思路:

這道題用了兩個函數,主要難點在於is(int number)函數的實現,判斷各位數字之和是否等於5,可以舉一個例子來理解:

  • number是104的時候,做下列計算:number % 10 = 4number / 10 = 10number % 10 = 0number / 10 = 1最后判斷number < 10則直接加上該數就🆗了


免責聲明!

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



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