C 编程 - 如何仅使用循环打印带有小数分量的数字



我目前正在学习 C 编程课的基本入门,对于我们目前的任务,我将编写一个程序,使用循环将公里数转换为英里数 - 不允许使用 if-else、switch 语句或任何其他我们尚未学习的结构。所以基本上我们只能使用循环和一些运算符。该程序将为一个数字输入生成三个相同的表(从输入值的 1 公里开始),使用 while 循环进行第一

组计算,使用 for 循环进行第二组计算,使用 do 循环进行第三组计算。

我已经编写了整个程序,但是在让它识别带有十进制部分的输入时遇到了一些问题。

代码可以很好地读取和转换整数,但由于增量仅增加 1,因此它不会打印带有小数部分的数字(例如 3.2、22.6 等)。

有人可以指出我正确的方向吗?我真的很感激任何帮助!:)

目前尚不清楚您要获取什么作为输出。您使用从 3.2 开始的示例,因此基于此,并根据您当前的程序,您的输出为:

 KILOMETERS       MILES    (while loop)
 ==========       =====
   1.000          0.620
   2.000          1.240
   3.000          1.860

问题是您的表在没有给出 3.2 值的情况下结束吗?解决此问题的一种简单方法(根据您的要求仅使用循环语句)是添加以下代码:

while (count < km)
{
    printf ("%8.3lf %14.3lfn", km, KM_TO_MILE * km);
    count = km;
}

这真的是一个变相的if陈述,我不知道你的教授是否会接受它,但它确实提供了最后一行输出。

您是否需要为每行输入增加 1.0 (km) 的条目?如果没有,也许更好的解决方案是确定从一行到下一行的偏移量,这样您就可以在有限数量的行上在 1.0 和 km 之间迭代。

一个简单的

解决方案是将输入(km)乘以10,100或1000。然后将结果(mi)除以相同的常数。但避免在循环中打印结果,将其从那里取出。不过,您可能会失去精度(这是您的下一个练习:)

#include <stdio.h>
#define KM_TO_MILE .62 
#define NAMEITHOWYOULIKE 100.0
main (void)
{
  double km, mi, count;                                                          
  printf ("This program converts kilometers to miles.n");
    do                                                                      
    {
           printf ("nEnter a positive non-zero number");                   
           printf (" of kilometers of the race:  ");
           scanf  ("%lf", &km);                                             
           getchar();                                                      
    }while (km <= 1);                                                       
    km = km * NAMEITHOWYOULIKE;
    printf ("n KILOMETERS       MILES    (while loop)n");                      
    printf (" ==========       =====n");
    count = 1;                                                              
    while (count <= km)                                                     
    {                                                                       
          mi = KM_TO_MILE * count;
     ++count;                                                                           
    }
    printf ("%8.3lf %14.3lfn", count/NAMEITHOWYOULIKE, mi/NAMEITHOWYOULIKE);                  
    getchar();
    }

如果你想输出这个:

 KILOMETERS       MILES    (while loop)
 ==========       =====
   1.000          0.620
   2.000          1.240
   3.000          1.860
   3.200          1.984

只需在while循环后添加以下内容(以获得独家"最终结果"):

mi = KM_TO_MILE * km;
printf("%8.3lf %14.3lfn", km, mi);

或包含"最终结果",以防止在使用整数时最后两个结果相同:

while (km > count)
{
    mi = KM_TO_MILE * km;
    printf("%8.3lf %14.3lfn", km, mi);
    break;
}

您已成功打印整数值,但完成后需要打印最终值。最后(上图)您需要做的就是将值直接从公里转换为英里。

输出图像

#include<stdio.h>
int main() {
double kilo, miles, i;
printf("enter the kilometer to be converted :");
scanf("%lf",&kilo);
printf("kilost           milesn");
printf("-----------------------------------------------------n");
i=1;
while(i<=kilo){
 miles=i/1.609;
printf("%lft   %lfn",i,miles);
i++;

}

}

最新更新