- 自己写一个函数实现类似库函数itoa的功能,将整数转化为字符串。
- 整数转汉字,表示货币量。
1、代码:
1 char *IntToStr(int num, char str[]) 2 { 3 int i = 0, j = 0; 4 char temp[100]; 5 while(num) 6 { 7 temp[i] = num % 10 + '0'; //取模运算得到从后往前的每一个数字变成字符 8 num = num / 10; 9 i++; 10 } 11 temp[i] = 0; //字符串结束标志 12 13 i = i - 1; //回到temp最后一个有意义的数字 14 while(i >= 0) 15 { 16 str[j] = temp[i]; 17 i--; 18 j++; 19 } 20 str[j] = 0; //字符串结束标志 21 return str; 22 } 23 24 /*字符串转换为整数,仅考虑十进制,不考虑非法字符*/ 25 int StrToInt(char *str) 26 { 27 int value = 0; 28 int sign = 1; 29 assert(str != NULL); 30 if(*str == '-') 31 { 32 sign = -1; 33 str++; 34 }else if(*str == '+') 35 { 36 str++; 37 } 38 while(*str) 39 { 40 value = value * 10 +(*str - '0'); 41 str++; 42 43 } 44 return sign * value; 45 }
2、代码:
1 #include <iostream> 2 3 using namespace std; 4 char * str[10] = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"}; 5 char * weight[4] = {"", "拾", "佰", "仟"}; 6 7 void Num2StrPer4(int value) 8 { 9 if (value == 0) return; 10 int base = 1000, curr = 3, digit; 11 while (value / base == 0) 12 { 13 base /= 10; 14 --curr; 15 } 16 while(base > 0) 17 { 18 digit = value / base; 19 cout << str[digit]; 20 if (digit != 0) cout << weight[curr]; 21 value = value % base; 22 if (value == 0) break; 23 base = base / 10; 24 curr--; 25 } 26 } 27 28 int main(void) 29 { 30 int cas; 31 scanf("%d", &cas); 32 char buff[32]; 33 while (cas--) 34 { 35 int value = 0; 36 scanf("%s", buff); 37 if (buff[0] == '-') 38 { 39 printf("负"); 40 sscanf(buff+1, "%d", &value); 41 } 42 else 43 sscanf(buff, "%d", &value); 44 if (value >= 10000) 45 { 46 Num2StrPer4(value/10000); 47 value = value % 10000; 48 printf("万"); 49 if (value != 0) 50 { 51 if (value < 1000) printf("零"); 52 Num2StrPer4(value); 53 } 54 } 55 else if (value == 0) 56 printf("零"); 57 else 58 Num2StrPer4(value); 59 printf("圆\n"); 60 } 61 return 0; 62 }