Ⅰ c語言。已經有一個字元類型的數組,存儲了一個小數,如何將該小數存儲在一個dobule變數中
試一試這個:
#include<stdio.h>
#include<string.h>
intmain(void)
{
charbuf[10]="-10.12";
doubledou;
floata;
strcat(buf,"");
sscanf(buf,"%lf",&dou);
printf("%lf",dou);
return0;
}
Ⅱ c語言中結構體數組後加一個點一個變數是為什麼
如果info是一個結構體數組,
info[i]就是一個結構體
.是成員運算符
info[i].number就是訪問結構體的一個成員number
Ⅲ C語言問題,數組後面加一個 . 再加一個變數是什麼意思,如下:
那不是「數組後加一個.」而是數組元素後加一個.。這說明這個數組的元素是復雜類型(通常是自定義的結構、聯合什麼的),要用「.」來訪問復雜類型內部的成員變數!
Ⅳ 在數組後面加小數點英文字母什麼意思
C語言里" . "用來引用結構體成員,
注意"."是由結構體變數來引用的,如果是結構體指針變數,就要使用->
如struct A
{
int a;
}
A b;
A *c;
A d[5];
b.a;
c->a;
d[1].a;
兩種引用方式要區分開!
Ⅳ C語言中,數組下標可以是小數嗎
很有意思的問題,我曾經也想過這個問題。
很遺憾是不可以的,最根本原因是內存定址必須是正整數。
假設有個整型數組:
int numberGroup = [ 20, 12, 9, 56, 17 ];
下標運算符(即中括弧)通過給出的索引來找到指定元素,如:
numberGroup[ 2 ]
索引從 0 開始,因此 numberGroup[ 0 ] 是第一個數字,即「20」,而 numberGroup[ 2 ] 即第3個數字 「9」。
C 是這樣找到 numberGroup[ 2 ] 的元素的:
1. 獲得數組 numberGroup 的內存地址,假設為 0x3000,內存地址最小單位是位元組。
2. int 類型長度目前採用4個位元組,數據類型為定址提供了必要的依據,要取索引為2的元素,偏移量 = 索引 * 類型長度,即 2 * 4,結果是8個位元組的偏移量。
3. 因此,需將數組的起始地址 0x3000 加上 8,0x3008 是索引為 2 的元素的起始地址,通過讀取 4 個位元組(int 的長度)得到 numberGroup[ 2 ] 的元素最終的值。
所以,數組的下標不可以為小數。
Ⅵ C語言中如何保留一位小數點
可以通過printf函數中的輸出格式說明符來實現保留一位小數點,要保留一位小數就用printf("%.1f",x),例子如程序中給出那樣。
例子如下:
(6)c語言數組後面加一個小數點擴展閱讀:
1.printf("%3.0f",floatNum):不保留小數
說明:%3.0f表明待列印的浮點數(floatNum)至少佔3個字元寬,且不帶小數點和小數部分,整數部分至少佔3個位寬;
注意:這里的3隻代表整數部分至少佔3位,舍棄小數點和小數點後面的部分。
2.printf("%6.2f".floatNum):保留兩位小數
說明:%6.2f 表明待列印的數(floatNum)至少佔6個字元寬度(包括兩位小數和一個小數點),且小數點後面有2位小數,小數點佔一位,所以整數部分至少佔3位。
注意:這里的6是待列印的數至少佔據的字元寬度,包括兩位小數(如果小數不夠兩位用0補位,例如100.1列印出來為100.10)和一個小數點,所以整數部分至少佔3個字元寬度。
Ⅶ C語言中int後是一個帶有小數的數字,那麼它的值是多少
int(2.5+4.7)=7
在C語言中,取int()系統會強制將其他數據類型轉換為int型,不會四捨五入直接捨去小數點後面的數字。
例如:
int b=10;//聲明變數為int型並初始化賦值
printf("%f",b*5.0);//列印為浮點型的數字,強制將10*5.0結果為50.000000
float a=2.1314;//聲明變數為實數型並初始化賦值
int c=(int) a;//聲明變數c為int型並將a強制轉換為int型所得值賦給c,即c=2
(7)c語言數組後面加一個小數點擴展閱讀:
數據類型關鍵字:
short:修飾int,短整型數據,可省略被修飾的int。(K&R時期引入)
long:修飾int,長整型數據,可省略被修飾的int。(K&R時期引入)
long long:修飾int,超長整型數據,可省略被修飾的int。(C99標准新增)
signed:修飾整型數據,有符號數據類型。(C89標准新增)
unsigned:修飾整型數據,無符號數據類型。(K&R時期引入)
restrict:用於限定和約束指針,並表明指針是訪問一個數據對象的唯一且初始的方式。(C99標准新增)
參考資料來源:網路-C語言
Ⅷ C語言如何在很多數中加一個小數點
利用整數的截斷效果,將數據小數部分單取出來,乘以10後取整,與原數比較,若不等,則判斷大於小數點後1位,依此計算直到相等為止。
在取整時進行小數點後1位四捨五入可部分防止二進制浮點數與真實數據間的舍入誤差問題。
Ⅸ C語言關於小數存入數組函數編寫
0.12345的小數點後第一位就是tab[0]=(int)(0.12345*10)
第二位就是tab[1]=((int)(0.12345*100)%10
第三位就是tab[2]=((int)(0.12345*1000)%10
以此類推
Ⅹ c語言:數組怎麼可以改成可以帶小數
如果我沒有理解錯題目意思的話,樓主是想輸入10個數,並且利用指針的方法,讓其中最大的數和最後一個數交換,最小的數和最前面一個數交換,然後輸出這個數組。
其實你寫的程序還是有幾個問題的:
1.直接編譯會出現提示:變數i沒用到。
2.如樓上所說,因為p指向的不是個字元串(或者說字元數組),所以最後並不是'\0'結尾,不能以(p!='\0')作為判斷條件,改成(p!=a+10)理論上是可以的。
3.我沒看懂你的max, min, max_i, min_i的意思。用我的理解,你可能是想先掃一遍所有的數,把較大(小)的那個數存在max(min)里,較大(小)數的位置存在max_i(min_i)里,那麼,max_i和min_i就應該和p的類型相同即指針型以便保存指向。
4.再來是swap過程,注意下交換順序就ok
我修改的程序如下:
#include "stdio.h"
int main(void)
{
int a[10], max, min, *max_i, *min_i, *p=a;
min_i = a;
max_i = a+9;
for(;p<a+10;p++)
scanf("%d",p);
max = min = a[0];
p=a;
while(p!=a+10)
{
if(max<*p) {max=*p; max_i=p;}
if(min>*p) {min=*p; min_i=p;}
p++;
}
p=a;
*min_i=*p; *p=min;
p=a+9;
*max_i=*p; *p=max;
for(p=a;p<a+10;p++)
printf("%d ",*p);
return(0);
}
編程序前先分析下程序,然後制定好方案,分幾步走,然後定義好變數,把每個變數的意義弄清楚。