当用户输入的是非数字值时就退出循环,怎么实现?

看c primer plus 时第五章的编程练习题
都很简单就是最后第8道题最后要求输入非数字时循环结束
经过搜索找到一种简单的方法

当用户输入的是非数字值时就退出循环,怎么实现?

我要用C实现一个小程序,功能是让用户输入一个double类型的华氏温度值,然后把这个值转换为摄氏温度值,
4 W: c( h$ a: k7 R. f1 h! y& j% ]这个程序是一个循环,用户可以连续输入。要求当用户输入的是非数字值时,比如输入q字符,就退出循环。
" `& @4 O  S+ H! ]" j我想问的是,怎么判断用户输入的是否是数字值啊?怎么判断是否退出循环?谢谢啦。
3 C3 C6 q, _0 p获取用户输入时,我用的是scanf这个函数,可以吗。scanf("%lf",&tem); 4 l8 o4 N% a6 f' f: x& j  o# X
; v4 G4 R3 Y4 ^" {6 I' b) z! Z
下面是我的实现的一不部分功能,没有实现循环输入的功能,因为我不知道怎么判断是否退出循环。
% @5 C; X3 n1 Y- N) ]$ t  ~7 S' ^$ r#include <stdio.h>
( V- {( T2 Z) y) T3 Svoid temperatures(double i);
( \$ p0 [( V! w6 W* jint main(void) ! |/ H* ?  g& ^( j3 r6 Y# K
{ 7 ^0 n, S- _# ~8 c& H4 B  K# t
        double tem; 3 `$ r; @: X- N6 R0 \* @
        printf("Input the temperatures in Fahrenheit:"); ' N3 l; d, [* q
        scanf("%lf",&tem);
3 p6 Q" p1 |! c        temperatures(tem);//这里应该是循环调用,但是我不知道怎么判断是否退出循环,所以没实现。 & o: {: ?/ X2 \
        return 0;
. B5 d  W4 v: ~+ T" R " K2 E6 h# L$ e/ |! `
} 4 w2 g& G- U! I4 @3 q. P5 W& q

9 ~2 G* j/ m0 A" Z, rvoid temperatures(double i) , E# B; K5 P; R4 G
{
: R" q" I5 J; E4 S3 B5 |        const double F_C_1 = 1.8;
; m& f3 N3 Z5 c. S3 M) o        const double F_C_2 = 32.0; " P. ~0 f" q9 s1 E% a
        const double C_K = 273.16;
5 L$ Z' C( l- {* K( `        double c,k;
6 c8 J! H" B" g2 d) [        c = F_C_1 * i + F_C_2; % f. w% ~! }6 a& }8 i
        k = c + C_K; 1 F* b: |( t2 O& L* m
        printf("%.2fF = %.2fC = %.2fK.\n",i,c,k); * u' u& [% h+ [7 x
}

回复 楼主 standmyground 的帖子

复制内容到剪贴板
代码:
#include <stdio.h>

void temperatures(double i)
{
  const double F_C_1 = 1.8;
  const double F_C_2 = 32.0;
  const double C_K = 273.16;
  double c,k;

  c = F_C_1 * i + F_C_2;
  k = c + C_K;

  printf("%.2fF = %.2fC = %.2fK.\n",i,c,k);
}

int main(void)
{
  double tem;
  printf("Input the temperatures in Fahrenheit:");
  //输入数字以继续,其他结束
while(scanf("%lf",&tem))
  {
    temperatures(tem);
    printf("Input the temperatures in Fahrenheit:");
  }
  return 0;
}
道理其实很简单,同样if 等其它的循环也可以完成
附上我做的源码
#include <stdio.h>
void Temp(double b);
int main(void)
{
double F;
printf("请输入华氏温度\n");
    while(scanf("%lf",&F))
    Temp(F);
printf("输入错误,已结束");
}
void Temp(double b)
{
double C,K;
C=1.8*b+32.0;
printf("摄氏度为%f\n",C);
K=C+273.16;
printf("绝度温度是%f\n",K);
}
PS:其实用函数的返回值就能实现
 
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值