你好,我需要做一個程序,你在其中輸入一個數字n。 沒有說明它有多大,所以沒有限制。變量獲取錯誤的值?
輸出應該是:例如n = 123456
123456 - 12345 + 1234 - 123 + 12 - 1 = 112233
1 + 12 + 123 + 1234 + 12345 + 123456 = 137171
我已經第一部分完成,第二以及但是當我打印第二個方程它打印的值不是我計算的。
下面的代碼:
#include <stdio.h>
#include <stdlib.h>
int main()
{
unsigned long int num,sum,num2=0,sum2=0,b=0,c=0,d=0,base;
int a=0;
printf("Enter an integer >=0: ");
scanf("%ld",&num);
c=num;
sum=num;
printf("%ld ",num);
while(num>0)
{
if(a==0)
{
num/=10;
sum-=num;
printf(" - %ld",num);
a=1;
}
else if (a==1)
{
num/=10;
sum+=num;
printf(" + %ld",num);
a=0;
}
}
printf("= %ld\n",sum);
d=c;
printf("d: %ld\n ",d);
while(d>10)
{
b++;
d/=10;
printf("%ld\n",d);
}
printf("b:%lu\n",b);
printf("c: %lu\n",c);
for(b;b>0;b--)
{
base=10^b;
num2=c/base;
if (b==1)
{
printf("%ld",num2);
}
else
{
printf("%ld + ",num2);
}
sum2+=num2;
}
printf("= %ld",sum2);
return 0;
}
我知道我有額外的價值和我打印的人是不是我所陳述的需要,我只是檢查什麼樣的價值觀是不正確的。我想我得到,因爲我怎麼打印出來,或者因爲變量類型的,我用數字5005005,num2
試圖在第一時間應該是5和我得到417k十歲上下的錯誤值num2=c/base;
。任何幫助表示讚賞。
編輯:我改變了功率誤差,但現在的程序崩潰。
新代碼:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
unsigned long int num,sum,num2=0,sum2=0,b=0,c=0,d=0,base;
int a=0;
printf("Enter an integer >=0: ");
scanf("%ld",&num);
c=num;
sum=num;
printf("%ld ",num);
while(num>0){
if(a==0){
num/=10;
sum-=num;
printf(" - %ld",num);
a=1;
} else if (a==1){
num/=10;
sum+=num;
printf(" + %ld",num);
a=0;
}
}
printf("= %ld\n",sum);
d=c;
printf("d: %ld\n ",d);
while(d>10){
b++;
d/=10;
printf("%ld\n",d);
}
printf("b:%lu\n",b);
printf("c: %lu\n",c);
for(b;b>=0;b--){
base= powl(10,b);
num2=c/base;
if (b==0){
printf("%ld",num2);
}else{
printf("%ld + ",num2);
}
sum2+=num2;
printf("%ld",sum2);
}
printf("= %ld",sum2);
return 0;
}
EDIT2:固定它,我仍然不知道爲什麼它使用> = 0
這裏的時候崩潰的修復:
for(b;b>0;b--){
base= powl(10,b);
num2=c/base;
if (b==1){
printf("%ld + ",num2);
sum2+=num2;
num2=c;
printf("%ld",num2);
}else{
printf("%ld + ",num2);
}
sum2+=num2;
printf("%ld",sum2);
}
'10^b'是「10 x或b」,而不是「10乘以b次」。 – MikeCAT
既然'b'是**無符號**號碼,'b> = 0'永遠不會是錯誤的。 – MikeCAT