2025年1th 整数 罗马数 转换

1th 整数 罗马数 转换代码很简单 采用查表法做 所以直接贴出来吧 include lt stdio h gt include lt stdlib h gt include string h char lut 1 10 8 I II III

大家好,我是讯享网,很高兴认识大家。

代码很简单,采用查表法做。所以直接贴出来吧。

#include <stdio.h> #include <stdlib.h> #include “string.h” char lut_1[10][8] = {“I”,“II”,“III”,“IV”,“V”,“VI”,“VII”,“VIII”,“IX”}; char lut_10[10][8] = {“X”,“XX”,“XXX”,“XL”,“L”,“LX”,“LXX”,“LXXX”,“XC”}; char lut_100[10][8] = {“C”,“CC”,“CCC”,“CD”,“D”,“DC”,“DCC”,“DCCC”,“CM”}; char lut_1000[10][8] = {“M”,“MM”,“MMM”}; /* * * 
讯享网func_def: to separate int numbers into bits , store them to a int buffer return length example : when num_int is 1234 , num_bit_buf[0] = 1 , num_bit_buf[1] = 2 , num_bit_buf[2] = 3 , num_bit_buf[3] = 4 , return 4 
  • * */ int separate(int num_int , int * num_bit_buf) { int i = 0,j = 0; if(num_int > 999) { num_bit_buf[i] = num_int / 1000; //thousand num_bit_buf[i+1] = (num_int % 1000 ) /100; //hundrand num_bit_buf[i+2] = (num_int % 100 ) / 10; num_bit_buf[i+3] = (num_int % 10) ; return 4; } else if(num_int > 99) { num_bit_buf[i] = num_int / 100; num_bit_buf[i+1] = (num_int % 100) / 10; num_bit_buf[i+2] = (num_int % 10); return 3; } else if(num_int > 9) { num_bit_buf[i] = num_int / 10 ; num_bit_buf[i+1] = num_int % 10; return 2; } else { num_bit_buf[i] = num_int; return 1; } }
int int_2_roma(int num_int , char * roma_buf) {
int num_bit_buf[4] , len = 0 , i=0; len = separate(num_int,num_bit_buf); //printf("lens is %d\n", len); if(len<1) { printf("error when separate!\n"); return -1; } 
#if 0 //set to 0 when we stop debug
讯享网
讯享网for(i=0;i<len;i++) { printf("num_bit_buf[%d] is %d\n", i, num_bit_buf[i]); } 
#endif
switch(len) { case 4: { strcpy(roma_buf,lut_1000[num_bit_buf[0]-1]); strcat(roma_buf,lut_100[num_bit_buf[1]-1]); strcat(roma_buf,lut_10[num_bit_buf[2]-1]); strcat(roma_buf,lut_1[num_bit_buf[3]-1]); break; } case 3: { strcpy(roma_buf,lut_100[num_bit_buf[0]-1]); strcat(roma_buf,lut_10[num_bit_buf[1]-1]); strcat(roma_buf,lut_1[num_bit_buf[2]-1]); break; } case 2: { strcpy(roma_buf,lut_10[num_bit_buf[0]-1]); strcat(roma_buf,lut_1[num_bit_buf[1]-1]); break; } case 1: { strcpy(roma_buf,lut_1[num_bit_buf[0]-1]); //printf("src %s\n", lut_1[num_bit_buf[0]]); //puts(roma_buf); break; } } return 0; 
} int main(int argc, char argv) {
讯享网char *p; char roma_buf[20]; int number_input=strtol(argv[1], &p, 10); if(argc!=2 || number_input > 3999){ printf("Usage: int2roma number(0-3999)\n"); return -1; } //printf("number_input is %d\n", number_input); int_2_roma(number_input,roma_buf); puts(roma_buf); return 1; 
}

讯享网

小讯
上一篇 2025-01-25 13:01
下一篇 2025-03-11 10:27

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/34194.html