设b为35.425,c为52.954,编写b*c,将值整数化后赋给a1,再将c除以b得到余数赋给a2的程序。

来源:百度知道 编辑:UC知道 时间:2024/06/14 07:56:56
我的 程序是
main()
{
float a1,a2,b=35.425,c=52.954;
a1=(int)b*c;
a2=(int)c%b;
printf("a1=%d,a2=%d\n",a1,a2);
}
什么地方错了?

一楼兄弟没找到错误实质,正确改法及注释如下:
#include "stdio.h"
void main()
{
int a1,a2; //a1,a2应该定义成整型,否则会出错
float b=35.425f,c=52.954f; //数字后面一定要加f,应为常数在编译器中默认为double型的,不加f相当于把double赋给float很明显要出错
a1=(int)(b*c);
a2=int(c)%int(b); //取余符号左右必须为整型
printf("a1=%d,a2=%d\n",a1,a2);
}

a1=(int)(b*c);

float型不能求余

楼上两位都错了
改:int的优先级比*,%大,且只有将浮点型数转化为整数后才能求余!
main()
{
float a1,a2,b=35.425,c=52.954;
a1=(int)(b*c);
a2=((int)c)%((int)(b));
printf("a1=%d,a2=%d\n",a1,a2);
}

a1=(int)b*c;
a2=(int)c%b;
(int)去掉就行了.