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得到相應的大寫字母