tft每日頭條

 > 生活

 > c語言入門級20行代碼

c語言入門級20行代碼

生活 更新时间:2025-04-25 13:13:04
題目

有這樣一道智力題:“某商店規定:三個空汽水瓶可以換一瓶汽水。小張手上有十個空汽水瓶,她最多可以換多少瓶汽水喝?”答案是5瓶,方法如下:先用9個空瓶子換3瓶汽水,喝掉3瓶滿的,喝完以後4個空瓶子,用3個再換一瓶,喝掉這瓶滿的,這時候剩2個空瓶子。然後你讓老闆先借給你一瓶汽水,喝掉這瓶滿的,喝完以後用3個空瓶子換一瓶滿的還給老闆。如果小張手上有n個空汽水瓶,最多可以換多少瓶汽水喝?

c語言入門級20行代碼(C語言每日一練28多喝汽水)1

冰峰不錯呦

思路

這套題目主要思路就是遞歸法,簡單來說可以分為以下三種情況:

  • 若空瓶子數小于2,則不可以兌換;
  • 若空瓶子數等于2,可通過借一瓶,實現兌一瓶;
  • 若空瓶子數大于2,則可通過取模先求出目前可兌換的瓶子數,然後用求餘計算剩下的空瓶子數,将兌換的瓶子數和剩下的空瓶子數相加,再遞歸重複以上三種情況判斷。
實現代碼

#include <stdio.h> #include <stdlib.h> #include <math.h> int bottles= 0; int GetSodaBottles(int i) { int rest; int temp; if (i <= 1) { return bottles; } if (i == 2) { bottles = 1; return bottles; } if (i >= 3) { rest = i % 3; temp = i / 3; bottles = temp; rest = temp; GetSodaBottles(rest); } } void main() { int a[10]; int ArrNum = 0; printf("Input the number of bottles:\n"); while (scanf("%d", &a[ArrNum]) != 0 && a[ArrNum] >= 1 && a[ArrNum] <= 100) { ArrNum ; } printf("The result:\n"); for (int j = 0; j < ArrNum; j ) { printf("%d\n", GetSodaBottles(a[j])); bottles = 0; } }

運行結果

c語言入門級20行代碼(C語言每日一練28多喝汽水)2

往期推薦

C語言每日一練27——自定義函數獲取最大公約數與最小公倍數

C語言每日一練26——金子裝載最優值

C語言每日一練25——求最大連續遞增數字串

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved