编写一个程序,请教关于一个C程序输出格式的问题

编写一个程序,对用户输入的产品信息进行格式化。程序会话应该类似下面这样:Enter item number: 583Enter unit price: 13.5Enter purchase date (mm/dd/yyyy) : 10/24/2010Item Unit Purchase Price Date583 $ 13.50 10/24/2010其中,产品编号和日期项采用左对齐方式,单位价格采用右对齐方式,允许最大取值为9999.99美元。提示:各个列使用制表符控制。

我写的程序如下:#include <stdio.h>
int main(void){ int item, mm, dd, yyyy; float unitPrice; printf("Enter item number: "); scanf("%d", &item); printf("Enter unit price: "); scanf("%f", &unitPrice); printf("Enter purchase date: "); scanf("%d/%d/%d", &mm, &dd, &yyyy); printf("Item\t\tUnit\t\tPurchase"); printf("\n\t\tPrice\t\tDate"); printf("\n%-d\t\t$ %6.2f\t%-02d/%-02d/%-d", item, unitPrice, mm, dd, yyyy); getch(); return 0;}
其中“允许最大取值为9999.99美元”,应该怎么来正确的限制?如果我输入的是99999.99(前面多加了个9),怎么显示出来的还是99999.99?

因为你在打印的时候用的是%6.2f,可以取到6位;如果要限制的话,代码修改如下:#include <stdio.h>
int main(void){
int item, mm, dd, yyyy;
double unitPrice; //建议改为double类型,否则9999.99后面会出现随机数
printf("Enter item number: ");
scanf("%d", &item);
printf("Enter unit price: ");
scanf("%lf", &unitPrice); //因为是double,需要改为lf //增加限制,不允许超过9999.99
while(1){
if(unitPrice>9999.99){
printf("unitPrice[%f]不能大于9999.99,请重新输入:",unitPrice);
scanf("%lf", &unitPrice); //因为是double,需要改为lf
}else
break;
}
printf("Enter purchase date: ");
scanf("%d/%d/%d", &mm, &dd, &yyyy);
printf("Item\t\tUnit\t\tPurchase");
printf("\n\t\tPrice\t\tDate");
printf("\n%-d\t\t$ %6.2f\t%-02d/%-02d/%-d", item, unitPrice, mm, dd, yyyy);
getch();
return 0;
}
温馨提示:答案为网友推荐,仅供参考
相似回答