⑴ 急!!!!!!!!!怎样用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;
}
}