C语言初级问题求解=。= 为啥我的这段程序用int %d可以算 但是用float %f却运行不了呢?
C\u8bed\u8a00\u4e2d\uff1a\u8bbei\u4e3aint\u578b\uff0cf\u4e3afloat\u578b\uff0cd\u4e3adouble\u578b\uff0ce\u4e3along\u578b 10+\u2018a\u2019+i*f-d/e \u4e3a\u4ec0\u4e48\u4e0d\u5148\u7b97i*f\u5462\uff1f\u8fd0\u7b97\u7b26\u4f18\u5148\u7ea7\u7684\u4f5c\u7528\u8303\u56f4\u53ea\u662f\u9760\u8fd1\u5b83\u7684\u524d\u540e\u4e24\u4e2a\u8fd0\u7b97\uff0c\u6bd4\u5982:
#include
int main ()
{
int a=3,b=5,c;
c=a*b-(a+=b);
printf("%d",c);
return 0;
}
\u6309\u4f60\u7684\u60f3\u6cd5\uff0c\u62ec\u53f7\u628aa+=b\u7684\u4f18\u5148\u7ea7\u63d0\u5230\u4e86\u6700\u9ad8\uff0c\u5e94\u8be5\u5148\u8fd0\u7b97\uff0c\u4f46\u662f\u62ec\u53f7\u53ea\u662f\u5728\u524d\u540e\u76f8\u90bb\u7684\u4e09\u4e2a\u8fd0\u7b97\u4e2d\u5c06\u5176\u4f18\u5148\u7ea7\u63d0\u9ad8\uff0c\u6240\u4ee5\u8fd0\u7b97\u987a\u5e8f\u4f9d\u7136\u662f1.a*b\uff1b2.a+=b\uff1b3.\u4e24\u8005\u76f8\u51cf
\u660e\u767d\u5426\uff1f
#include
#include
void main()
{
int A;
int N;
double c;
printf("input the A: ");
scanf("%d",&A);
printf("input the N: ");
scanf("%d",&N);
c=pow(A,N);
printf("A^N = %g\n",c);
}
#include
#include
void main()
{
double A;
int N;
double c;
printf("input the A: ");
scanf("%lf",&A);
printf("input the N: ");
scanf("%d",&N);
c=pow(A,N);
printf("A^N = %g\n",c);
}
\u8fd9\u6837\u5c31\u6ca1\u95ee\u9898\u4e86 \u4eb2\u6d4b\uff01
1.最后一行分号掉了
2.最后一行没有定义函数类型 是int
3.倒数第4行是printf 不是m
4.就是你问的问题 因为浮点型是不可以用%除的 取余数本来就是整数范围的 所以你把那些数定义为整数就可以了
相对浮点数求模还是用函数 fmod() 吧, 原型为 double fmode(double x,double y) ,功能是返回浮点数x/浮点数y的余数,计算过程为n=x÷y,fmode(x,y)=x-n*y;结果取偏向0的整数。
英文报错肯定是 %d cannot use to float.must be intergret.之类的错误
楼上很多正解,取余符号两边都必须是整形数据
%求余运算,两边的数据类型必须是整型的
g=a%b;
就是这里,你要对float取模么?
扩展阅读:扫一扫题目出答案 ... c#语言教程 ... c++编程入门自学 ... 扫一扫一秒出答案 ... c#考试题库 ... 搜题拍照秒出答案 ... c#面试题 ... c++必备基础知识 ... 免费拍照答题一秒出答案 ...