Ⅰ c語言中用scanf輸入雙精度浮點數
C語言中用scanf輸入雙精度浮點數的源代碼如下
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n, *a, i;
printf("請輸入數組長度:");
scanf("%d", &n);
a = malloc(sizeof(int) * n); /*分配內存*/
printf("請輸入%d個數: ", n);
for(i = 0; i < n; i++)
scanf("%d", a + i);
printf("您輸入的數是: ");
for(i = 0; i < n; i++)
printf("%d ", a[i]);
free(a); /*釋放內存*/
return 0;
}
(1)c語言給浮點數復制擴展閱讀
1、scanf()函數開始每次讀取一個輸入字元,它跳過空白字元直到遇到一個非空白字元。因為它試圖讀取一個整數,所以scanf()期望發現一個數字字元或者一個符號(+或-)。
2、如它發現了一個數字或一個符號,那麼它就保存之並讀取下一個字元。scanf()持續讀取和保存字元直到它遇到一個非數字的字元。如遇到了一個非數字的字元,它就得出結論,它已經講到了整數的尾部。
3、scanf()把這個非數字字元放回輸入。這就意味著程序下一次開始讀取輸入時,它將從前面被放棄的那個非數字字元開始。最後,scanf()計算它讀取到的數字的相應數值,並將該值放到指定的變數中。
Ⅱ 怎麼將c語言中一個浮點型數據的整數部分與小數部分提取出來
代碼如下:
#include <stdio.h>
int main(){
double number; //其中number表示輸入的數
int zhengshu; //表示實數的整數部分
double xiaoshu; //表示整數的小數部分
printf("請輸入一個實數:"); //提示輸入一個數
scanf("%lf",&number);
zhengshu = (int)number;
xiaoshu = number-zhengshu;
printf("%f整數部分為:%d,小數部分為:%f ",number,zhengshu,xiaoshu);
return 0;
}。
程序執行結果:
程序設計思路就是輸入一個浮點數,把這個浮點強轉為整數,C語言強制轉換浮點數為整數的話,會丟失精度,也就是小數部分,再把原來的數減去整數部分,就可以得到小數部分,然後定義變數把相應的部分存儲,列印出來就行了。
Ⅲ c語言整型數賦值給浮點型的問題
b=a/2;是這么計算的:a是整型變數,2也是,因此計算被當成整型計算,得到整型結果0,然後發現b是float型的,再將整型結果0進行數據類型轉換賦值給b。因此應當將a/2算式中分子或分母轉換成float型就能正確計算了,比如:b=(float)a/2;或b=a/2.0;或b=a; b/=2;
Ⅳ c語言中將一個浮點型賦值給整型時,會不會四捨五入
c語言中將一個浮點型賦值給整型時,不會四捨五入,會直接捨去小數部分的數據,也可以認為是執行了下取整運算。
將浮點數(單雙精度)轉換為整數時,將舍棄浮點數的小數部分, 只保留整數部分。將整型值賦給浮點型變數,數值不變,只將形式改為浮點形式, 即小數點後帶若干個0。注意:賦值時的類型轉換實際上是強制的。
例如執行賦值後,無論5.4還是5.6都會變成5。
(4)c語言給浮點數復制擴展閱讀:
C語言中其它數據類型的轉換:
1、單、雙精度浮點型
由於C語言中的浮點值總是用雙精度表示的,所以float 型數據只是在尾部加0延長為double型數據參加運算,然後直接賦值。double型數據轉換為float型時,通過截尾數來實現,截斷前要進行四捨五入操作。
2、char型與int型
int型數值賦給char型變數時,只保留其最低8位,高位部分舍棄。
char型數值賦給int型變數時, 一些編譯程序不管其值大小都作正數處理,而另一些編譯程序在轉換時,若char型數據值大於127,就作為負數處理。
3、int型與long型
long型數據賦給int型變數時,將低16位值送給int型變數,而將高16 位截斷舍棄。(這里假定int型占兩個位元組)。 將int型數據送給long型變數時,其外部值保持不變,而內部形式有所改變。