C 我想在多位数问题中求进位运算的个数
我没有通过我的代码获得正确的进位操作数 此代码从右到左查找进位运算,每当查找进位运算时返回(找到),,,让两个整数a=362175600 b=1479992559在第二、第三、第四、第七和第九位置有5个进位,因此,输出应为:-1找到,2找到,3找到,未找到,未找到,未找到,4找到,未找到,5找到,,找不到C 我想在多位数问题中求进位运算的个数,c,C,我没有通过我的代码获得正确的进位操作数 此代码从右到左查找进位运算,每当查找进位运算时返回(找到),,,让两个整数a=362175600 b=1479992559在第二、第三、第四、第七和第九位置有5个进位,因此,输出应为:-1找到,2找到,3找到,未找到,未找到,未找到,4找到,未找到,5找到,,找不到 #include<stdio.h> int main(){ int a,b,count,max,min,j,rem_max,rem_min; wh
#include<stdio.h>
int main(){
int a,b,count,max,min,j,rem_max,rem_min;
while((scanf("%d%d",&a,&b))==2){
if(a==0 && b==0){
break;
}
else{
if(a > b){
max=a;
min=b;
}
else if(b > a){
min=a;
max=b;
}
else{
max=a;
min=b;
}
count=0;
j=1;
while(max!=0){
rem_max=max%10;
rem_min=min%10;
if((rem_max+rem_min)>9){
count++;
printf("%d found\n",j);
max=(max/10)+1;
min=min/10;
j++;
}
else if((rem_max+rem_min)<9){
max=max/10;
min=min/10;
printf("not found\n");
}
else{
max=max/10;
min=min/10;
}
}
printf("-----------------------\n");
printf("%d\n",count);
}
}
return 0;
}
#包括
int main(){
int a,b,count,max,min,j,rem_max,rem_min;
而((scanf(“%d%d”、&a和&b))==2){
如果(a==0&&b==0){
打破
}
否则{
如果(a>b){
max=a;
min=b;
}
否则,如果(b>a){
min=a;
max=b;
}
否则{
max=a;
min=b;
}
计数=0;
j=1;
而(最大!=0){
rem_max=最大值%10;
rem_min=最小值%10;
如果((rem_最大值+rem_最小值)>9){
计数++;
printf(“找到%d\n”,j);
最大值=(最大值/10)+1;
min=min/10;
j++;
}
否则,如果((rem_max+rem_min)输入a=36217560b=1479992559,则语句max=(max/10)+1;
会导致14799变为14800,并产生不良结果。
使用单独的
进位变量将纠正此问题
#include<stdio.h>
int main ( void) {
int a = 1,b = 1,count,max,min,j,rem_max,rem_min;
int carry = 0;
while ( a != 0 && b != 0) {
scanf ( "%d%d", &a, &b);
max = b;
min = a;
if ( a > b) {
max = a;
min = b;
}
count = 0;
j = 0;
while ( max != 0) {
rem_max = max % 10;
rem_min = min % 10;
max /= 10;
min /= 10;
if ( ( rem_max + rem_min + carry) > 9) {//also add carry
count++;
carry = 1;//set carry
printf("%d found\n",j);
j++;
}
else {
carry = 0;//un set carry
printf ( "not found\n");
}
}
printf ( "-----------------------\n");
printf ( "%d\n", count);
}
return 0;
}
#包括
内部主(空){
int a=1,b=1,计数,最大,最小,j,rem_max,rem_min;
整数进位=0;
而(a!=0&&b!=0){
scanf(“%d%d”、&a和&b);
max=b;
min=a;
如果(a>b){
max=a;
min=b;
}
计数=0;
j=0;
而(最大!=0){
rem_max=最大值%10;
rem_min=最小值%10;
最大/=10;
最小/=10;
如果((rem_max+rem_min+进位)>9){//也添加进位
计数++;
进位=1;//设置进位
printf(“找到%d\n”,j);
j++;
}
否则{
进位=0;//取消设置进位
printf(“未找到”);
}
}
printf(“--------------------------\n”);
printf(“%d\n”,计数);
}
返回0;
}
读取并比较未初始化的变量。例如,此处而(a!=0&&b!=0)
忽略scanf()的返回值
。请详细解释您的程序应该执行的操作。给出具有所需输出和当前输出的输入示例。所有注释仍然有效。尤其是第一条注释。@SunjareeIbnZulfiker有关问题的澄清,请阅读以下内容:并接受注释。