当用户输入的是非数字值时就退出循环,怎么实现?
2012-03-15 17:13
323 查看
看c primer plus 时第五章的编程练习题
都很简单就是最后第8道题最后要求输入非数字时循环结束
经过搜索找到一种简单的方法
原文http://bbs.51cto.com/thread-828552-1-1.html
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
}
代码:
PS:其实用函数的返回值就能实现
都很简单就是最后第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:其实用函数的返回值就能实现
相关文章推荐
- until 循环:实现一个shell脚本,不停地询问用户要执行什么操作,直到用户输入quit才会退出
- loner_li 机试题 由用户输入一个字符串,使用foreach循环遍历出此字符串中有多个字母,多少个数字,多少个标点
- JS+PHP实现用户输入数字后显示最大的值及所在位置
- 循环操作练习,用户输入3次0-20之间的数字,累加求和
- java实现只接收数字输入,输入exit退出程序,并打印输入的数字
- 脚本练习_当用户输入值为数字时显示 非数字时不显示 输入 end 时退出
- 编写代码,由用户输入一个字符串,使用foreach循环遍历出此字符串中有多个字母,多少个数字,多少个标点
- JS+PHP实现用户输入数字后取得最大的值并显示为第几个
- 黑马程序员之C#编程基础学习笔记:不断要求用户输入一个数字,然后打印这个数字的二倍,当用户输入q的时候程序退出。
- 客户端JavaScript实现监视用户键盘输入(只能输入数字,最大输入8个)
- C#控制台基础 用户不断输入直到输入exit 退出循环或是退出控制台
- 编写代码实现,模拟用户登录情景,并且只能登录三次。 只允许输入三次密码,如果密码正确则提示登录成,如果三次均输入错误,则退出程序。
- 8.不断 要求用户输入一个数字,然后打印这个数字的二倍,当用户输入q的时候程序退出(return)
- 写一个猜数字脚本,当用户输入的数字和预设数字(随机生成一个小于100的数字)一样时, 直接退出,否则让用户一直输入,并且提示用户的数字比预设数字大或者小
- 从键盘输入某个十进制小数或整数,转换成对应的二进制小数并输出。 (查询十进制小数转换成二进制小数的算法,使用循环来实现。 最多保留小数位后7位数字即可)算法
- linux系统下怎么输入EOF退出输入循环while(getline(cin, temp)){.....}
- java循环练习:用户输入一个10以内的数字,通过运算求出该数字的阶乘
- 数据结构 c语言实现链式循环队列(输入数字入队 输入字母出队)
- 编写代码实现,模拟用户登录情景,并且只能登录三次,只允许输入三次密码,如果密码正确则提示登录成功,如果三次均输入错误,则退出程序。
- 编写一个程序,要求输入两个浮点数,然后打印出用二者的差值除以二者的乘积所得的结果。在用户非数字的输入之前程序循环处理输入值。