数学运算的结果只有在运算元有浮点数的时候才会是浮点数,如果运算元全都是整数,不管做甚麽运算都只会得到整数数值
#include<stdio.h>
#include<stdlib.h>
int main(){
float x=5/3;
printf("%f", x);
return 0;
}
因为 5
和 3
都是整数,所以 5/3
的结果不包含小数
如果要让结果要有小数,可以把其中一边(或两边)改成浮点数
#include<stdio.h>
#include<stdlib.h>
int main(){
printf("%f\n", 5.0/3);
printf("%f\n", 5/3.0);
printf("%f\n", 5.0/3.0);
return 0;
}
如果运算元是变数,可以另外建立一个不同型别的变数,达到型别转换的效果
#include<stdio.h>
#include<stdlib.h>
int main(){
int x=5, y=3;
float a=x, b=y;
printf("%f\n", a/b);
return 0;
}
或是强制将变数的型别转换,语法是:
(<型别>)数值
下面的 (float)a
代表一个值和 a
一样的浮点数(所以 a
还是 int
)
#include<stdio.h>
#include<stdlib.h>
int main(){
int x=5, y=3;
printf("%f\n", (float)a/b);
return 0;
}
利用字元的性质和回圈,可以完成字串转整数的功能
如果 's[i]'
等於 '0'
,s[i]-'0'
就等於0(整数),'s[i]'
等於 '1'
,s[i]-'0'
就等於1(整数)...以此类推,所以 s[i]-'0'
等於一个位数的值
因为回圈会从最左的一个位数,看到最右的一个位数,所以每次 n
都要先乘上10,再加上下个位数的值
#include<stdio.h>
#include<stdlib.h>
int main(){
int n=0;
char s[100];
scanf("%s", s);
for(int i=0; s[i]!='\0'; i++){
n*=10;
n+=s[i]-'0';
}
printf("%d\n", n);
return 0;
}
假设输入字串是 "123"
,一开始 n
设为0:
i
等於0,s[i]
是字串的第一个字元 '1'
,所以开始回圈,n
乘上10为0,n
加上 s[i]-'0'
(1)是1i
等於1,s[i]
是字串的第二个字元 '2'
,所以开始回圈,n
乘上10为10,n
加上 s[i]-'0'
(2)是12i
等於2,s[i]
是字串的第三个字元 '3'
,所以开始回圈,n
乘上10为120,n
加上 s[i]-'0'
(3)是123i
等於3,s[i]
是字串的第四个字元 '\0'
,所以回圈结束最後得到 n
是整数123
何谓Git? *说明 : 一套分散式的版本控制系统。 *作用 : 版本控制能够记录档案的内容变化,并...
今天的目标: 要怎麽样依照范本复制并改动 Google Sheet,并一次性地的将结果搜集到同一份 ...
DBABootcamp 该不该压缩资料库是 DBA 常见的问题。以记录档 (LDF, log fil...
前言 在混过了完全不知道要写什麽的两天之後,我就在思考我到底能在铁人赛中记录下甚麽或学习到甚麽,甚至...
参考网站:Keras官方指南 如果想要看各个神经元最初设定的权重,输入以下程序: layer =...