c++ 除法怎么算不对

来源:百度知道 编辑:UC知道 时间:2024/05/25 22:23:00
#include<stdio.h>
#include<math.h>
void main()
{
int n,s;
s=n/100;
scanf("%d",&n);
printf("%d\n",s);
}
哪里错了哦?
我输入5怎么不得0
输入700也不等于7

你写反了,
s=n/100;
scanf("%d",&n);
把这两行换一下

储存结果的变量是int型时,如果出现小数则默认将只取整数位而舍弃小数,如2/100=0.02这时将只取0,如果是6.6也将只取6
所以做除法时应该将结果变量,在你这里也就是s,取float型或double型(即浮点类型的,能存小数哈),这样才能得到正确结果
哦对了应该先输入scanf("%d",&n);然后再进行运算s=n/100;你这样相当于一开始给s赋了一个值(n/100),而由于n还没有被赋值,这个值还不确定,然后再给n赋值scanf("%d",&n);之后直接没有对s进行运算就输出了那个被错误赋值的s

由于都是int,因此除法的话会有隐式转换,如果n小于100,那么s就始终等于0了

把s定义为double型的看看

应该是
scanf("%d",&n);
s=n/100;
顺序,其它不变

int 不对吧?