當前位置:首頁 » 編程語言 » c語言乘法為啥運行結果錯誤
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言乘法為啥運行結果錯誤

發布時間: 2022-12-21 08:59:57

c語言數字加減乘除運算,計算結果不對,哪裡出了問題

把unsignedchar改成unsignedint,我用VS2019沒問題的

Ⅱ 為什麼我用C語言編寫的乘法運算程序結果輸出錯誤

INT型的值范圍為-32768-32767
你這個結果是54243,溢出了,當然顯示不正常,/U為長整形,可以正常顯示

Ⅲ c語言的加減乘除運算,為什麼運算不正確。

因為你的op是char,輸入的時候應該用%c而不是%lf

Ⅳ 我寫的這個兩個數相乘的c語言程序哪裡出錯了、

你在scanf()函數里加了個逗號,所以在輸入時必須也輸入逗號

1,2
這樣才能輸出正確的結果

Ⅳ C語言連乘時結果錯誤

13! = 6227020800
long int 在32位情況下依舊為4位(我用sizeof(long int)試過),所以和int范圍一樣,不能存的下13!,1932053504是溢出的結果
可以使用long long int(gcc下)或者__int64(VC中)來存結果,輸出分別用%lld和%I64d

Ⅵ c語言大整數乘法,我的程序不知道哪裡出錯了,可以運行結果有點不對。

大數乘法沒必要比較輸入的兩個數的長度,雖然計算的順序不同,但是結果一樣,多此一舉,這是我寫的程序,你參考下,你的程序運行前幾個數字有的時候是0,注意改下

#include<stdio.h>

#include<string.h>

voidmultiply(char*a,char*b,char*c)

{

inti,j,ca,cb,d[10000],*s=d;

ca=strlen(a);

cb=strlen(b);

for(i=0;i<ca+cb;i++)

s[i]=0;

for(i=0;i<ca;i++)

for(j=0;j<cb;j++)

s[i+j+1]+=(a[i]-'0')*(b[j]-'0');

for(i=ca+cb-1;i>=0;i--)

if(s[i]>=10)

{

s[i-1]+=s[i]/10;

s[i]%=10;

}

i=0;

while(s[i]==0)

i++;

for(j=0;i<ca+cb;i++,j++)

c[j]=s[i]+'0';

c[j]='';

printf("%s ",c);

}

intmain(void)

{

chara[1000],b[1000],c[10000];

gets(a);

gets(b);

multiply(a,b,c);

return0;

}

Ⅶ C語言乘法為什麼乘法不對啊

把scanf中的%d改成%lf(是LF的小寫),把剩下的%d改成%f。

Ⅷ C語言編寫的乘法運算的程序為什麼結果顯示不對

錯誤很明顯了,不應該用長整形輸出,理由:長整型是4個位元組的,整型是2個位元組的,你輸入的值是147*369<65535 所以在2個位元組范圍內,用長整型輸出,勢必高位的2個位元組內容是不必要的

另外為什麼printf("wangpan is %d\n",wangpan);是負的呢?因為%d是有符號的整型,它的最高位是符號位造成的

修改方法:改為printf("wangpan is %u\n",wangpan);就行了

Ⅸ C語言乘法錯在哪裡

嚴格來講,你的代碼是錯誤的,用int的b接收double型的a的計算結果,是不可以的,即使結果是整數。結果當然也會出現誤差。正確的應該是:doublea=10.3845;doubleb;b=10000*a;printf("%lf",b);補充:把上面printf("%lf",b);改為printf("%.0lf",b);就能使後面無小數。

Ⅹ C語言結果運算不對

else if (n==1) //等號要是兩個才對!下同
add(num1.real,num1.imag,num2.real,num2.imag);
else if (n==2)
milus(num1.real,num1.imag,num2.real,num2.imag);
else if (n==3)
multiply(num1.real,num1.imag,num2.real,num2.imag);
else if (n==4)