1017 A除以B(c语言实现) (20 分)
本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立。
输入格式:
输入在一行中依次给出 A 和 B,中间以 1 空格分隔。
输出格式:
在一行中依次输出 Q 和 R,中间以 1 空格分隔。
输入样例:
123456789050987654321 7
输出样例:
17636684150141093474 3
分析:
此题最坑的地方就是如果被除数前面有很多0,则输出的结果可能为000…而不是单个0或者什么也不输出,这会导致错误
代码:
#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
char str[1001];
int ss[1000];
int b,i=0,temp=0,j,remain=0,k=0;
scanf("%s %d",&str,&b);
while(str[i]){
temp=remain*10+(str[i]-'0');
ss[i]=temp/b;
i++;
remain=temp%b;
}
//打印
for(j=0;j<i;j++){
if(ss[j]!=0){
break;
}
k++; //统计结果前面有几个0
}
if(k==i){
printf("0"); //如果结果全为0,则只输出一个0
}
for(j=k;j<i;j++){
printf("%d",ss[j]); //如果结果不全为0
}
printf(" %d",remain);
return 0;
}