当前位置:首页 » 编程语言 » 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)