C和指针7.11.6
来源:互联网 发布:iphone和mac airplay 编辑:程序博客网 时间:2024/06/05 00:32
#include <iostream>#include <string.h> //调用了memset()和memcpy()两个函数using namespace std;char number_low[][10]={"zero","one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen" };char number_high[][10]={"","twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety"}; char number_class[][10]={"hundred","thousand","million","billion"}; //二维数组,每一行存10个字符 int write_3(unsigned int num,char *buffer_3){ unsigned int part[3]={0,0,0}; int i,seek=0; short cnt=2; char *current=buffer_3; if(num>1000) { cout <<"wrong number" <<endl; return 0; } while(num>0) { part[cnt--]=num%10; num/=10; } for(i=0;i<3;i++) { switch(i) { case 0: //百位 if(part[i]==0) break; //break:跳到switch语句列表的末尾 memcpy(current,number_low[part[i]],strlen(number_low[part[i]])); current+=strlen(number_low[part[i]]); *current='\0'; current++; memcpy(current,number_class[0],strlen(number_class[0]) );//函数原型:void *memcpy(void *dest,const void *src,size_t n);从源src//所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中 current+=strlen(number_class[0]);current++;*current = '\0'; break; case 1: //十位 if(part[i]==0||part[i]==1) //十位为0或者1,都由个位输出 break; memcpy(current,number_high[part[i]-1],strlen(number_high[part[i]-1])); current+=strlen(number_high[part[i]-1]); if(part[i+1]!=0) //当个位不为0,加符号 { *current='-'; current++; } break; case 2: //个位 if(part[i]==0&&part[i-1]!=1) break; if(part[i-1]!=1) //十位不是1的情况 { memcpy(current,number_low[part[i]],strlen(number_low[part[i]])); current+=strlen(number_low[part[i]]); *current='\0'; current++; } else //十位是1的情况 { memcpy(current,number_low[part[i]+10],strlen(number_low[part[i]+10])); current+=strlen(number_low[part[i]+10]); *current='\0'; current++; } break; default: cout << "error "<<endl; break; } } return seek=current-buffer_3; } void written_amount(unsigned int amount,char *buffer){ unsigned int part[10]; char *current=buffer; int seek; short cnt=0; while(amount>0) { part[cnt++]=amount%1000; amount/=1000; // cout << part[cnt-1]<<endl; } for(int i = cnt-1;i>=0;i--) { seek=write_3(part[i],current); current+=seek; if(0<i&&i<4) { memcpy(current,number_class[i],strlen(number_class[i]) ); current+=strlen(number_class[i]); *current='\0'; current++; } else if(i>=4) { cout <<"rich man,We can't caculate so much money!" <<endl; break; } }} int main() { char *buffer; unsigned int amount; buffer=(char *)malloc(200*sizeof(char)); memset(buffer,0,200);//初始化:函数原型为void *memset(void *s,int ch,size_t n);将s中前n个字节用//ch替换并返回s while(1) { cout <<"Please input the count:" <<endl; cin>>amount; written_amount(amount,buffer); cout<<amount << "in English is:"; for(int i=0; i < 200 ;i++) cout <<buffer[i]; cout<<endl;memset(buffer,0,200); } return 0;}
0 0
- C和指针7.11.6
- 《C和指针》读书笔记(6)
- 读书笔记:C和指针6
- C语言基础:C语言指针(6) - 指针和字符串
- c和c指针
- 【C和指针】函数指针
- 【C和指针】const指针
- 《c和指针》函数指针
- c和指针详解------指针
- C指针和指针的指针
- C和指针读书笔记-第6章(指针)
- 读《C和指针》笔记摘要【6】
- 读书笔记之c和指针(6)
- 《c和指针》摘录6—数组
- 【c/c++】指针数组和数组指针
- 【c/c++】指针函数和函数指针
- C和指针
- c和指针
- 如何让UDP实现可靠传输
- 机器学习常见算法分类
- VM安装CentOS7 Minimal静态IP配置,并设置VM端口转发和xshell连接(二)
- 设置Dialog中Button的返回值------>Dlg.DoModal()的返回值
- 递归的思想
- C和指针7.11.6
- MyBatis获取自增长主键值的两种方式及源码浅析
- 面向对象(static静态、内部类)
- 防止umeditor存数据库时被解析
- 集合对象转树结构
- Shell简介
- HDU-1111解题报告
- 求单链表是否有环、环长、入环点、链长
- 【Android】Dagger2从入门到再入门