不是“必须"有一个是浮点型,只不过如果两个数都是整形的话,会按照整形数的除法,只有商的部分。
创新互联建站-云计算及IDC服务提供商,涵盖公有云、IDC机房租用、四川电信科技城机房、等保安全、私有云建设等企业级互联网基础服务,来电联系:028-86922220
直接相除就行,比如:有
double f1();
double f2();
int f3();
int f4();
就可写:
double d1 = f1()/f2();
double d2 = f1() / f3(); // 等号右侧表达式为浮点型;
int d3 = f3() / f4(); //等号右侧表达式为int型;
double d4 = ((double)f3()) / f4();//将第一个函数的返回值转换为double型
若除数是整形数,则除数的绝对值与0比较,若除数是浮点数,则除数的绝对值与一个足够小的进行比较,不如这个做够小的数是: epsilon = 1.0e-7。该函数的返回数据类型应该为double类型。 #include math.h // 包含函数fabs()double quotient(double dividend,double divisor) { double spsilon = 1.0e-7; if(fabs(divisor) = epsilon) { printf("除数不能为零。\n\n"); exit(1); // 异常出错退出整个程序 } return divitient/divisor;}
在计算C语言算术表达式的结果时,特别是除法,需要注意计算过程中运算对象的数据类型转换。
相同数据类型的数据、变量进行运算,结果保持原有数据类型。
当不同数据类型的数据、变量进行运算时,结果为精度高的数据类型。
例如:1/2 的结果为0
1.0/2 的结果为 0.5
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言订定了一套完整的国际标准语法,称为ANSI C,作为C语言最初的标准。
两种方法:
1. 自己编一个保留2位小数的4舍5入函数。
2. 把你的答案和用户的答案都转成字符串,比较两个字符串就是了。
第2个方法非常简单,直接把程序写给你得了:
#include stdio.h
#include string.h
int main()
{
double a = 1.235;
char s[100], t[100];
sprintf(s, "%.2f", a); // 将实数a转换成字符串存入s(保留2位小数,自动4舍5入), "1.24"
scanf("%s", t); // 用户输入字符串,如:1.24
if (!strcmp(s, t))
{
printf("正确\n");
}
else
{
printf("错误\n");
}
return 0;
}
# includestdio.h
double jia(double x, double d)
{
double s;
s = x+d;
return s;
}
double jian(double x, double d)
{
double s;
s = x-d;
return s;
}
double cheng(double x, double d)
{
double s;
s = x*d;
return s;
}
double chu(double x, double d)
{
double s;
s = x/d;
return s;
}
int main(void)
{
double i, j, k;
char t;
k = 0;
printf("请输入要计算什么运算“+”“-”“*”“/”\n");
scanf("%c", t);
if(t == '+')
{
printf("请输入要相加的两个数\n");
scanf("%lf %lf", i, j);
k = jia(i, j);
printf("这两个数相加为%6.2lf\n", k);
}
else if(t == '-')
{
printf("请输入要相减的两个数\n");
scanf("%lf %lf", i, j);
k = jian(i, j);
printf("这两个数相减为%6.2lf\n", k);
}
else if(t == '*')
{
printf("请输入要相*的两个数\n");
scanf("%lf %lf", i, j);
k = cheng(i, j);
printf("这两个数相*为%6.2lf\n", k);
}
else if(t == '/')
{
printf("请输入要相/的两个数\n");
scanf("%lf %lf", i, j);
k = chu(i, j);
printf("这两个数相/为%6.2lf\n", k);
}
else
{
printf("对不起目前只支持“+”“-”“*”“/”\n");
}
return 0;
}
C语言中和除法相关的运算符有两个"/"整除运算符和"%"取余运算符。
整除就是求商,取余就是求余数,这是两者最本质的区别,需要注意的是在C语言%取余运算符只能操作整型数据对象。
如果是两个整数型的变量相除,如10/3,其结果是3,而不是3.3333333;又如10/4,其在C中的结果是2,而不是2.5。也就是说,整数型变量相除,如果其结果从数学角度上看是小数,无论是否可以四舍五入进位,C都会讲小数点后的部分抛弃。
c语言中其他的计算函数。
int isdigit(int ch) 若ch是数字('0'-'9')返回非0值,否则返回0。
int isgraph(int ch) 若ch是可打印字符(不含空格)(0x21-0x7E)返回非0值,否则返回0。
int islower(int ch) 若ch是小写字母('a'-'z')返回非0值,否则返回0。
double fabs(double x) 返回双精度参数x的绝对值。
long labs(long n) 返回长整型参数n的绝对值。
double exp(double x) 返回指数函数ex的值。