當前位置:首頁 » 編程語言 » c語言自動轉換

c語言自動轉換

發布時間: 2025-03-17 03:15:29

c語言編寫一個能夠將人民幣小寫金額自動轉化為大寫寫金額的程序寫出程序語句

#include <iostream>
#include <string>
#include <stdlib.h>
using namespace std;

string ConvertMoneyCaps(long double moneySum)
{
long int temp_i = (long int)moneySum; /**//* 整數部分 */
float temp_f = moneySum - temp_i; /**//* 小數部分 */
int digit = 0, i, j, k, num_i;
string money("");
char num[20], *p;
char name[][3] = {"元","拾","佰","仟","萬","億"};
char numchar[][3] = {"零","壹","貳","叄","肆","伍","陸","柒","捌","玖"};
ltoa(temp_i, num, 10); /**//* 整數部分轉換成字元串後在搏畢慎處理 */
p = num;
digit = strlen(num); /**//* 整數部分位數 */
/**//*--------處理整數部分 start--------*/
for(i = 1; i <= digit; i ++)
{
k = (digit - i) % 4;
if(isdigit(*p))
{
num_i = *p & 0xF; /**//* 把字元轉換成數字,比如 '0'-> 0,'1' ->基敬 1*/
/**//*--------轉換數字開始---------*/
if(num_i)
{
money = money+ numchar[num_i];
}
else
{
if(k && (*(p + 1) &0xF))
money += "零";
}
/**//*--------轉換數字結束-------*/
/**//*---------添加計數單位開始----*/
if(k)
{
if(num_i)
money = money + name[k];
}
else
{
j = digit - i;
if(j)
money = money + name[j/4 + 3];
else
money += "元";
}
/**//*--------添加計數單位結束數並--------*/
p++;
}
else
{
money = "遇到非數字退出!";
return money;
}
}
/**//*--------處理整數部分 End --------*/
/**//*--------處理小數部分 start--------*/
if(temp_f > 0.01)
{
if((int)(temp_f*10)) money = money + numchar[(int)(temp_f*10)] + "角";
if((int)(temp_f*100)%10) money = money + numchar[(int)(temp_f*100)%10] + "分";
}
/**//*--------處理小數部分 End--------*/
money += "整";

return money;
}
int main()
{
long double x = 33.20;
cout << "please input the money:";
cin >> x;
cout << "Convert Money Caps:";
string money = ConvertMoneyCaps(x);
cout << money <<endl;
return 0;
}

❷ C語言數據類型的轉換

讓我來說說這個問題吧。
一.自動轉換
自動轉換遵循以下規則:
1) 若參與運算量的類型不同,則先轉換成同一類型,然後進行運算。
2) 轉換按數據長度增加的方向進行,以保證精度不降低。如int型和long型運算時,先把int量轉成long型後再進行運算。
a.若兩種類型的位元組數不同,轉換成位元組數高的類型
b.若兩種類型的位元組數相同,且一種有符號,一種無符號,則轉換成無符號類型
3)所有的浮點運算都是以雙精度進行的,即使僅含float單精度量運算的表達式,也要先轉換成double型,再作運算。
4)char型和short型參與運算時,必須先轉換成int型。
5)在賦值運算中,賦值號兩邊量的數據類型不同時,賦值號右邊量的類型將轉換為左邊量的類型。如果右邊量的數據類型長度左邊長時,將丟失一部分數據,這樣會降低精度,丟失的部分按四捨五入向前舍入。
二.隱式轉換
隱式類型轉換分三種,即算術轉換、賦值轉換和輸出轉換。
1.算術轉換
進行算術運算(加、減、乘、除、取余以及符號運算)時,不同類型數招必須轉換成同一類型的數據才能運算,算術轉換原則為:
在進行運算時,以表達式中最長類型為主,將其他類型位據均轉換成該類型,如:
(1)若運算數中有double型或float型,則其他類型數據均轉換成double類型進行運算。
(2)若運算數中最長的類型為long型.則其他類型數均轉換成long型數。
(3)若運算數中最長類型為int型,則char型也轉換成int型進行運算。算術轉換是在運算過程中自動完成的。
2.賦值轉換
進行賦值操作時,賦值運算符右邊的數據類型必須轉換成賦值號左邊的類型,若右邊的數據類型的長度大於左邊,則要進行截斷或舍入操作。
下面用一實例說明:
char ch;
int i,result;
float f;
double d;
result=ch/i+(f*d-i);
(1)首先計算 ch/i,ch → int型,ch/i → int型。
(2)接著計算 f*d-i,由於最長型為double型,故f→double型,i→double型,f*d-i→double型。
(3)(ch/i) 和(f*d-i)進行加運算,由於f*d-i為double型,故ch/i→double型,ch/i+(f*d-i)→double型。
(4)由於result為int型,故ch/i+(f*d-i)→double→int,即進行截斷與舍入,最後取值為整型。
3.輸出轉換
在程序中將數據用printf函數以指定格式輸出時,當要輸出的鹽據類型與輸出格式不符時,便自動進行類型轉換,如一個long型數據用整型格式(%d)輸出時,則相當於將long型轉換成整型(int)數據輸出;一個字元(char)型數據用整型格式輸出時,相當於將char型轉換成int型輸出。
注意:較長型數據轉換成短型數據輸出時,其值不能超出短型數據允許的值范圍,否則轉換時將出錯。如:
long a=80000;
printf("%d",a);
運行結果為14464,因為int型允許的最大值為32767,80000超出此值,故結果取以32768為模的余數,即進行如下取余運算:
(80000-32768)-32768=14464;
輸出的數據類型與輸出格式不符時常常發生錯誤,如:
int d=9;
printf("%f",d);

float c=3.2;
printf("%d",c);
將產生錯誤的結果。
同一句語句或表達式如果使用了多種類型的變數和常量(類型混用),C 會自動把它們轉換成同一種類型。以下是自動類型轉換的基本規則:
1. 在表達式中,char 和 short 類型的值,無論有符號還是無符號,都會自動轉換成 int 或者 unsigned int(如果 short 的大小和 int 一樣,unsigned short 的表示範圍就大於 int,在這種情況下,unsigned short 被轉換成 unsigned int)。因為它們被轉換成表示範圍更大的類型,故而把這種轉換稱為「升級(promotion)」。
2. 按照從高到低的順序給各種數據類型分等級,依次為:long double, double, float, unsigned long long, long long, unsigned long, long, unsigned int 和 int。這里有一個小小的例外,如果 long 和 int 大小相同,則 unsigned int 的等級應位於 long 之上。char 和 short 並沒有出現於這個等級列表,是因為它們應該已經被升級成了 int 或者 unsigned int。
3. 在任何涉及兩種數據類型的操作中,它們之間等級較低的類型會被轉換成等級較高的類型。
4. 在賦值語句中,= 右邊的值在賦予 = 左邊的變數之前,首先要將右邊的值的數據類型轉換成左邊變數的類型。也就是說,左邊變數是什麼數據類型,右邊的值就要轉換成什麼數據類型的值。這個過程可能導致右邊的值的類型升級,也可能導致其類型降級(demotion)。所謂「降級」,是指等級較高的類型被轉換成等級較低的類型。
5. 作為參數傳遞給函數時,char 和 short 會被轉換成 int,float 會被轉換成 double。使用函數原型可以避免這種自動升級。
三.強制轉換
強制類型轉換是通過類型轉換運算來實現的。其一般形式為:(類型說明符)(表達式)其功能是把表達式的運算結果強制轉換成類型說明符所表示的類型。自動轉換是在源類型和目標類型兼容以及目標類型廣於源類型時發生一個類型到另一類的轉換。例如: (float) a 把a轉換為實型,(int)(x+y) 把x+y的結果轉換為整型。在使用強制轉換時應注意以下問題:

1.類型說明符和表達式都必須加括弧(單個變數可以不加括弧),如把(int)(x+y)寫成(int)x+y則成了把x轉換成int型之後再與y相加了。

2.無論是強制轉換或是自動轉換,都只是為了本次運算的需要而對變數的數據長度進行的臨時性轉換,而不改變數據說明時對該變數定義的類型。

例1:

main()

{

float f=5.75;

printf("(int)f=%d,f=%f\n",(int)f,f);

}

f<--5.75

將float f強制轉換成int f float f=5.75;printf("(int)f=%d,f=%f\n",(int)f,f); 本例表明,f雖強制轉為int型,但只在運算中起作用, 是臨時的,而f本身的類型並不改變。因此,(int)f的值為 5(刪去了小數)而f的值仍為5.75。

❸ C語言的浮點型怎麼轉換為整型

在C語言的世界裡,將浮點型轉換為整型有兩招:強制類型轉換和自動類型轉換。首先,強制轉換就像一把鑰匙,通過(類型說明符)(表達式)的形式,直接將浮點數的值轉變成所需的整型。比如,(double) a 就是將a轉換為雙精度浮點,(int)(x+y) 則將兩個數相加後的結果強制變為整型。

其次,自動類型轉換則更為微妙。它主要在運算、賦值、函數調用和返回值處理中發揮作用。在運算時,低精度類型如int會自動提升到高精度如double,比如int和double相加。賦值時,右邊的表達式類型會自動轉換為左邊變數的類型。函數調用和返回時,參數和返回值的類型也會根據需要進行隱式轉換。

C語言常用的數據類型包括整型int,單精度浮點型float,雙精度浮點型double,字元型char,以及字元指針char *。這些類型在轉換和運算時,理解並掌握這些規則至關重要。

總的來說,C語言中的浮點型轉換為整型,無論是通過顯式強制類型轉換還是隱式自動類型轉換,都需要程序員對數據類型和轉換規則有清晰的理解。

❹ c語言數據類型轉換規則

c語言數據類型轉換規則如下:
1、自動類型轉換:在C語言中,自動類型轉換遵循以下規則:①若參與運算量的類型不同,則先轉換成同一類型,然後進行運算。②轉換按數據長度增加的方向進行,以保證精度不降低。如int型和long型運算時,先把int量轉成long型後再進行運算。a、若兩種類型的位元組數不同,轉換成位元組數高的類型。b、若兩種類型的位元組數相同,且一種有符號,一種無符號,則轉換成無符號類型。③所有的浮點運算都是以雙精度進行的,即使是兩個float單精度量運算的表達式,也要先轉換成double型,再作運算。④char型和short型參與運算時,必須先轉換成int型。⑤在賦值運算中,賦值號兩邊量的數據類型不同時,賦值號右邊量的類型將轉換為左邊量的類型。如果右邊量的數據類型長度比左邊長時,將丟失一部分數據,這樣會降低精度。
2、強制類型轉換:強制類型轉換一般格式如下:(類型名)(表達式)這種強制類型轉換操作並不改變操作數本身。

❺ C語言雙目運算符兩邊的運算數類型不一致系統自動轉換的規則是什麼比如1.0/2=0.5那為什麼不是1.0/2=0呢

C語言允許不同類型數據進行混合運算,但是要遵循一定的規則,使運算符兩邊的數據類型一致。

轉換原則:將運算符兩邊的數據轉換為它們之中數據最長的數據類型,以保證運算精度不會降低。

上圖中,(1) 橫向箭頭表示必須進行轉換,即使運算符兩邊都是float類型的數據,同樣需要將float轉換為double類型,在進行運算,運算結果為double類型,已保證運算精度。(2)縱向箭頭表示僅當運算符兩邊的數據類型不一致時才進行轉換的方向。且箭頭方向從下至上表示低級別數據類型向高級別數據類型轉換。

熱點內容
安卓蘋果通訊錄怎麼同步 發布:2025-03-17 09:58:12 瀏覽:171
ai緩存 發布:2025-03-17 09:48:27 瀏覽:919
翹嘴水滴輪什麼配置 發布:2025-03-17 09:47:34 瀏覽:580
小蟻攝像機如何雲存儲 發布:2025-03-17 09:42:42 瀏覽:815
如何修改自己的名字和密碼 發布:2025-03-17 09:32:20 瀏覽:787
寶馬3系槍灰色輪轂是哪個配置 發布:2025-03-17 09:28:17 瀏覽:513
鴻蒙系統退回安卓系統怎麼備份 發布:2025-03-17 09:14:33 瀏覽:614
資料庫服務公司 發布:2025-03-17 08:56:43 瀏覽:495
我的世界伺服器載入不了區塊 發布:2025-03-17 08:56:39 瀏覽:817
如何給無線路由器設置密碼 發布:2025-03-17 08:51:40 瀏覽:886