| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 807 人关注过本帖
标题:人民币大小写转换程序运行不出来
只看楼主 加入收藏
新令狐冲
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-6-5
收藏
 问题点数:0 回复次数:5 
人民币大小写转换程序运行不出来
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);
}
}
这个程序运行不出来,请教高手来帮我查一下,是怎么回事?谢谢浏览者!!!!!!!!!!!!!!!!1
搜索更多相关主题的帖子: 人民币 大小写 运行 
2006-06-05 20:57
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 
把你的算法先说出来我听听...

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

# include<stdio.h>
# include <stdlib.h>
# include <conio.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--);
}
}
printf("\n");
return 0;
}

今天闲着无聊自己写的.你的我没看.肯定是麻烦的!


[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-06-06 16:31
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 
发到这又发到C区..这种题本来就应该发到C区...

下次再这样我可不做了!

[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-06-06 17:14
热情依然
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:715
专家分:0
注 册:2005-4-5
收藏
得分:0 

不用那么执着,这也是数据结构的一种


c++/C + 汇编 = 天下无敌
2006-06-07 09:09
新令狐冲
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-6-5
收藏
得分:0 

对不起啊SunShining

2006-06-07 10:35
快速回复:人民币大小写转换程序运行不出来
数据加载中...
 
   



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

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