【大整数除以13】这个程序错在哪里?该怎么解决
【大整数除以13】这个程序错在哪里?
题目是用不大于400位的大整数除以13,输出商和余数。
但在下面的程序里如果被除数中有数位是0,程序就会终止,只输出0以前的结果,请问这是什么情况啊?如何修改?
#include<stdio.h>
#include<string.h>
int main()
{
int i,j,beichu,a[100];
char b[101];
scanf("%s",b);
for(i=0,beichu=0;i<strlen(b);i++)
{
beichu=(beichu%13)*10+b[i];
a[i]=beichu/13;
}
for(j=0;j<i;j++)
{
if(a[j]==0)
continue;
else
break;
}
for(;j<i;j++)
{
printf("%d",a[j]);
if(j==i-1)
printf("\n");
}
printf("%d",beichu%13);
return 0;
}
------解决思路----------------------
为什么b[i]不-‘0’?
------解决思路----------------------
不要char和int互用,很容易出问题的,直接这样不更好?
------解决思路----------------------
题目是用不大于400位的大整数除以13,输出商和余数。
但在下面的程序里如果被除数中有数位是0,程序就会终止,只输出0以前的结果,请问这是什么情况啊?如何修改?
#include<stdio.h>
#include<string.h>
int main()
{
int i,j,beichu,a[100];
char b[101];
scanf("%s",b);
for(i=0,beichu=0;i<strlen(b);i++)
{
beichu=(beichu%13)*10+b[i];
a[i]=beichu/13;
}
for(j=0;j<i;j++)
{
if(a[j]==0)
continue;
else
break;
}
for(;j<i;j++)
{
printf("%d",a[j]);
if(j==i-1)
printf("\n");
}
printf("%d",beichu%13);
return 0;
}
------解决思路----------------------
为什么b[i]不-‘0’?
------解决思路----------------------
不要char和int互用,很容易出问题的,直接这样不更好?
beichu=(beichu%13)*10+b[i] - '0';
------解决思路----------------------
#include<stdio.h>
#include<string.h>
int main() {
int i,j,beichu,a[100];
char b[101];
int s;///////////////////////////
scanf("%s",b);
s = strlen(b);///////////////////
for(i=0;i<s;i++) {//////////////////
b[i]=b[i]-'0';
printf("%d\n", b[i]);
}
for(i=0,beichu=0;i<s;i++) {/////////////////
beichu=(beichu%13)*10+b[i];
a[i]=beichu/13;
}
for(j=0;j<i;j++) {
if(a[j]==0)
continue;
else
break;
}
for(;j<i;j++) {
printf("%d",a[j]);
if(j==i-1)
printf("\n");
}
printf("%d",beichu%13);
return 0;
}