最近剛開始學C語言,今天看到書上出的問題,編了一段,正負整數都可以正常輸出,但還是想問一下,如果終端輸入是個浮點數的話,如何處理?怎么反向正常的輸出?
代碼如下:
/*從終端獲取一個數字后,按英文反向輸出*/
#include <stdio.h>
#include <stdbool.h>
int main(void)
{
int inum,renum;
bool nsign=true;
printf("Please input a Number:\n");
scanf("%i",&inum);
if(inum<0)
{
printf("-");
inum=0-inum;
}
do{
if(inum/10!=0)
{
renum=inum%10;
inum=inum/10;
}
else
{
renum=inum;
nsign=false;
}
switch(renum)
{
case 0:
printf("zero ");
break;
case 1:
printf("one ");
break;
case 2:
printf("two ");
break;
case 3:
printf("three ");
break;
case 4:
printf("foru ");
break;
case 5:
printf("five ");
break;
case 6:
printf("six ");
break;
case 7:
printf("seven ");
break;
case 8:
printf("eight ");
break;
case 9:
printf("nine ");
break;
}
}while(nsign);
printf("\b\n");
return 0;
}

uj5u.com熱心網友回復:
第一浮點數不能用%運算第二浮點數不能精確表示一個數
取巧的方法
char arr[80];
sprintf(arr, "%2lf", 4.6);
然后對 arr 取反
uj5u.com熱心網友回復:
額,超綱了。。。我才開始看到陣列
,我過兩天熟悉了驗證一下。對了,順便厚著臉皮問個事,剛剛試了一下條件運算式:
inum/10!=0?(renum=inum%10,inum=inum/10):(renum=inum,nsign=false);
/*if(inum/10!=0)
{
renum=inum%10;
inum=inum/10;
}
else
{
renum=inum;
nsign=false;
}*/
實作效果是一樣的,第一種看著美觀點。問個對我來說很超綱的問題,對于C語言,條件運算式和IF陳述句哪種更效率更好一點?
uj5u.com熱心網友回復:
對了,我想還是我沒表達清楚。
比如一個終端輸入一個浮點數123.456,如何輸出成six five foru.three two one;
uj5u.com熱心網友回復:
你需要把inum 定義為float 或者double 啊
scanf("%lf",&inum);
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/24071.html
標籤:C語言
