您的位置:首页 > 其它

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

2012-03-15 17:13 323 查看
看c primer plus 时第五章的编程练习题
都很简单就是最后第8道题最后要求输入非数字时循环结束
经过搜索找到一种简单的方法
原文http://bbs.51cto.com/thread-828552-1-1.html

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

我要用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:其实用函数的返回值就能实现

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐