**
1017 A除以B (20 分)
**
本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立。
输入格式:
输入在一行中依次给出 A 和 B,中间以 1 空格分隔。
输出格式:
在一行中依次输出 Q 和 R,中间以 1 空格分隔。
输入样例:
123456789050987654321 7
结尾无空行
输出样例:
17636684150141093474 3
结尾无空行
#include<stdio.h>
#include<string.h>
int main(){
char aa[1005];//数据太大,用字符数组来储存
int b,q,r,i,len;
scanf("%s%d",aa,&b);//输入字符数组,和除数
q=(aa[0]-'0')/b;
r=(aa[0]-'0')%b;//计算第一个数的商和余数
len=strlen(aa);
if(len==1||(len>1&&q!=0)) printf("%d",q); //长度为1或者长度不为1且商不为0时先输出一个商
for(i=1;i<len;i++){
q=((r*10)+aa[i]-'0')/b;//余数乘10加下一个数然后在求商
printf("%d",q);//输出商
r=((r*10)+aa[i]-'0')%b;//余数乘10加下一个数然后求余数
}
printf(" %d",r);//输出余数
return 0;
}
大数除法
1、先计算第一个数的商和余数以及数的长度(位数),然后判断:当长度为1或者长度不为1且商不为0,输出商
2、循环,从第二个数开始,余数*10加下一个数分别求新的商和余数,每次循环都输出商,循环结束后输出余数