【发布时间】:2011-10-07 18:46:38
【问题描述】:
我是 C 的初学者,我正在编写一个将美元转换为欧元的基本程序。由于某种原因,程序没有运行这一行:"scanf("%c", &yn);"。如果我删除 do while 循环,程序可以正常工作。
循环不会停止并等待用户输入“y”或“n”,而是重新开始并再次询问美元金额。
#include<stdio.h>
main()
{
float usd = 0.00;
float euro = 0.00;
char yn;
const float conversion = 0.75;
do {
/*get amount to convert*/
printf("Please enter the amount of USD you want to convert to Euros: ");
scanf("%f", &usd);
/*convert amount*/
euro = (usd * conversion);
/*output results and ask to continue*/
printf("\n%.2f USD equals %.2f Euros. Do you want to convert another amount? (y/n): ", usd, euro);
scanf("%c", &yn);
printf("\n");
/*if yes, get new amount to convert. if no, program ends*/
} while (yn = 'y');
return 0;
}
提前致谢。
【问题讨论】:
-
是什么让你说“程序没有运行这一行”?它最肯定正在运行那条线。也许您应该打印来自
scanf的返回值,以及写入yn的值以确定发生了什么。 (提示:yn将等于'\n'。)