| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1447 人关注过本帖
标题:一道C语言的难题
只看楼主 加入收藏
wte03
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-4-17
收藏
 问题点数:0 回复次数:28 
一道C语言的难题
最近在一本C语言书见到一道题:编写一个程序,把从终端上输入的整数用英语显示该整数的每一位数.如用户输入了392,那么程序应该显示 three nine two.请问哪位高手能帮我忙,写写这个程序,谢谢
搜索更多相关主题的帖子: C语言 难题 
2007-04-17 16:02
spider1987
Rank: 1
等 级:新手上路
帖 子:172
专家分:0
注 册:2007-2-18
收藏
得分:0 
就是3 9 2
只输出 单词 three nine two是吗?
不存在10位百位的吧?
2007-04-17 16:09
jmy2446267
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2007-4-14
收藏
得分:0 

如果事先不知道输入的位数的话可以这样。
先建立一个链表,存入每个数.
typedef struct record
{
int n;
struct record *next;
}r,*pr;

pr input()
{
pr p,q=NULL;char c;
while((c=getchar())!='\n')
{
p=(pr)malloc(sizeof(r));
p->n=c-'0';
p->next=q;
q=p;
}
return p;
}
再定义一个字符串数组
char *pp[10]={"zero","one","two","three","four","five","six","seven","eight","nine"};
接下来就从链表头开始取出每个节点的数,然后输出这个数对应的数组中的字符串就行了。这个题的难点就是如何存储任意位数的问题。

[此贴子已经被作者于2007-4-17 16:25:20编辑过]


仗剑天下,快意恩仇!
2007-04-17 16:23
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
收藏
得分:0 

#include <stdio.h>
#include <conio.h>
int exchange(int);
int main(void)
{
int number;
clrscr();
printf("Please input a number:\n");
scanf("%d",&number);

/*For a int-type data in Turboc2.0,
it's value-area is -32768~32767*/
if(number<0) number=-number;
if(number>9999)
{
exchange(number/10000);
exchange((number%10000)/1000);
exchange((number%1000)/100);
exchange((number%100)/10);
exchange(number%10);
}
else if(number>999)
{
exchange(number/1000);
exchange((number%1000)/100);
exchange((number%100)/10);
exchange(number%10);
}
else if(number>99)
{
exchange(number/100);
exchange((number%100)/10);
exchange(number%10);
}
else if(number>9)
{
exchange(number/10);
exchange(number%10);
}
else
exchange(number);
getch();
}
int exchange(int number)
{
if(number==0)
printf("zero ");
else if(number==1)
printf("one ");
else if(number==2)
printf("two ");
else if(number==3)
printf("three ");
else if(number==4)
printf("four ");
else if(number==5)
printf("five ");
else if(number==6)
printf("six ");
else if(number==7)
printf("seven ");
else if(number==8)
printf("eight ");
else if(number==9)
printf("nine ");
}


wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2007-04-17 16:35
爱以走远
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:52
帖 子:7542
专家分:21
注 册:2007-3-16
收藏
得分:0 
可以用switch
case 来做
在用一个循环

   好好活着,因为我们会死很久!!!
2007-04-17 16:41
wte03
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-4-17
收藏
得分:0 
恩恩!谢谢各位高手
2007-04-17 16:42
guosheng1987
Rank: 1
等 级:新手上路
帖 子:59
专家分:0
注 册:2007-4-16
收藏
得分:0 
可以用指针变量指向字符串,外层用for语句循环控制字符走向,然后用switch(i) case 0到9,输出"zero","one","two","three","four","five","six","seven","eight","nine".
2007-04-17 16:43
wte03
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-4-17
收藏
得分:0 
请问用switch
case 来做怎么编写呢?
2007-04-17 16:45
guosheng1987
Rank: 1
等 级:新手上路
帖 子:59
专家分:0
注 册:2007-4-16
收藏
得分:0 

#include "stdlib.h"
#include "stdio.h"
#include "string.h"

int main()
{
char str[10];
char *p;
gets(str);
p = str;
for(;*p!='\0';p++)
switch(*p)
{
case '0':printf("zero");break;
case '1':printf("zero");break;
}




printf("%s",p);

system("pause");
}
其他你自己写把,不要什么都依赖别人啊

2007-04-17 16:55
wte03
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-4-17
收藏
得分:0 
好的!谢谢您
2007-04-17 17:05
快速回复:一道C语言的难题
数据加载中...
 
   



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

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