gpt4 book ai didi

c - 如何将一笔钱转换为印度货币格式(印度数字格式)?

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

我想构建一个 C 程序来将任何数字转换为印度货币格式。它可以接受带有负号、前导零和小数点 + 尾数的输入,并且它将格式化输入以处理前导零并根据印度数字格式添加逗号。例如,印度数字格式的数字表示为:

1
10
100
1,000
10,000
1,00,000
10,00,000
1,00,00,000
10,00,00,000

输入和相关输出如下:

Minus sign: "-12345" -> "-12,345"
Decimal Point: "-12345.123" -> "-12,345.123"
Leading Zero's: 000000.123 → "0.123" or "-000123456.1234" -> "-1,23,456.1234"

如果有人想在时间和空间复杂性方面优化此代码,请使其更加简洁和干净,然后分享您的代码。

最佳答案

印度数字以十进制表示,数字组之间用逗号分隔。最后一组有 3 位数字,所有更有效的数字成对分组。

这是一个简单的解决方案:

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

char *convertToInrFormat(const char *s) {
const char *src = s + strspn(s, " \t\r\n"); /* skip spaces */
int len = strspn(src, "0123456789"); /* count number of digits */
int destlen = len + (len > 3 ? len / 2 - 1 : len == 0);
char *dest = malloc(destlen + 1);
if (dest != NULL) {
int i = 0, j = 0;
while (i < len) {
dest[j++] = src[i++];
if (i + 2 < len && ((i ^ len) & 1))
dest[j++] = ',';
}
if (len == 0) {
dest[j++] = '0';
}
dest[j] = '\0';
}
return dest;
}

int main(int argc, char *argv[]) {
for (int i = 1; i < argc; i++) {
char *input = argv[i];
char *output = convertToInrFormat(input);
printf("%s -> %s\n", input, output);
free(output);
}
return 0;
}

关于c - 如何将一笔钱转换为印度货币格式(印度数字格式)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43802570/

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