标题:求教getchar的详细用法
只看楼主
huaheshang
Rank: 2
来 自:日照
等 级:论坛游民
帖 子:91
专家分:37
注 册:2010-12-7
结帖率:79.31%
已结贴  问题点数:8 回复次数:5 
求教getchar的详细用法
#include<stdio.h>
main()
{
  char sex,sports,diet;
  float myheight,maheight,faheight;
  printf("are you a boy(b) or a girl(g)?");
  scanf("%c",&sex);
  printf("please input your mather'height--(cm):");
  scanf("%f",&maheight);
  printf("please input your father'height--(cm):");
  scanf("%f",&faheight);

  printf("do you like sports(y/n)?");
  getchar();
  scanf("%c",&sports);
  printf("do you have a good habit of diet(y/n)?");
   getchar();
  scanf("%c",&diet);
  if(sex=='b')
   myheight=(maheight+faheight)*0.54;
   else
   myheight=(maheight+faheight)*0.5;
  if(sports=='y')
   myheight=myheight*1.102;
   else
   myheight=(faheight*0.923+maheight)*0.5;
   if(diet=='y')
   myheight=myheight*1.1015;
  printf("your future height will be  %f (cm)\n",myheight);
  getch();
   
}
程序中的getchar为什么不可省略,getchar的详细用法及注意事项,请详细讲一下
谢谢
搜索更多相关主题的帖子: father girl include please sports 
2013-04-10 12:53
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
得分:2 
从哪抄的代码?
不管程序的话,你告诉我getchar这个函数是干嘛的?

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-04-10 14:01
party620
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:18
帖 子:696
专家分:2521
注 册:2013-1-31
得分:2 
应该是可以省略的,我觉得 你同时用getchar()和scanf()函数,有点重复,两者都是从键盘上输入,不同是第一个只能输入单个字符,而第二个可以用于任何数据类型的输入;
至于你说的程序不能省略getchar(),我不清楚
2013-04-10 14:04
Juson
Rank: 4
等 级:业余侠客
帖 子:70
专家分:235
注 册:2013-4-8
得分:2 
这是输入流的读取问题。
对于scanf函数
1、在读取各种整数、实数、字符串时都会自动跳过输入流开头的的空白符,如回车、空白符、制表符等,然后读取有效数据,当遇到无效数据时(可能是空白符或是其他类型的数据),停止读取。
2、当仅仅读取一个字符时,如scanf( "%c", &c ) ; ,此时是不跳过任何字符的,也就是读取输入流开头的一个字符,不管它是不是空白符。

对于getchar()函数,它就是读取一个字符,不管是不是空白符。

例如下面语句
{
 scanf ( "%d", i ) ;
 scanf ( "%c", &c ) ;
 d = getchar () ;
 e = getchar () ;
}
输入45,然后回车,然后再输入x,然后再回车
结果就是
i = 45
c =     //c是回车

d = x
e =      //e是回车

2013-04-10 14:12
lo_vely_2012
Rank: 1
等 级:新手上路
帖 子:2
专家分:2
注 册:2013-3-26
得分:2 
  scanf("%c",&sports);
  printf("do you have a good habit of diet(y/n)?");
   getchar();//不能去,原因'\n'字符能被此函数读取,而不至于影响到下一行scanf函数误读取‘\n'字符导致直接输出。
2013-04-10 15:57
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2391
专家分:13384
注 册:2013-3-3
得分:2 
getchar();是一个从设备上去入一个字符,该函数没有参数,但一对圆括号不能成略,其只能从键盘上接收一个字符。

Maybe
2013-04-10 18:30



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-403590-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.334214 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved