我有一个梦想松驰和我一起工作的程序,它使用目标C来转换华氏、摄氏、开尔文和兰肯温标之间的温度,但是把控制台-输入转换成开尔文,然后从开尔文转换到最终用户想要的温度刻度。
现在,我有一个想法,我想实现的最后提示符转换后的温度,一旦计算完成。它当前设置为只显示如下:
temperature-scale x x度
其中x=最终转换的温度,而温标=用户希望将其温度转换为。
假设最终用户选择Fahrenheit作为他/她的源温度,希望将212度转换为他/她的目标摄氏度。转换明显应该等于摄氏100度,但我认为这个程式会更好地显示结果如下:
212华氏度( Fahrenheit )是摄氏100华氏度( 100 )。
现在,我用粗体表示需要用变量替换的值。我有很容易解决的212和100个值,因为首先有100个变量,而212可以很容易地用sourceTemp变量的字符串格式化程序替换它,该变量包含用户原始输入的温度。
现在,华氏字符串有点不同。
我试图在原来的开关中建立一些新的东西,例如:
switch (prompt)
{
case 1:
//end-user chooses Fahrenheit
[converter setFahrenheitValue:sourceTemp];
sourceTempText = 1;
break;
case 2:
//end-user chooses Celsius
[converter setCelsiusValue:sourceTemp];
sourceTempText = 2;
break;
case 3:
//end-user chooses Kelvin
[converter setKelvinValue:sourceTemp];
sourceTempText = 3;
break;
case 4:
//end-user chooses Rankine
[converter setRankineValue:sourceTemp];
sourceTempText = 4;
break;
}好的,所以我添加到每个不同的情况,设置一个名为sourceTempText的新变量为1-4,与最终用户选择选择他/她的源温度值相同。
下面是我尝试用最后的开关向最终用户显示最后提示符的方法:
switch (prompt2)
{
case 1:
//end-user chooses Fahrenheit
printf("%lf degrees sourceTempText is %lf degrees Fahrenheit\n", sourceTemp, [converter fahrenheitValue]);
break;
case 2:
//end-user chooses Celsius
printf("%lf degrees sourceTempText is %lf degrees Celsius\n", sourceTemp, [converter celsiusValue]);
break;
case 3:
//end-user chooses Kelvin
printf("%lf degrees sourceTempText is %lf degrees Kelvin\n", sourceTemp, [converter kelvinValue]);
break;
case 4:
//end-user chooses Rankine
printf("%lf degrees sourceTempText is %lf degrees Rankine\n", sourceTemp, [converter rankineValue]);
break;
}我现在不确定是否可以像这里一样将sourceTempText插入到字符串中,相反,也许我必须使用字符串格式化程序,但我不确定。这应该是一个简单的解决办法,我只是想把它扔到这里!:)
对不起,这种混乱的问题格式,我有点不知道怎么说,所以请澄清,如果需要。
发布于 2010-08-11 01:00:09
用%s替换sourceTempText,在switch语句上面声明可能的字符串如下:
char *scales[4] = { "Fahrenheit", "Celsius", "Kelvin", "Rankine" };然后向每个printf添加和参数,在sourceTemp,之后,如下所示:
printf("%lf degrees %s is %lf degrees Fahrenheit\n",
sourceTemp, scales[prompt-1], [converter fahrenheitValue]);这是prompt-1,因为计数从零开始,从1开始。
ps. --我看到你现在设置了sourceTempText = 1/2/3/4; --我只是使用了prompt,因为它具有相同的值。你能做的就是
char *scales[5] = { "Error!", "Fahrenheit", "Celsius", "Kelvin", "Rankine" };并使用scales[sourceTempText],同时确保在switch之前,sourceTempText = 0。这将成为输入消毒的一个很好的例子:无论用户设法在prompt中放什么,您的程序总是会显示一个有效的文本。
https://stackoverflow.com/questions/3454571
复制相似问题