gpt4 book ai didi

使用 switch 语句将数字(最多 4 位)转换为单词(C 程序)

转载 作者:行者123 更新时间:2023-11-30 16:11:33 25 4
gpt4 key购买 nike

开关语句将数字转换为单词(3221) = 三千二百二十一。

最佳答案

此 C 程序以字格式打印 0 到 9999 范围内的数字。只需将数字作为参数的字符串发送到 main()< 中的 convert_to_words() 函数中,程序将计算数字的长度,并使用后续数组根据个位、十分位、百位和千位来格式化单词。请记住,该程序中使用的条件/决策结构是 if-else 语句,而不是 switch-case;如果你想编辑它以使用 switch-case 这将相对简单。

#include <stdio.h> 
#include <string.h>
#include <stdlib.h>

/* A function that prints given number in words */
void convert_to_words(char *num)
{
int len = strlen(num); // Get number of digits in given number

/* Base cases */
if (len == 0) {
fprintf(stderr, "empty string\n");
return;
}
if (len > 4) {
fprintf(stderr, "Length more than 4 is not supported\n");
return;
}

/* The first string is not used, it is to make
array indexing simple */
char *single_digits[] = { "zero", "one", "two",
"three", "four","five",
"six", "seven", "eight", "nine"};

/* The first string is not used, it is to make
array indexing simple */
char *two_digits[] = {"", "ten", "eleven", "twelve",
"thirteen", "fourteen",
"fifteen", "sixteen",
"seventeen", "eighteen", "nineteen"};

/* The first two string are not used, they are to make
array indexing simple */
char *tens_multiple[] = {"", "", "twenty", "thirty", "forty", "fifty",
"sixty", "seventy", "eighty", "ninety"};

char *tens_power[] = {"hundred", "thousand"};

/* Used for debugging purpose only */
printf("\n%s: ", num);

/* For single digit number */
if (len == 1) {
printf("%s\n", single_digits[*num - '0']);
return;
}

/* Iterate while num is not '\0' */
while (*num != '\0') {

/* Code path for first 2 digits */
if (len >= 3) {
if (*num -'0' != 0) {
printf("%s ", single_digits[*num - '0']);
printf("%s ", tens_power[len-3]); // here len can be 3 or 4
}
--len;
}

/* Code path for last 2 digits */
else {
/* Need to explicitly handle 10-19. Sum of the two digits is
used as index of "two_digits" array of strings */
if (*num == '1') {
int sum = *num - '0' + *(num + 1)- '0';
printf("%s\n", two_digits[sum]);
return;
}

/* Need to explicitely handle 20 */
else if (*num == '2' && *(num + 1) == '0') {
printf("twenty\n");
return;
}

/* Rest of the two digit numbers i.e., 21 to 99 */
else {
int i = *num - '0';
printf("%s ", i? tens_multiple[i]: "");
++num;
if (*num != '0')
printf("%s ", single_digits[*num - '0']);
}
}
++num;
}
}

/* Driver program to test above function */
int main(void)
{
convert_to_words("9923");
convert_to_words("523");
convert_to_words("89");
convert_to_words("8989");

return 0;
}

输出:

9923: nine thousand nine hundred twenty three
523: five hundred twenty three
89: eighty nine
8989: eight thousand nine hundred eighty nine

关于使用 switch 语句将数字(最多 4 位)转换为单词(C 程序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58577678/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com