#include <stdio.h>
int count_digits(const char *str) {
int count = 0;
for (int i = 0; str[i] != '\0'; i++) {
if (str[i] >= '0' && str[i] <= '9') {
count++;
}
}
return count;
}
int main() {
// 数字が含まれる文字列
const char *test_string1 = "abc123def45";
int digits1 = count_digits(test_string1);
printf("文字列 '%s' の数字の個数: %d\n", test_string1
, digits1
);
// 数字のみ
const char *test_string2 = "9876543210";
int digits2 = count_digits(test_string2);
printf("文字列 '%s' の数字の個数: %d\n", test_string2
, digits2
); // 期待値: 10
// 数字が含まれない文字列
const char *test_string3 = "hello_world!";
int digits3 = count_digits(test_string3);
printf("文字列 '%s' の数字の個数: %d\n", test_string3
, digits3
);
// 空文字列
const char *test_string4 = "";
int digits4 = count_digits(test_string4);
printf("文字列 '%s' の数字の個数: %d\n", test_string4
, digits4
);
// 数字と記号
const char *test_string5 = "1a!2@b#3$";
int digits5 = count_digits(test_string5);
printf("文字列 '%s' の数字の個数: %d\n", test_string5
, digits5
);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgY291bnRfZGlnaXRzKGNvbnN0IGNoYXIgKnN0cikgewogICAgaW50IGNvdW50ID0gMDsKICAgIGZvciAoaW50IGkgPSAwOyBzdHJbaV0gIT0gJ1wwJzsgaSsrKSB7CiAgICAgICAgaWYgKHN0cltpXSA+PSAnMCcgJiYgc3RyW2ldIDw9ICc5JykgewogICAgICAgICAgICBjb3VudCsrOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBjb3VudDsKfQoKaW50IG1haW4oKSB7CiAgICAvLyAg5pWw5a2X44GM5ZCr44G+44KM44KL5paH5a2X5YiXCiAgICBjb25zdCBjaGFyICp0ZXN0X3N0cmluZzEgPSAiYWJjMTIzZGVmNDUiOwogICAgaW50IGRpZ2l0czEgPSBjb3VudF9kaWdpdHModGVzdF9zdHJpbmcxKTsKICAgIHByaW50Zigi5paH5a2X5YiXICclcycg44Gu5pWw5a2X44Gu5YCL5pWwOiAlZFxuIiwgdGVzdF9zdHJpbmcxLCBkaWdpdHMxKTsgCgogICAgLy8gIOaVsOWtl+OBruOBvwogICAgY29uc3QgY2hhciAqdGVzdF9zdHJpbmcyID0gIjk4NzY1NDMyMTAiOwogICAgaW50IGRpZ2l0czIgPSBjb3VudF9kaWdpdHModGVzdF9zdHJpbmcyKTsKICAgIHByaW50Zigi5paH5a2X5YiXICclcycg44Gu5pWw5a2X44Gu5YCL5pWwOiAlZFxuIiwgdGVzdF9zdHJpbmcyLCBkaWdpdHMyKTsgLy8g5pyf5b6F5YCkOiAxMAoKICAgIC8vIOaVsOWtl+OBjOWQq+OBvuOCjOOBquOBhOaWh+Wtl+WIlwogICAgY29uc3QgY2hhciAqdGVzdF9zdHJpbmczID0gImhlbGxvX3dvcmxkISI7CiAgICBpbnQgZGlnaXRzMyA9IGNvdW50X2RpZ2l0cyh0ZXN0X3N0cmluZzMpOwogICAgcHJpbnRmKCLmloflrZfliJcgJyVzJyDjga7mlbDlrZfjga7lgIvmlbA6ICVkXG4iLCB0ZXN0X3N0cmluZzMsIGRpZ2l0czMpOyAKCiAgICAvLyDnqbrmloflrZfliJcKICAgIGNvbnN0IGNoYXIgKnRlc3Rfc3RyaW5nNCA9ICIiOwogICAgaW50IGRpZ2l0czQgPSBjb3VudF9kaWdpdHModGVzdF9zdHJpbmc0KTsKICAgIHByaW50Zigi5paH5a2X5YiXICclcycg44Gu5pWw5a2X44Gu5YCL5pWwOiAlZFxuIiwgdGVzdF9zdHJpbmc0LCBkaWdpdHM0KTsgCgogICAgLy8gIOaVsOWtl+OBqOiomOWPtwogICAgY29uc3QgY2hhciAqdGVzdF9zdHJpbmc1ID0gIjFhITJAYiMzJCI7CiAgICBpbnQgZGlnaXRzNSA9IGNvdW50X2RpZ2l0cyh0ZXN0X3N0cmluZzUpOwogICAgcHJpbnRmKCLmloflrZfliJcgJyVzJyDjga7mlbDlrZfjga7lgIvmlbA6ICVkXG4iLCB0ZXN0X3N0cmluZzUsIGRpZ2l0czUpOyAKCiAgICByZXR1cm4gMDsKfQo=