2018秋季寒假作业5-币值转换
1)代码截图
#include<stdio.h> #include<math.h> int n,m=0; int main(void) { int i,j,k,r,s; r=1,s=1; int f(int q,int n); scanf("%d",&n); for(i=0;n/r>=10;i++) { r=pow(10,i); m++; } if(n==0) { printf("a"); } if(n<10 && n>=0) { m=1; } for(j=1;j<=m;j++) { switch(f(j,n)) { case 0: if(j!=m && j!=m-4) { if(f(j+1,n)==0) { s=0; } else { s=1; } if(s!=0) { printf("a"); } break; } break; case 1: printf("b"); break; case 2: printf("c"); break; case 3: printf("d"); break; case 4: printf("e"); break; case 5: printf("f"); break; case 6: printf("g"); break; case 7: printf("h"); break; case 8: printf("i"); break; case 9: printf("j"); break; } if(f(j,n)==0 && j!=m && j!=m-4) continue; else { if(m==9 && j==5) { if(f(2,n)==0 && f(3,n)==0 && f(4,n)==0 && f(5,n)==0) continue; } switch(m-j) { case 1: printf("S"); break; case 2: printf("B"); break; case 3: printf("Q"); break; case 4: printf("W"); break; case 5: printf("S"); break; case 6: printf("B"); break; case 7: printf("Q"); break; case 8: printf("Y"); break; } } } return 0; } int f(int q,int n) { int k,a; if(q==1) k=n/pow(10,m-1); else { a=n/pow(10,m-q+1); k=n/pow(10,m-q)-a*10; } return k; }
2)设计思路
这题借鉴了李代传同学的流程图,经过思考决定首先定义变量用来储存数据,其次要注意的是必须采用整形数据输入,然后将其分成亿,万,千及以下三个部分考虑。假如·万位第一位为0,则这个0不输出,利用除余的·方放将此依次输出
3)本题调试过程中遇到的问题及解决方案
问题一:那几个测试点老是答案错误
问题一的解决方案:经过调试,我发现r,s的初始值赋值错误了,后来发现if语句的条件少写了一个。太粗心了,调试了好久
4)运行结果截图