PAT乙级:1017. A除以B (C)
2016-08-18 21:46
423 查看
本题不难,需要自己用字符串,简易实现除法效果。代码如下:
#include <stdio.h> #include <stdlib.h> int charToInt(char c) { return (int)(c-'0'); } char intToChar(int i) { return (char)(i+'0'); } int main() { char A[1000]; int B; scanf("%s %d",&A,&B); char* t=A; int length=0;//A的长度,即记录A的位数 //获得A的length while(*t!='\0') { t++; length++; } char Q[1000];//商 int R;//余数 int Q_index=0; //先考虑数小的情况,然后考虑数大的情况 if(length==1) { Q[0]=intToChar(charToInt(A[0])/B); Q[1]='\0'; R=charToInt(A[0])%B; }else{ int i=0; int temp_R=0; int now_number=0; for(;i<length;i++) { now_number=charToInt(A[i])+temp_R*10;//由于是逐位除的(i++),所以只用增加上一位没有除尽的 int now_Q=now_number/B;//当前除法的商 if(now_Q==0) { if(Q_index==0) { //如果目前商还没有一个正整数填入,不能在前面赋上零 }else{ Q[Q_index]=intToChar(now_Q); Q_index++; } }else { Q[Q_index]=intToChar(now_Q); Q_index++; } temp_R=now_number%B;//获取本次的余数,这里很好想,因为if条件判断是是否商零。无论商不商0,都会有余数,所以余数写在最后即可。 } R=temp_R;//最后的余数为最后一次除数计算的余数 Q[length]='\0';//为商添加字符串结尾 } printf("%s %d",Q,R); system("pause"); return 0; }
祝大家编程顺利,生活幸福、美满!
相关文章推荐
- [PAT-乙级]1017.A除以B
- PAT 乙级 1017. A除以B (20)
- PAT 乙级 1017. A除以B
- 1017. A除以B (20) PAT乙级
- pat乙级1017. A除以B (20)
- PAT 乙级 1017. A除以B (20) Java版
- 浙江大学PAT_乙级_1017. A除以B (20)
- PAT乙级1017. A除以B (20)
- [PAT乙级]1017. A除以B (20)
- 1017. A除以B (20)-PAT乙级真题
- PAT乙级1017. A除以B (20)
- PAT乙级1017 A除以B
- PAT-乙级-1017. A除以B (20)
- PAT乙级1017. A除以B 大数除以小数
- 乙级 PAT 1017. A除以B (20)
- PAT乙级1017. A除以B (20)&&1022. D进制的A+B (20)
- PAT乙级 1017. A除以B (20)--模拟大数除法
- 1017. A除以B (20)--PAT乙级
- PAT(乙级)1017. A除以B
- PAT-乙级-1017. A除以B (20)