| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1718 人关注过本帖
标题:人民币大小写转换程序运行不出来,大哥,大姐,来看一下
只看楼主 加入收藏
新令狐冲
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-6-5
收藏
 问题点数:0 回复次数:15 
人民币大小写转换程序运行不出来,大哥,大姐,来看一下
struct num
{
char money[20];
int len;
};
void substring (struct num *sub,struct num *s,int pos,int len) /*********求子串**********/
{
int i;
s->money[0]='\0';
s->len=0;
if ( pos<1 || pos>sub->len || len<0 || len>sub->len-pos+1)
printf("\n输入错误\n");
for(i=0;i<len;i++)
s->money[i]=sub->money[pos+i-1];
s->money[i]='\0';
s->len=i;
}
int Index(struct num *S, struct num *T, int pos) /*******20****子串定位***********/
{
int i=pos-1, j=0;
while(i<=S->len&&j<=T->len)
{
if (S->money[i] == T->money[j])
{
++i;
++j;
}
else
{
i = i-j+1;
j = 0;
}
}
if (j > T->len)
return i-T->len+1;
else printf("\n没有找到\n");
}
void reverse(struct num *ch) /*******39*****串倒置**************/
{
int len;
int i;
char middle;
for(i=0; i<ch->len/2; i++)
{
middle=ch->money[i];
ch->money[i] = ch->money[ch->len-i-1];
ch->money[ch->len-i-1]=middle;
}
ch->money[ch->len] = '\0'; /********51*********/
}
void numbertrans(char ch)
{
switch(ch)
{
case 0:printf("零");break;
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;
default:printf("你输如的钱数有误!");
}
}
void trans1(int i) /**************70*************/
{
if(i==1)printf("万");
else if(i==2)printf("亿");
else ;
}
void trans0(int len,int i)
{
if(len==4)
if(i==0) printf("千");
else if(i==1) printf("百"); /**************80*************/
else if(i==2) printf("拾");
else ;
if(len==3)
if(i==0) printf("百");
else if(i==1) printf("拾");
else ;

if(len==2)
if(i==0) printf("拾");
else ;
}
void trans(struct num ch)
{
int i;
for(i=0;i<ch.len;i++)
{
numbertrans(ch.money[i]);
trans0(ch.len,i);
}
}
main() /***********100******主函数**************/
{
int i,s=1,j=4,k,begin,length,post,start=0;
struct num *p;
struct num yourmoney,dot,substring1,substring2,substring3;
substring1.money[0]='\0';
substring1.len=0;
substring2.money[0]='\0';
substring2.len=0;
substring3.money[0]='\0';
substring3.len=0; /*110*/
struct num substring[3];
for(i=0;i<3;i++)
{
substring[i].money[0]='\0';
substring[i].len=0;
}
dot.money[0]='.'; /**********117***********/
dot.money[1]='\0';
dot.len=1;
yourmoney.money[0]='\0';
yourmoney.len=0;
printf("请你输入你的钱数:\n");
printf("输入你的钱数以后按回车键!\n");
for(i=0;i<20;i++)
{
scanf("%c",&yourmoney.money[i]);
}
yourmoney.money[i]='\0';
yourmoney.len=i;
post=Index(&yourmoney,&dot,start);
begin=start;
length=post+1;
substring[i].money[0]='\0';
substring[i].len=0;
substring(&yourmoney,
&substring1,begin,length); /*****求整钱数*125*****/
begin=post+2;
length=start+2;
substring(&yourmoney,
&substring2,begin,length);/*****求零钱数*******/
reverse(&substring1);
k=substring1.len/j;
if(substring1.len%j)
{
begin=k*j;
length=substring1.len-k*j;
substring(&substring1,&substring3,begin,length);/**********135*********/
reverse(&substring3);
}
for(i=0,s=1;i<k;i++)
{
if(i==0)
{
p=substring+i;
begin=s;
length=j;
substring(&substring1,p,begin,length);
}
else
{
p=substring+i;
begin=i*j+1;
length=j;
substring(&substring1,p,begin,length);
}
reverse(p);
}
trans(substring3);
trans1(k);
for(i=k-1;i>=0;i--)
{
trans(substring[i]);
trans1(i);
}
}
这个程序我运行不出来,请高手帮我运行一下,看是什么原因?谢谢个为浏览者!!!!!!!!!!
搜索更多相关主题的帖子: 人民币 大姐 大小写 运行 
2006-06-05 21:11
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 

请您把编程任务完整准确地写出来。因为从你的程序不容易猜出你的任务。是不是这样
如果输入 1234.56
应该输出 壹仟贰百叄拾肆圆伍角陆分

[此贴子已经被作者于2006-6-5 21:30:46编辑过]


落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-06-05 21:17
新令狐冲
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-6-5
收藏
得分:0 
是啊,就是着个样子,谢谢你!如何编出来啊?
2006-06-06 11:04
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
这会不行,眼镜忘在办公室了,几乎看不大见

晚饭时候编吧

落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-06-06 12:38
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 

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

int find(char *k)
{
int i=0;
while(*(k+i)!='.')
{
if(*(k+i)=='\0') return(-1);
i++;
}
return(i);
}


void trans(int count1)
{ int x;
if(count1<0)
switch(count1)
{
case -1:printf("角"); return;
case -2:printf("分"); return;
default : printf("error!") ;return;
}

else
if(count1>8)
{
x=count1-8;
switch(x)
{
case 1: break;
case 2:printf("十"); return;
case 3:printf("百"); return;
case 4:printf("千"); return;
}
if(x==1) printf("亿");
}
else
if(count1>4)
{
x=count1-4;
switch(x)
{
case 1: break;
case 2:printf("十"); return;
case 3:printf("百"); return;
case 4:printf("千"); return;
}
if(x==1) printf("万");
}
else
{
x=count1;
switch(x)
{
case 1:printf("元"); return;
case 2:printf("十"); return;
case 3:printf("百"); return;
case 4:printf("千"); return;
}

}

}

void numbertrans(char ch,int count)
{
switch(ch)
{
case '0' : printf("零");trans(count);return;
case '1' : printf("一");trans(count);return;
case '2' : printf("二");trans(count);return;
case '3' : printf("三");trans(count);return;
case '4' : printf("四");trans(count);return;
case '5' : printf("五");trans(count);return;
case '6' : printf("六");trans(count);return;
case '7' : printf("七");trans(count);return;
case '8' : printf("八");trans(count);return;
case '9' : printf("九");trans(count);return;
default:printf("NO");
}
}


int main()
{
char money[10];
int count,i=0,k,x=-1;
gets(money);


if((count=find(money))!=-1 )
for(i=0,k=count;money[i]!='\0';i++,k--)
{
if(money[i]=='.') continue;
if(i<count)
numbertrans(money[i],k);
else
{
if(money[i]=='0') {x--;continue; }
numbertrans(money[i],x--);
}
}
else
for(i=0,k=strlen(money);money[i]!='\0';i++,k--)
numbertrans(money[i],k);
printf("\n");
return 0;
}

汗....在数据结构发完又在C面发.幸亏我先写出来了.要叫"星星"先写出来..我又白忙呼了

刚才有个BUG.

[此贴子已经被作者于2006-6-6 16:44:43编辑过]


[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-06-06 16:35
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 
"星星"来找找BUG吧...

[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-06-06 16:46
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 

/*人民币的小写→大写转换

例如输入1204.78,则输出应

为壹仟贰佰零肆圆柒角八分

*/

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

main()

{

double rmb;

char s[80];

char mo[]="**仟**佰**拾**万**仟**佰**拾**亿**仟**佰**拾**万**仟**佰**拾**圆**角**分\n";

char hz[]="零壹贰叁肆伍陆柒捌玖";

int i,n;

printf("人民币小写: ");

scanf("%lf",&rmb);

if(rmb<=0||rmb>=1e16)exit(0);

sprintf(s,"%.2lf",rmb);

for(n=0;s[n]!='.';n++);

strncpy(mo+4*16,hz+2*(s[n+1]-'0'),2);

strncpy(mo+4*17,hz+2*(s[n+2]-'0'),2);

i=15;while(n--)

strncpy(mo+4*(i--),hz+2*(s[n]-'0'),2);

puts(mo+4*++i);

}


落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-06-06 17:30
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 
以下是引用–★–在2006-6-6 17:37:00的发言:
5楼:请输入
1.23456e3
试试

晕..我是按字符串处理..你的按长整处理.肯定不一样的...

要改的话可能也可以...把数字再存入字符串呗!~


[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-06-06 17:57
漂亮衣裳
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-2-21
收藏
得分:0 
不行,现在还没那么本事.!!!!
2006-06-06 22:20
rejoice007
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2006-4-21
收藏
得分:0 
先把算法搞清楚吗?
2006-06-06 22:46
快速回复:人民币大小写转换程序运行不出来,大哥,大姐,来看一下
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013449 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved