English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

請撰寫一個程式,讓使用者輸入一個含5個整數,4個小數的數字,例如12345.6789,接著在螢幕輸出$ 12,345.678,也就是整數部分每三位數加一個逗號分隔,小數部分一律只顯示3位。

輸出格式規定為:

Please input number => 12345.6789
****************************************
Your input is $ 12,345.678
****************************************


紅色為改作業人員輸入的數字。
各位大大幫幫忙
TC 這個程式實在不熟 請大家幫幫忙

2007-10-05 08:35:43 · 2 個解答 · 發問者 哲安 1 in 電腦與網際網路 程式設計

12345.6789為改作業人員輸入的數字。

2007-10-05 08:47:09 · update #1

2 個解答

由於你這題設定輸入的輸字只會
前五位數必定是整數位
後四位數必定是浮點數
所以加逗點只會有一次,出現在千位和百位之間
所以我的寫法就只針對你設定的條件所寫
所以若數字位數不是九位數,這個範例不見得能正確顯示

[程式碼]
#include
#include

int main(){
double n;
int d1,d2;

scanf("%lf",&n);
d1=(int)n;
d2=(int)(fmod(n,1.0)*1000);
printf("$ %d,%d.%d\n",d1/1000,d1%1000,d2);

return 0;
}

2007-10-05 18:40:04 · answer #1 · answered by  Joybo 5 · 0 0

#include
#include
#include
int main(int argc, char* argv[]){
//=====START=====//
double n;
char tmp1[32767],tmp2[32767],str[32767];
int i,j,k;
printf("Input a number: "),scanf("%lf",&n);
itoa((int)n,tmp1,10);
i=(int)((n-(int)n)*1000),itoa(i,tmp2,10);
strcpy((tmp2+1),tmp2),*(tmp2+0)='.';
for(i=(int)strlen(tmp1)-1,j=0,k=0;i>=0;i--,k++){
str[j]=tmp1[i],j++;
if((k+1)%3==0&&i>0){
str[j]=',',j++;
}
}
str[j]='\0',tmp1[(int)strlen(str)]=str[j];
for(i=0;i<(int)strlen(str);i++){
tmp1[(int)strlen(str)-i-1]=str[i];
}
strcat(tmp1,tmp2),strcpy(str,tmp1);
printf("Your input is $ %s\n",str);
//=====END=====//
system("PAUSE");
return 0;
}

2007-10-06 17:02:38 · answer #2 · answered by Big_John-tw 7 · 0 0

fedest.com, questions and answers