|
发表于 2019-2-28 11:06:12
|
显示全部楼层
本帖最后由 行客 于 2019-2-28 11:13 编辑
- #include<stdio.h>
- int main() {
- int num[1000]; //存放被除数
- int q[1000]; //存放商
- int r, lenth=0; //余数,被除数的位数
- char c;
- int b,sign=0; //除数 ,空格标识符
- while ((c=getchar())!='\n') { //存储被除数跟除数
- if (sign == 0&&c!=' ') { //存储被除数
- num[lenth] = c - '0';
- lenth++;
- }
- if(sign==1){ //存储除数
- b = c - '0';
- break;
- }
- if (c == ' ') {//遇到空格sign为1;
- sign = 1;
- }
- }
- int diff = 0; //除法中每一次的被除数
- int qi = 0,ni=0; //商,被除数中的数组坐标
- int i = 0;
- if (lenth == 1)
- {
- qi = 1;
- q[0] = num[0] / b;
- r = num[0] % b;
- }
- else
- {
- for (i = 0; i < lenth; i++) {
- diff = diff * 10 + num[ni];
- if (diff < b&&i==0) { //被除数的第一位数小于除数,向后借位,坐标加一
- ni++;
- diff = diff * 10 + num[ni];
- lenth = lenth - 1;
- }
- ni++;
- q[qi] = diff / b;
- diff = diff%b;
- qi++;
- if (i == lenth - 1) { //最后一次做除法的余数为整个除法的余数
- r = diff;
- }
- }
- }
- for (i = 0; i < qi; i++) {
- printf("%d",q[i]);
- }
- printf(" %d\n",r);
- return 0;
- }
复制代码 |
|