帮我写一个c语言的程序,按照我下面的思路写下哦
发布网友
发布时间:2024-10-22 07:46
我来回答
共4个回答
热心网友
时间:2024-11-12 22:55
举手之劳,帮你弄了。小可贵在钓,不在鱼。
一个完整的c程序如下,win-tc和Dev-c++下已运行通过。
#include <stdio.h>
#include <string.h>
#include <conio.h>
char c_je[51]; /*大写金额字符变量*/
char* zh( x ) /*数字金额转换为大写金额子程序*/
double x; /*要转换的金额数*/
{
int i, n, bz;
char je[14]; /*数字金额的字符变量*/
char temp[13];
char f1[10][3] = {"零","壹","贰","叁","肆","伍",
"陆","柒","捌","玖"}; /*数字对应的大写数组变量*/
char f2[11][3] = {"亿","仟","佰","拾","万",
"仟","佰","拾","元","角","分"}; /*每位数字对应单位数组变量*/
sprintf( je, "%.01f", 100*x); /*转换成字符*/
n = strlen( je );
c_je[0] = '\0';
bz = 1;
for( i = 0; i < n; i++ )
{
strcpy( temp, &je[i] ); /*复制到临时数组*/
if( atoi(temp)==0) /*判断第i位后是否全为0*/
{
bz = 2;
break;
}
if( je[i] != '0' )
{
if( bz == 0 )
strcat( c_je, f1[0] );
strcat( c_je, f1[je[i] - '0'] ); /*数字串转化字符串*/
bz = 1;
strcat( c_je, f2[13-n+i]);
}
else
{
if( n-i == 7 && (je[i-1]!='0'||je[i-2]!='0' || je[i-3]!='0')) /*判断万位位置*/
strcat( c_je, "万" );
if( n-i == 3 ) /*判断个位数的元位置*/
strcat( c_je, "元");
bz = 0;
}
}
if( bz == 2 )
{
if( n-i >= 7 && n-i < 10 )
strcat( c_je, "万") ; /*万位数字为0,加‘万’*/
if( n-i >= 3 )
strcat( c_je, "元");
strcat( c_je, "正" ); /*最后不是分位,加“正”*/
}
return c_je; /*返回大写金额*/
}
main()
{
double count;
system("cls");
printf("*********************************************************\n");
printf("* *\n");
printf("* 数字金额转换为大写金额程序 Ver.1.0 *\n");
printf("* *\n");
printf("* By RZLIN *\n");
printf("* *\n");
printf("* 请输入要转换的金额: *\n");
printf("* ");
scanf("%lf", &count );
printf("* 您输入的金额为:%10.2lf *\n",count);
printf("* *\n");
printf("*转换为大写金额是:%s\n", zh( count ) );
printf("* *\n");
puts("* 请按任意键退出... *");
printf("*********************************************************\n");
getch();
}
热心网友
时间:2024-11-12 23:02
前面如何来获取每位的数字很好做了,就不说了
说下我是如何设计实现你要打印的功能
你可以定义一个数组来存放你的每一位数字
数组大小由你获得的位数来定,后一个数组则可以确定为10位或者15位,一般公司用的话也涉及不到超过10个亿的项目吧!然后就是动态生成钱的字符串了!对应数组序列号的元素连接!整个一组合就是你想要的了!做不出来的话你就可以挂科重修或者是不学编程了!好运
热心网友
时间:2024-11-12 22:55
你都说你不懂啦,我们写出来你也判断不出谁写得好,写得不好。那又何必为了15分费力写呢?
热心网友
时间:2024-11-12 23:02
分太少了
热心网友
时间:2024-11-12 22:59
举手之劳,帮你弄了。小可贵在钓,不在鱼。
一个完整的c程序如下,win-tc和Dev-c++下已运行通过。
#include <stdio.h>
#include <string.h>
#include <conio.h>
char c_je[51]; /*大写金额字符变量*/
char* zh( x ) /*数字金额转换为大写金额子程序*/
double x; /*要转换的金额数*/
{
int i, n, bz;
char je[14]; /*数字金额的字符变量*/
char temp[13];
char f1[10][3] = {"零","壹","贰","叁","肆","伍",
"陆","柒","捌","玖"}; /*数字对应的大写数组变量*/
char f2[11][3] = {"亿","仟","佰","拾","万",
"仟","佰","拾","元","角","分"}; /*每位数字对应单位数组变量*/
sprintf( je, "%.01f", 100*x); /*转换成字符*/
n = strlen( je );
c_je[0] = '\0';
bz = 1;
for( i = 0; i < n; i++ )
{
strcpy( temp, &je[i] ); /*复制到临时数组*/
if( atoi(temp)==0) /*判断第i位后是否全为0*/
{
bz = 2;
break;
}
if( je[i] != '0' )
{
if( bz == 0 )
strcat( c_je, f1[0] );
strcat( c_je, f1[je[i] - '0'] ); /*数字串转化字符串*/
bz = 1;
strcat( c_je, f2[13-n+i]);
}
else
{
if( n-i == 7 && (je[i-1]!='0'||je[i-2]!='0' || je[i-3]!='0')) /*判断万位位置*/
strcat( c_je, "万" );
if( n-i == 3 ) /*判断个位数的元位置*/
strcat( c_je, "元");
bz = 0;
}
}
if( bz == 2 )
{
if( n-i >= 7 && n-i < 10 )
strcat( c_je, "万") ; /*万位数字为0,加‘万’*/
if( n-i >= 3 )
strcat( c_je, "元");
strcat( c_je, "正" ); /*最后不是分位,加“正”*/
}
return c_je; /*返回大写金额*/
}
main()
{
double count;
system("cls");
printf("*********************************************************\n");
printf("* *\n");
printf("* 数字金额转换为大写金额程序 Ver.1.0 *\n");
printf("* *\n");
printf("* By RZLIN *\n");
printf("* *\n");
printf("* 请输入要转换的金额: *\n");
printf("* ");
scanf("%lf", &count );
printf("* 您输入的金额为:%10.2lf *\n",count);
printf("* *\n");
printf("*转换为大写金额是:%s\n", zh( count ) );
printf("* *\n");
puts("* 请按任意键退出... *");
printf("*********************************************************\n");
getch();
}
热心网友
时间:2024-11-12 23:02
分太少了
热心网友
时间:2024-11-12 22:57
前面如何来获取每位的数字很好做了,就不说了
说下我是如何设计实现你要打印的功能
你可以定义一个数组来存放你的每一位数字
数组大小由你获得的位数来定,后一个数组则可以确定为10位或者15位,一般公司用的话也涉及不到超过10个亿的项目吧!然后就是动态生成钱的字符串了!对应数组序列号的元素连接!整个一组合就是你想要的了!做不出来的话你就可以挂科重修或者是不学编程了!好运
热心网友
时间:2024-11-12 22:56
你都说你不懂啦,我们写出来你也判断不出谁写得好,写得不好。那又何必为了15分费力写呢?