当前位置:首页 » 编程语言 » c语言小写金额转换大写
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言小写金额转换大写

发布时间: 2022-09-03 09:20:36

1. c++将小写金额转化为大写金额,以及日期格式转化

#pragma
warning(disable:4786)
#include
<string>
#include
<stdio.h>
#include
<iostream>
#include
<vector>
using
std::vector;
using
std::string;
using
std::cout;
using
std::cin;
using
std::endl;
string
ConvertMoney(double
dNum)
{
string
strResult;//要返回的字符串
char
c_Digit[20];//c风格的字符数组
string
strDigit;//输入的数字字符串
int
iLength
=
0;//输入的双精度数的长度
int
iAddZero
=
0;//加零标志
int
iDigit

=
0;//取出的数字
string
str1[]
=
{"分","角","元","拾","佰","仟","万",
"拾","佰","仟","亿","拾","佰","仟","万","拾","佰","仟"};
string
str2[]
=
{"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
vector<string>
strUnit(str1,str1
+
18);//初始化向量
vector<string>
strUpperNum(str2,str2
+
10);
sprintf(c_Digit,"%.0f",dNum*100);//将数字串换成c风格的数组
strDigit
=
c_Digit;//将字符数组的内容赋值给string变量
iLength
=
strDigit.length();//取得字符串的长度
if
(iLength
>
15
||
iLength
<
0)//如果输入的数字超出double类型数据的长度的话返回“error“
return
"Error";
for
(int
i
=
0;
i
<
iLength;
i++)
{//将字符串逐位处理
iDigit
=
atoi(strDigit.substr(i,1).c_str());
if
(iDigit
==
0)//如果当前位为零,则将加零标志+1

iAddZero++;
else
{

if
(iAddZero
>
0)//如果当前为不为0,且加0标志大于0

strResult
+=
"零";//则在字符串中加入“零“

strResult
+=
strUpperNum[iDigit];

iAddZero
=
0;
}
//该位不为0||元位||亿位||万位
if
((iDigit
!=
0)
||
(iLength
-
i
==
3)
||
(iLength
-
i
==
11)||((iLength
-
i
+
1)%8
==
0
&&
(iAddZero
<
4)))

strResult
+=
strUnit[iLength
-
i
-
1];
}
if
(strDigit.substr(strDigit.length()
-
2,2)
==
"00")
strResult
+=
"整";
return
strResult;
}
int
main()
{
double
dLowerRMB
=
0.0;
cout
<<
"请输入要转换的人民币金额!"
<<
endl;
cin
>>
dLowerRMB;
cout
<<
"-------------------------------------------------"
<<
endl;
cout
<<
"您要转换的人民币小写金额为
"
<<
"\n"
<<
dLowerRMB
<<
endl;
cout
<<
"-------------------------------------------------"
<<
endl;
string
strUpperRMB
=
ConvertMoney(dLowerRMB);
cout
<<
"大写金额为"
<<
"\n"
<<
strUpperRMB
<<
endl;
cout
<<
"-------------------------------------------------"
<<
endl;
return
0;
}

2. 编程实现,输入一个人民币小写金额值,转化为大写金额值输出。先实现基本功能

这是我用c做的,基本上可以完成你所需要的功能。
#include<stdio.h>
void xs(int a)
{
if(a==0) printf("零");
else if(a==1) printf("壹");
else if(a==2) printf("贰");
else if(a==3) printf("叁");
else if(a==4) printf("肆");
else if(a==5) printf("伍");
else if(a==6) printf("陆");
else if(a==7) printf("柒");
else if(a==8) printf("捌");
else if(a==9) printf("玖");

}

void main()
{
int y=1;
while(y)
{
double i;
int j,j1;
int k,k1;
int m,m1;
int n,n1;
int g,g1;
int h,h1;
printf("请输入人民币小写数额:");
printf("\n");
scanf("%lf",&i);
//万以上部分
j1=(int)i/10000000;
k1=(int)i%10000000/1000000;
m1=(int)i%10000000%1000000/100000;
n1=(int)i%10000000%1000000%100000/10000;
//万以下部分
j=(int)i%10000000%1000000%100000%10000/1000;
k=(int)i%1000/100;
m=(int)i%1000%100/10;
n=(int)i%1000%100%10;
//小数部分
g=(int)(i*10)%10000%1000%100%10;
h=(int)(i*100)%100000%10000%1000%100%10;
if(i>=10000&&i<100000000)
{
printf("转化为大写金额应为:\n");
xs(j1);
printf("仟");
xs(k1);
printf("佰");
xs(m1);
printf("拾");
xs(n1);
printf("万");
xs(j);
printf("仟");
xs(k);
printf("佰");
xs(m);
printf("拾");
xs(n);
printf("元");
xs(g);
printf("角");
xs(h);
printf("分");
printf("\n");
}
else if(i<10000&&i>=0)
{
printf("转化为大写金额应为:\n");
xs(j);
printf("仟");
xs(k);
printf("佰");
xs(m);
printf("拾");
xs(n);
printf("元");
xs(g);
printf("角");
xs(h);
printf("分");
printf("\n");

}
else
printf("您所输入的数值超出范围!!\n");
printf("输入1重新开始\n");
printf("输入0结束程序\n");
scanf("%d",&y);
printf("\n");
printf("\n");
}

}

3. 跪求:c语言数字金额转换为中文大写金额。 谢谢。

程序运行输入123.45试试:

#include<stdio.h>
#include<stdlib.h>
#include<wchar.h>
#include<locale.h>

wchar_tcstrs[10];
wchar_tbit[10];

intmain()
{
cstrs[0]=0x96F6;cstrs[1]=0x58F9;cstrs[2]=0x8D30;
cstrs[3]=0x53C4;cstrs[4]=0x8086;cstrs[5]=0x4F0D;
cstrs[6]=0x9678;cstrs[7]=0x67D2;cstrs[8]=0x634C;
cstrs[9]=0x7396;
bit[0]=0x5706;bit[1]=0x62FE;bit[2]=0x4F70;
bit[3]=0x4EDF;bit[4]=0x842C;bit[5]=0x62FE;
bit[6]=0x4F70;bit[7]=0x4EDF;bit[8]=0x5104;
bit[9]=0x62FE;bit[10]=0x4F70;bit[11]=0x4EDF;
bit[12]=0x842C;

setlocale(LC_ALL,"");
doubleinnum;
intk=0;inttmp=1;

scanf("%lf",&innum);
while(tmp<innum){
k+=1;tmp*=10;
}
if(tmp>innum){k--;tmp=tmp/10;}
if(k<0){k=0,tmp=1;}

inte,ee,t=0;
e=(int)innum;
while(e>=1){
ee=(int)e/tmp;
if(ee!=0){
if(t){
printf("%lc",cstrs[0]);
t=0;
}
printf("%lc",cstrs[ee]);
printf("%lc",bit[k]);
}else{
t=1;
if(k==8||k==4)printf("%lc",bit[k]);
}
k--;e=e%tmp;tmp=tmp/10;
}
longet;
et=(long)(innum*10);printf("%lc%lc",cstrs[et%10],0x89D2);
et=(long)(innum*100);printf("%lc%lc",cstrs[et%10],0x5206);

puts("");
return0;

}
/*
例如:
输入:
256000023.22
输出:
贰亿伍仟陆佰万零贰拾叁圆贰角贰分
*/

4. C语言小写转大写

#include<stdio.h>
using namespace std;
int main()
{
char ch;
scanf("%c",&ch);
ch-=32;
printf("%c %d",ch,ch);
return 0;
}

5. C语言编程:用指针编程序实现,输入一个人民币小写金额值,转化为大写金额值输出。

#include "stdafx.h"

#include<stdio.h>

#define NUM1 1
#define NUM2 2
#define NUM3 3
#define NUM4 4
#define NUM5 5
#define NUM6 6
#define NUM7 7
#define NUM8 8
#define NUM9 9
#define NUM 10
#define NUM10 11
#define NUM100 12
#define NUM1000 13
#define NUM10000 14
#define NUM100000 15
#define NUM1000000 16
#define NUM10000000 17
#define NUM100000000 18
#define NUM1000000000 19
#define NUM10000000000 20

void show_num(int *save,int count)
{
int i=count;

while(i>=0)
{
switch(save[i])
{
case 1:
printf("一");
break;
case 2:
printf("二");
break;
case 3:
printf("三");
break;
case 4:
printf("四");
break;
case 5:
printf("五");
break;
case 6:
printf("六");
break;
case 7:
printf("七");
break;
case 8:
printf("八");
break;
case 9:
printf("九");
break;
case NUM10:
printf("十");
break;
case NUM100:
printf("百");
break;
case NUM1000:
printf("千");
break;
case NUM10000:
printf("万");
break;
case NUM100000:
printf("十");
break;
case NUM1000000:
printf("百");
break;
case NUM10000000:
printf("千");
break;
case NUM100000000:
printf("亿");
break;
default:
break;
}

i--;
}

printf("\n");
}

int main()
{
long int num=0,i=0;
int save[20]={0};

printf("请输入要大写的数值:");
scanf("%d",&num);

while(num)
{
save[i]=num%10;
num=num/10;
save[i+1]=NUM10+i/2;

i+=2;
}

show_num(save,i-2);

return 0;
}

如果有需要,自己太添加,就在那个switch里面,还有宏,
但是不能超过你定义的类型的最大值,否则会出错哦
汉字部分自己改把

6. C语言编程:数字金额转换为中文大写金额

先生,这个代码在Linux下用gcc编译通过了。
#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
#include <locale.h>

wchar_t cstrs[10];
wchar_t bit[10];

int main()
{
cstrs[0]=0x96F6;cstrs[1]=0x58F9;cstrs[2]=0x8D30;
cstrs[3]=0x53C4;cstrs[4]=0x8086;cstrs[5]=0x4F0D;
cstrs[6]=0x9678;cstrs[7]=0x67D2;cstrs[8]=0x634C;
cstrs[9]=0x7396;
bit[0]=0x5706;bit[1]=0x62FE;bit[2]=0x4F70;
bit[3]=0x4EDF;bit[4]=0x842C;bit[5]=0x62FE;
bit[6]=0x4F70;bit[7]=0x4EDF;bit[8]=0x5104;
bit[9]=0x62FE;bit[10]=0x4F70;bit[11]=0x4EDF;
bit[12]=0x842C;

setlocale(LC_ALL, "");
double innum;
int k=0; int tmp=1;

scanf("%lf", &innum);
while(tmp<innum){
k+=1; tmp*=10;
}
if(tmp>innum){k--; tmp=tmp/10;}
if(k<0){k=0, tmp=1;}

int e, ee, t=0;
e=(int)innum;
while(e>=1){
ee = (int)e/tmp;
if(ee!=0){
if(t){
printf("%lc",cstrs[0]);
t=0;
}
printf("%lc", cstrs[ee]);
printf("%lc", bit[k]);
} else {
t=1;
if(k==8 || k==4)printf("%lc",bit[k]);
}
k--; e=e%tmp; tmp=tmp/10;
}
long et;
et=(long)(innum*10); printf("%lc%lc",cstrs[et%10], 0x89D2);
et=(long)(innum*100); printf("%lc%lc",cstrs[et%10], 0x5206);

puts("");
return 0;
}
例如:
输入:
256000023.22
输出:
贰亿伍仟陆佰万零贰拾叁圆贰角贰分

7. 【是C语言,不是C++】,输入一串小写金额的转化为中文大写。要求:最高到千位,精确到百分之一,感谢了!!

voidmain()
{
char*s[16]={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
floatfData=0;
boolbLoop=true;
intTemp=0;
while(bLoop)
{
scanf("%f",&fData);
if(fData<0)
{
bLoop=false;
}
elseif(fData<10000)
{
Temp=(int)fData/1000;
if(Temp>0)
{
printf("%s仟",s[Temp]);
}
Temp=((int)fData%1000)/100;
if(Temp>0)
{
printf("%s佰",s[Temp]);
}
Temp=((int)fData%100)/10;
if(Temp>0)
{
printf("%s拾",s[Temp]);
}
Temp=((int)fData%10);
if(Temp>0)
{
printf("%s",s[Temp]);
}
printf("元");
Temp=((int)(fData*10)%10);
if(Temp>0)
{
printf("%s角",s[Temp]);
}
Temp=((int)(fData*100)%10);
if(Temp>0)
{
printf("%s分",s[Temp]);
}
printf(" ");
}
else
{
printf("数据过大 ");
}

}

system("pause");
}

代码很简单,就是判断每个位数,不明白私信我

8. c语言,求输入一个小写数字输出大写一万以内的就可以 如输入 132 输出 一百三十二

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

intmain()
{
chardigit[10][3]={"零","一","二","三","四","五","六","七","八","九"};
charunit[4][3]={"十","百","千","万"};
charminusculeStr[6]; //储存整数转换后的字符串
inttemp,strLength,i;

intminuscule;
printf("请输入一个整数(一万以内):");
scanf("%d",&minuscule);

memset(minusculeStr,0,6);
temp=minuscule;
for(i=0;temp;temp/=10,i++){
minusculeStr[i]=temp%10+48;//转换整数每一位为对应字符存入字符数组
}

strLength=strlen(minusculeStr);
for(i=strLength;i>0;i--) //打印整数的大写
if(minusculeStr[i-1]!='0')
printf("%s%s",digit[minusculeStr[i-1]-48],unit[i-2]);
elseif(minusculeStr[i-2]=='0'||i==1)
;//Donothing
else
printf("%s",digit[minusculeStr[i-1]-48]); //优化输出格式,更接近书面语
putchar(' ');

return0;
}

9. 如何将小写转化成大写在c语言中

C语言中,字符的存储都是使用ascii值来存储的。
根据ASCII码表,我们可以看出:大、小写字母都是按顺序进行存储的,大写字母的ASCII值区间为:65~90,对应的字母为:'A'-'Z';小写字母的ASCII值区间为:97~122,对应的字母为:'a'-'z',因此,将小写字母转化为大写字母,可以直接将该变量减32即可得到对应的大写字母,如:
char
ch='a';
printf("upper
case
'%c'='%c'\n",
ch,
ch-32
);
如果记不清,大小字母谁大谁小,则可以采用如下方法进行转换:
char
ch='x';
printf("upper
case
'%c'='%c'\n",
ch,
ch-'a'+'A'
);
//减a得到偏移值,加A得到相应的大写字母