PAT (Basic Level) Practise:1017. A除以B

【题目链接】

本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A = B * Q + R成立。

输入格式:

输入在1行中依次给出A和B,中间以1空格分隔。

输出格式:

在1行中依次输出Q和R,中间以1空格分隔。

输入样例:

123456789050987654321 7

输出样例:

17636684150141093474 3

【提交代码】

 1 #include <stdio.h>
 2 #include <string.h>
 3 
 4 #define MAX_LEN            (1024)
 5 
 6 void division(char *str, int n, char *dest, int *r)
 7 {
 8     int div, q;
 9     int k, i, len = strlen(str);
10     int flag = 0;
11     
12     div = 0;
13     k = 0;
14     for(i = 0; i < len; i++)
15     {
16         div *= 10;
17         div += str[i] - '0';
18         q = div / n;
19         if(q > 0)
20         {
21             dest[k++] = q + '0';
22             div = div % n;
23             flag = 1;
24         }
25         else if (q == 0 && flag != 0)
26         {
27             dest[k++] = q + '0';
28             div = div % n;
29         }
30     }
31     if(k == 0)
32     {
33         dest[k++] = '0';    
34     }
35     dest[k] = '';
36     *r = div;
37 }
38 
39 int main(void)
40 {
41     char dest[MAX_LEN];
42     char str[MAX_LEN];
43     int n, r;
44     
45     //printf("input str: 
");
46     scanf("%s", str);
47     //printf("input n: 
");
48     scanf("%d", &n);
49     //printf("%s / %d =
", str, n);
50     
51     memset(dest, 0x00, sizeof(dest));
52     division(str, n, dest, &r);
53     printf("%s %d", dest, r);
54     return 0;
55 }
原文地址:https://www.cnblogs.com/utank/p/4175435.html