⑴ 急!!!!!!!!!怎樣用C語言把阿拉伯數字轉換成中文大寫(在VC++中)
先要確定好數字對應的漢字,就是定義胡滑字典,例如1、2、3、,,,對應壹、貳、叄。。。等,另外十、百、棗態仟也要定義好,之後就是對數據進行分解,將分解得到的每個數字用對應的大寫代替,當然這個過程中有十、百、仟等位數的確定,加入的相應的位置就可以了。提示一下,對數據分解,通常是除褲岩臘10,對10取余數的方法,可以參考一下數據結構,
⑵ 怎麼將中文轉換成數字代碼
以Excel為例昌清,其中的具體步驟如下:
1、直接打開相關窗口,在方方格子那磨枝里點擊數值進入。
⑶ C語言編程:數字金額轉換為中文大寫金額
#include<stdio.h>
#include<conio.h>
main()
{
int i,size=0;
char s[11];
printf("請輸入金額:");
scanf("%s",s);
printf("次數的中文大寫金額為:\n\n");
printf("佰\t拾\t萬\t仟\t佰\t拾消孝\t元\t角\t分\n");
for(i=0;s[i]!='\0';i++)
{
if(s[i]=='.') break;
size++;
}
for(i=0;i<(7-size);i++)
{
printf(" \t");
}
for(i=0;s[i]!='\0';i++)
{
switch(s[i])
{
case '0':printf("零\t");break;
case '1':printf("壹\t"拿蔽稿);break;
case '2':printf("貳\t");break;
case '3':printf("叄\並扒t");break;
case '4':printf("肆\t");break;
case '5':printf("伍\t");break;
case '6':printf("陸\t");break;
case '7':printf("柒\t");break;
case '8':printf("捌\t");break;
case '9':printf("玖\t");break;
}
}
getch();
}
結果:(可能不是你想要的,如果不是你想要的結果,你能給我你想要的結果嗎?)
⑷ c語言如何實現將金額的大寫漢字轉成阿拉伯數字
個人提供一個思路吧 感覺還是可行的
對字元串掃一遍 查找「塊」「元」「角」「毛」這樣的區分符
將這個區分符用一個特定字元代替 如「#」
然後對字元串從左至右進行二次掃描 對區分符之間的用漢字表示的數字部分進行還原
記得要對「十」「百」「千」「萬」進行處理哦
舉個例子吧
比如 「三十五塊八毛二」
第一遍掃描中 字元串被替換為「三十五#八#二」
然後在第二遍掃描中
設置金額初始值 sum=0,當前獨到的數字值a=0
從左至右開始掃
掃描到'三' a=3
掃描到'十' sum+=a*10
掃描到'五' a=5
掃描到'#' sum+=a
掃描到'八' sum+=(8.0/10)
掃描到'#' 無動作
掃描到'二' sum+=(2.0/100)
掃描到'\0' 輸出結果 程序結束
金額被計算出來為35.82
注意以上過程中掃描到第一個#的時候就不必使用變數a了 因為小數部分沒有必要保留當前讀取到的數字
這只是我個人的一個初步想法,具體的實現細節還需要樓主仔細掂量
呵呵 加油^^
⑸ C#string的格式化貨幣Format()方法
C# Format()方法參數由零或多個文本序列與零或多個索引佔位符混合組成,其中索引佔位符稱為格式項,對應於與此方法的參數
列表中的對象。
public static string Format( string format, Object arg0 )
把指定字元串中一個或多個格式項替換耐段宏為指定對象的字元串表示形式。
string.Format("{0:C0}",8)
string關鍵字,Format()調用方法,C貨幣,C0是小數位,8值。
C 或 c
貨幣
數字轉換為表示貨幣金額的字元串。轉換由當前 NumberFormatInfo 對象的貨幣格式信息控制。
精度說明符指示所需的小昌冊數位數。燃櫻如果省略精度說明符,則使用當前 NumberFormatInfo 對象給定的默認貨幣精度。
Talk is cheap, show me the code. 空談誤國,實干興邦,下面就是案例。
使用string設計3個字元變數CjY、Cj、Cj0,把Format()方法格式化好的變數賦值給前面設計好的三個字元串變數。C0、C1、C2,是小數位。
0:c0、0:c1、0:c2,保留小數為是不一樣的 8.0、$8.00。
⑹ Excel 怎樣用公式把貨幣轉化成數值用
一、用公式將文本數字轉成數值:
假設文本數據寫在A1單元格,則可以在B1單元格寫入以下任一個公式
公式一
=A1*1
公式二
=A1、1
公式三
=A1+0
公式四
=A1-0
公式五
=--A1
公式六
=VALUE(A1)
二、把文本數值在原單元格直接轉換成數值:
方法一
選中單元格----右鍵----設置單元格格式---改"文本"為"常規"格式---再進入單元格回車確認.如果是大批量的單元格是文本格式的數值,則要一個一個的進入單元格進行回車確認,所以很不方便.
方法二
選中一個空單元格----右鍵----復制----再選中文本格式所在的單元格和單元格區域----右鍵----選擇性粘貼---加---確定.這樣就是通過運算的方法使選中的單元格或單元格區域進行加0處理使其轉為常規數字的方式.
方法三
選中文本格式數值所在的單元格或單元格區域------在選中的單元格或單元格區域旁會出現一個選項圖標----點擊會出現選項菜單----選擇"轉為數字"
⑺ C語言問題 將輸入數字的轉換成中文
下面是後台代碼:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int i=0,count=0; //計數器
char nums[10][4]={"壹","貳","叄","肆","伍","陸","柒","捌","玖","拾"};
int money;
int moneys[5]; //默認可以存儲5個數字
printf("請輸入金額:");
scanf("%d",&money);
while(money != 0){
moneys[i] = money % 10; //取個位數
money /= 10; //去掉個位數
i++;
count++;
}
printf("你輸入一共有%d個數字! ",count);
for(i=count-1;i>=0;i--){
printf("%d----%s ",moneys[i],nums[moneys[i]-1]);
}
return 0;
}
(7)c貨幣中文轉數字擴展閱讀
C語言特點
C語言普適性最強的一種計算機程序編輯語言,它不僅可以發揮出高級編程語言的功用消橋,還具有匯編語言的優褲大點,因此相對於其它編程語言,它具有自己獨特的特點。具體體現在以下三個方面:
其一,廣泛性。C 語言的運算范圍的大小直接決定了其優劣性。C 語言中包含了34種運算符,因此運算范圍要超出許多其它語言,此外其運算結果的表達形式也十分豐富。此外,C 語言包含了字元型、指針型等多種數拿純猛據結構形式,因此,更為龐大的數據結構運算它也可以應付。
其二,簡潔性。9 類控制語句和32個KEYWORDS是C語言所具有的基礎特性,使得其在計算機應用程序編寫中具有廣泛的適用性,不僅可以適用廣大編程人員的操作,提高其工作效率,同 時還能夠支持高級編程,避免了語言切換的繁瑣。
其三,結構完善。C語言是一種結構化語言,它可以通過組建模塊單位的形式實現模塊化的應用程序,在系統描述方面具有顯著優勢,同時這一特性也使得它能夠適應多種不同的編程要求,且執行效率高。
⑻ C#將輸入的數字轉換為大寫漢字,用於貨幣,求教!
直接調chang()這個方法就行
string ht1 = chang(Convert.ToDouble(234.45));
public static string chang(double Digital)
{
//將小寫金額轉換成大寫金額
String[] MyScale = { "分", "角", "圓", "拾", "佰", "仟", "萬", "拾", "佰", "仟", "億", "拾", "佰", "仟", "兆", "拾", "佰", "仟" };
String[] MyBase = { "零", "壹", "貳", "叄", "肆", "伍", "陸", "柒", "捌", "玖" };
String moneyStr = "";
bool isPoint = false;
string moneyDigital = Digital.ToString();
if (moneyDigital.IndexOf(".") != -1)
{
moneyDigital = moneyDigital.Remove(moneyDigital.IndexOf("."), 1);
isPoint = true;
}
for (int i = moneyDigital.Length; i > 0; i--)
{
int MyData = Convert.ToInt16(moneyDigital[moneyDigital.Length - i].ToString());
moneyStr += MyBase[MyData];
if (isPoint == true)
{
moneyStr += MyScale[i - 1];
}
else
{
moneyStr += MyScale[i + 1];
}
}
while (moneyStr.Contains("零零"))
moneyStr = moneyStr.Replace("零零", "零");
moneyStr = moneyStr.Replace("零億", "億");
moneyStr = moneyStr.Replace("億萬", "億");
moneyStr = moneyStr.Replace("零萬", "萬");
moneyStr = moneyStr.Replace("零仟", "零");
moneyStr = moneyStr.Replace("零佰", "零");
moneyStr = moneyStr.Replace("零拾", "零");
while (moneyStr.Contains("零零"))
moneyStr = moneyStr.Replace("零零", "零");
moneyStr = moneyStr.Replace("零圓", "圓");
moneyStr = moneyStr.Replace("零角", "");
moneyStr = moneyStr.Replace("零分", "");
moneyStr = moneyStr + "整";
return moneyStr;
}
⑼ 急求C語言貨幣單位和長度單位轉換的C程序
...
大哥 這個比較容易自己發貼子的時間 去看點書 保你搞定
⑽ c語言:在unix下的程序,將輸入的數字金額轉化為中文大寫輸出,且要驗證輸入是否合法,急求高人指點啊!
public class Trans2RMB {
/**
* 測試程序的可行性
* @param args
*/
public static void main(String[] args) {
System.out.println("--------將數字轉換成中文金額的大寫形式------------\n");
Trans2RMB t2r = new Trans2RMB();
String s = t2r.cleanZero(t2r.splitNum(t2r.roundString(t2r.getNum())));
// 如果轉換過後是一個空串,則不輸出屏幕
if(!"".equals(s)) {
System.out.println("轉換成中文後為:" + s);;
}
System.out.println("\n---------------------------------------------");
}
/**
* 從命令行接收一個數,在其中調用 checkNum() 方法對其進行
* 驗證,並返回相應的值
* @return 如果輸入合法,返回輸入的這個數
*/
private String getNum() {
String s = null;
System.out.println("請輸入一個數字(精確到小數點後兩位):");
// 從命令行輸入這個浮點數
java.util.Scanner scanner = new java.util.Scanner(System.in);
s = scanner.next();
// 判斷用戶輸入是否合法
// 若合法,返回這個值;若非法返回 "0"
if(this.checkNum(s)) {
return s;
} else {
return "";
}
}
/**
* 判斷用戶輸入的數據是否合法,用戶只能輸入大於零的數字,不能輸入其它字元
* @param s String
* @return 如果用戶輸入數據合法,返回 true,否則返回 false
*/
private boolean checkNum(String s) {
// 如果用戶輸入的數里有非數字字元,則視為非法數據,返回 false
try {
float f = Float.valueOf(s);
// 如果這個數小於零則視為非法數據,返回 false
if(f < 0) {
System.out.println("非法數據,請檢查!");
return false;
}else {
return true;
}
} catch (NumberFormatException e) {
System.out.println("非法數據,請檢查!");
return false;
}
}
/**
* 把用戶輸入的數以小數點為界分割開來,並調用 numFormat() 方法
* 進行相應的中文金額大寫形式的轉換
* 註:傳入的這個數應該是經過 roundString() 方法進行了四捨五入操作的
* @param s String
* @return 轉換好的中文金額大寫形式的字元串
*/
private String splitNum(String s) {
// 如果傳入的是空串則繼續返回空串
if("".equals(s)) {
return "";
}
// 以小數點為界分割這個字元串
int index = s.indexOf(".");
// 截取並轉換這個數的整數部分
String intOnly = s.substring(0, index);
String part1 = this.numFormat(1, intOnly);
// 截取並轉換這個數的小數部分
String smallOnly = s.substring(index + 1);
String part2 = this.numFormat(2, smallOnly);
// 把轉換好了的整數部分和小數部分重新拼湊一個新的字元串
String newS = part1 + part2;
return newS;
}
/**
* 對傳入的數進行四捨五入操作
* @param s String 從命令行輸入的那個數
* @return 四捨五入後的新值
*/
private String roundString(String s) {
// 如果傳入的是空串則繼續返回空串
if("".equals(s)) {
return "";
}
// 將這個數轉換成 double 類型,並對其進行四捨五入操作
double d = Double.parseDouble(s);
// 此操作作用在小數點後兩位上
d = (d * 100 + 0.5) / 100;
// 將 d 進行格式化
s = new java.text.DecimalFormat("##0.000").format(d);
// 以小數點為界分割這個字元串
int index = s.indexOf(".");
// 這個數的整數部分
String intOnly = s.substring(0, index);
// 規定數值的最大長度只能到萬億單位,否則返回 "0"
if(intOnly.length() > 13) {
System.out.println("輸入數據過大!(整數部分最多13位!)");
return "";
}
// 這個數的小數部分
String smallOnly = s.substring(index + 1);
// 如果小數部分大於兩位,只截取小數點後兩位
if(smallOnly.length() > 2) {
String roundSmall = smallOnly.substring(0, 2);
// 把整數部分和新截取的小數部分重新拼湊這個字元串
s = intOnly + "." + roundSmall;
}
return s;
}
/**
* 把傳入的數轉換為中文金額大寫形式
* @param flag int 標志位,1 表示轉換整數部分,0 表示轉換小數部分
* @param s String 要轉換的字元串
* @return 轉換好的帶單位的中文金額大寫形式
*/
private String numFormat(int flag, String s) {
int sLength = s.length();
// 貨幣大寫形式
String bigLetter[] = {"零", "壹", "貳", "叄", "肆", "伍", "陸", "柒", "捌", "玖"};
// 貨幣單位
String unit[] = {"元", "拾", "佰", "仟", "萬",
// 拾萬位到仟萬位
"拾", "佰", "仟",
// 億位到萬億位
"億", "拾", "佰", "仟", "萬"};
String small[] = {"分", "角"};
// 用來存放轉換後的新字元串
String newS = "";
// 逐位替換為中文大寫形式
for(int i = 0; i < sLength; i ++) {
if(flag == 1) {
// 轉換整數部分為中文大寫形式(帶單位)
newS = newS + bigLetter[s.charAt(i) - 48] + unit[sLength - i - 1];
} else if(flag == 2) {
// 轉換小數部分(帶單位)
newS = newS + bigLetter[s.charAt(i) - 48] + small[sLength - i - 1];
}
}
return newS;
}
/**
* 把已經轉換好的中文金額大寫形式加以改進,清理這個字
* 符串裡面多餘的零,讓這個字元串變得更加可觀
* 註:傳入的這個數應該是經過 splitNum() 方法進行處理,這個字
* 符串應該已經是用中文金額大寫形式表示的
* @param s String 已經轉換好的字元串
* @return 改進後的字元串
*/
private String cleanZero(String s) {
// 如果傳入的是空串則繼續返回空串
if("".equals(s)) {
return "";
}
// 如果用戶開始輸入了很多 0 去掉字元串前面多餘的'零',使其看上去更符合習慣
while(s.charAt(0) == '零') {
// 將字元串中的 "零" 和它對應的單位去掉
s = s.substring(2);
// 如果用戶當初輸入的時候只輸入了 0,則只返回一個 "零"
if(s.length() == 0) {
return "零";
}
}
// 字元串中存在多個'零'在一起的時候只讀出一個'零',並省略多餘的單位
/* 由於本人對演算法的研究太菜了,只能用4個正則表達式去轉換了,各位大蝦別介意哈... */
String regex1[] = {"零仟", "零佰", "零拾"};
String regex2[] = {"零億", "零萬", "零元"};
String regex3[] = {"億", "萬", "元"};
String regex4[] = {"零角", "零分"};
// 第一輪轉換把 "零仟", 零佰","零拾"等字元串替換成一個"零"
for(int i = 0; i < 3; i ++) {
s = s.replaceAll(regex1[i], "零");
}
// 第二輪轉換考慮 "零億","零萬","零元"等情況
// "億","萬","元"這些單位有些情況是不能省的,需要保留下來
for(int i = 0; i < 3; i ++) {
// 當第一輪轉換過後有可能有很多個零疊在一起
// 要把很多個重復的零變成一個零
s = s.replaceAll("零零零", "零");
s = s.replaceAll("零零", "零");
s = s.replaceAll(regex2[i], regex3[i]);
}
// 第三輪轉換把"零角","零分"字元串省略
for(int i = 0; i < 2; i ++) {
s = s.replaceAll(regex4[i], "");
}
// 當"萬"到"億"之間全部是"零"的時候,忽略"億萬"單位,只保留一個"億"
s = s.replaceAll("億萬", "億");
return s;
}
}