博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1005. Spell It Right (20)
阅读量:5077 次
发布时间:2019-06-12

本文共 3787 字,大约阅读时间需要 12 分钟。

原题连接:https://www.patest.cn/contests/pat-a-practise/1005

这道题我是将读入的数处理后进行相加,然后统计总数的位数,然后将总数不断的取余、模10,每次余数入栈,最后进行输出。

总的来说我的思路以及方法还是稍有繁琐,尤其是输出那块。代码如下:

1 #include
2 #include
3 #include
4 typedef struct SNode{ 5 int Data; 6 struct SNode *Next; 7 }Stack; 8 9 Stack *CreatStack() 10 { 11 Stack *S=malloc(sizeof(struct SNode)); 12 S->Next=NULL; 13 return S; 14 } 15 16 void Push(Stack *S,int X) 17 { 18 Stack *cell=malloc(sizeof(struct SNode)); 19 cell->Data=X; 20 cell->Next=S->Next; 21 S->Next=cell; 22 } 23 bool IsEmpty(Stack *S) 24 { 25 return (S->Next==NULL); 26 } 27 int Pop(Stack *S) 28 { 29 if (!IsEmpty(S)){ 30 int X; 31 Stack*Tmpcell=malloc(sizeof (struct SNode)); 32 Tmpcell=S->Next; 33 X=Tmpcell->Data; 34 S->Next=Tmpcell->Next; 35 free(Tmpcell); 36 return X;} 37 } 38 39 int main() 40 { 41 char c; 42 int s=0; 43 int X,Data; 44 Stack *S; 45 S=CreatStack(); 46 47 while ((c=getchar())!='\n') 48 { 49 s+=c-'0'; 50 } 51 52 int tmp=s; 53 int cnt=1; 54 while((tmp/=10))cnt++; 55 56 while(cnt--){ 57 X=s%10; 58 Push(S,X); 59 s/=10; 60 } 61 62 int flag=0; 63 while (!IsEmpty(S)) 64 { 65 Data=Pop(S); 66 switch (Data) 67 { 68 case 1: 69 { 70 if (!flag){printf("one");flag=1;} 71 else printf(" one"); 72 }break; 73 case 2: 74 { 75 if (!flag){printf("two");flag=1;} 76 else printf(" two"); 77 }break; 78 case 3: 79 { 80 if (!flag){printf("three");flag=1;} 81 else printf(" tree"); 82 }break; 83 case 4: 84 { 85 if (!flag){printf("four");flag=1;} 86 else printf(" four"); 87 }break; 88 case 5: 89 { 90 if (!flag){printf("five");flag=1;} 91 else printf(" five"); 92 }break; 93 case 6: 94 { 95 if (!flag){printf("six");flag=1;} 96 else printf(" six"); 97 }break; 98 case 7: 99 {100 if (!flag){printf("seven");flag=1;}101 else printf(" seven");102 }break;103 case 8:104 {105 if (!flag){printf("eight");flag=1;}106 else printf(" eight");107 }break;108 case 9:109 {110 if (!flag){printf("nine");flag=1;}111 else printf(" nine");112 }break;113 case 0:114 {115 if (!flag){printf("zero");flag=1;}116 else printf(" zero");117 }break;118 }119 }120 return 0;121 }
View Code

然后参考了他人的代码,别的不说,单就输出那块用了hash映射是我需要学习和掌握的地方:

1 #include
2 int main() 3 { 4 char str[10][6]={
"zero", "one", "two", "three", "four", "five", "six", 5 "seven", "eight", "nine"}; 6 int arr[5]; 7 int index=0; 8 9 char ch;10 int sum=0;11 while (1)12 {13 scanf("%c",&ch);14 if (ch>='0' && ch<='9')sum+=(ch-'0');15 else if (ch=='\n')break;16 }17 if (sum==0){printf("zero");return 0;}18 while(sum)19 {20 arr[index++]=sum%10;21 sum/=10;22 }23 int i;24 for(i=index-1;i>=0;i--)25 {26 printf("%s",str[arr[i]]);27 if (i)printf(" ");28 }29 return 0;30 }
View Code

 

转载于:https://www.cnblogs.com/wuxiaotianC/p/6298463.html

你可能感兴趣的文章
WPF中实现多选ComboBox控件
查看>>
读构建之法第四章第十七章有感
查看>>
Windows Phone开发(4):框架和页 转:http://blog.csdn.net/tcjiaan/article/details/7263146
查看>>
Unity3D研究院之打开Activity与调用JAVA代码传递参数(十八)【转】
查看>>
python asyncio 异步实现mongodb数据转xls文件
查看>>
TestNG入门
查看>>
【ul开发攻略】HTML5/CSS3菜单代码 阴影+发光+圆角
查看>>
[ZJOI2007]棋盘制作 【最大同色矩形】
查看>>
IOS-图片操作集合
查看>>
模板统计LA 4670 Dominating Patterns
查看>>
团队项目开发客户端——登录子系统的设计
查看>>
IO—》Properties类&序列化流与反序列化流
查看>>
session如何保存在专门的StateServer服务器中
查看>>
react展示数据
查看>>
测试计划
查看>>
选择器
查看>>
Mysql与Oracle 的对比
查看>>
jquery实现限制textarea输入字数
查看>>
thinkphp5 csv格式导入导出(多数据处理)
查看>>
PHP上传RAR压缩包并解压目录
查看>>