在输入数据时,如何使用缺省值?

myblind 2002-10-02 09:27:59
怎样用C写?
当用户输入的是数字时就将它赋给一个变量,
输入的是回车时,给变量赋予自定的缺省值。

请教高手!!
...全文
121 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
myblind 2002-10-07
  • 打赏
  • 举报
回复
我把 if('\n'==n[i++]) 改成了 if(0==n[i++]) 就行了.
flyingdog 2002-10-05
  • 打赏
  • 举报
回复
差点忘了。用gets(n);就行了。
flyingdog 2002-10-05
  • 打赏
  • 举报
回复
把scanf("%s",n);改为
int j=0;
do
{
n[j]=getchar();
}while(n[j++]!='\n');

myblind 2002-10-05
  • 打赏
  • 举报
回复
倒是能输入浮点数了,可是直接敲回车还是等待输入。
flyingdog 2002-10-05
  • 打赏
  • 举报
回复
gets(n) 与 scanf("%s",n) 差多了。
首先,scanf碰到空格就结束了,gets直到回车才结束。
其次,单单一个回车,scanf仍会等待,gets就不会。
所以,应该先gets(n),再用上面的方法把字符转换成数字,最好再判断一下n中是否有其他非法字符。
cbc 2002-10-05
  • 打赏
  • 举报
回复
gets(n) 与 scanf("%s",n) 是等价的;
按楼主的说法,如果直接回车(不保含任何字符,就一个回车),就缺省,那这样看行不行
#include "stdio.h"
#include "math.h"

#define DEFAULT_VALUE 100 //定义默认值
#define N 10 //定义数组大小

void main()
{
char n[N];
int i;
double result;

i=0;
n[i++]=getchar();
if('\n'==n[0]) result=DEFAULT_VALUE;
else{
while((n[i++]=getchar())!='\n')
result=atof(n);
}
printf("%f\n",result);
}
myblind 2002-10-05
  • 打赏
  • 举报
回复
哦,谢谢,不过好象输回车不会判断 if('\n'==n[i++])
huanshilang 2002-10-04
  • 打赏
  • 举报
回复
这回行了吧 呵呵 学习学习 ;)
cbc 2002-10-04
  • 打赏
  • 举报
回复
#include "stdio.h"
#include "math.h"

#define DEFAULT_VALUE 100 //定义默认值
#define N 10 //定义数组大小

void main()
{
char n[N];
int i;
double result;

scanf("%s",n);
i=0;
do{
if('\n'==n[i++]){
result=DEFAULT_VALUE;
break;
}
if('\0'==n[i]){
result=atof(n);
break;
}
}while(1);
printf("%f",result);
}
cbc 2002-10-04
  • 打赏
  • 举报
回复
我说得时如何能输入浮点数?我写错了
float f; scanf("%f",&f);

double f; scanf("%lf",&f);
viking7 2002-10-04
  • 打赏
  • 举报
回复
cbc(逍遥子) ( ) 的方法是不行的
elvahuang 2002-10-04
  • 打赏
  • 举报
回复
好好侃侃吧

myblind 2002-10-04
  • 打赏
  • 举报
回复
你看了上面的要求吗?
cbc 2002-10-04
  • 打赏
  • 举报
回复
float f;
scanf("%lf",&f);

double f;
scanf("%f",&f);
myblind 2002-10-04
  • 打赏
  • 举报
回复
如何能输入浮点数?
myblind 2002-10-03
  • 打赏
  • 举报
回复
各位都是高手,
henryftb 2002-10-03
  • 打赏
  • 举报
回复
up
tomatopj 2002-10-03
  • 打赏
  • 举报
回复
呵呵,不好意思default打错了
tomatopj 2002-10-03
  • 打赏
  • 举报
回复
应该是输入一个字符串,然后将其转换为int,如下:
int input()
{
char n[10];
int result = DEFALUT_VALUE
n[0] = getchar();
if ( '\n' == first ) return result;
scanf("%s", &n[1]);
sscanf(n, "%d", &result);
return result;
}
waterstony 2002-10-03
  • 打赏
  • 举报
回复
顾此失彼,不好意思
加载更多回复(12)

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧