c语言中怎样表示当输入非数字值时,循环结束
答案:5 悬赏:70
解决时间 2021-01-26 11:22
- 提问者网友:骑士
- 2021-01-26 08:19
c语言中怎样表示当输入非数字值时,循环结束
最佳答案
- 二级知识专家网友:话散在刀尖上
- 2021-01-26 09:48
可以使用scanf来输入数字,并用其返回值来判断。
函数名:scanf
所在头文件: stdio.h
原型:int scanf(const char *format,...);
功能:
从标准输入stdin (标准输入设备,一般是键盘)中读内容的通用子程序,可以按格式(format)读入多个字符,并保存在对应地址的变量中,变量地址由参数传入。
调用形式:
scanf("<格式说明字符串>",<变量地址>);
变量地址要求有效,并且与格式说明的次序一致。
返回值:
返回成功赋值的数据项数,读到文件末尾出错时则返回EOF。
所以如果输入的是合法的数值,返回值将是设定的变量地址个数,比如
scanf("%d%d",&a,&b);
如果正确的话返回值将是2。
如果返回值不是变量地址的个数,那么就代表有非法字符输出,即所说的非数字值。
以输入int值为例,下面这个程序实现了一个没什么用处的功能,仅供理解上述方法。
函数名:test
功能:循环读入整数,当输入非数字值时结束循环。
代码实现:
#include
void test(void)
{
while(1)
{
int v, ret;
ret = scanf("%d",&v);//每次输入一个整型数值并存在v中
if(ret != 1) break;//判断返回值,如果非1则退出循环。
printf("%d
", v);//输出读入的v值
}
}
函数名:scanf
所在头文件: stdio.h
原型:int scanf(const char *format,...);
功能:
从标准输入stdin (标准输入设备,一般是键盘)中读内容的通用子程序,可以按格式(format)读入多个字符,并保存在对应地址的变量中,变量地址由参数传入。
调用形式:
scanf("<格式说明字符串>",<变量地址>);
变量地址要求有效,并且与格式说明的次序一致。
返回值:
返回成功赋值的数据项数,读到文件末尾出错时则返回EOF。
所以如果输入的是合法的数值,返回值将是设定的变量地址个数,比如
scanf("%d%d",&a,&b);
如果正确的话返回值将是2。
如果返回值不是变量地址的个数,那么就代表有非法字符输出,即所说的非数字值。
以输入int值为例,下面这个程序实现了一个没什么用处的功能,仅供理解上述方法。
函数名:test
功能:循环读入整数,当输入非数字值时结束循环。
代码实现:
#include
void test(void)
{
while(1)
{
int v, ret;
ret = scanf("%d",&v);//每次输入一个整型数值并存在v中
if(ret != 1) break;//判断返回值,如果非1则退出循环。
printf("%d
", v);//输出读入的v值
}
}
全部回答
- 1楼网友:鱼芗
- 2021-01-26 13:58
int main()
{
int inum;
while(cin >> inum)
{
...
}
return 0;
}追问还是不懂追答int main()
{
int inum;
while(scanf("%d", &inum))
{
...
}
return 0;
}
{
int inum;
while(cin >> inum)
{
...
}
return 0;
}追问还是不懂追答int main()
{
int inum;
while(scanf("%d", &inum))
{
...
}
return 0;
}
- 2楼网友:山有枢
- 2021-01-26 12:48
你说的不清楚,应该具体点嘛追问while循环中可以无限输入数字,然后如果输入非数字,循环就结束了追答
我写一下你看看哈#include
int main(void)
{
int n;
while (scanf("%d", &n))
printf("n = %d ", n);
return 0;
}
用到scanf(),如果成功读入一个整数,就返回1,否则就返回0追问
还是不行,帮我看看吧
追答没搞清楚你想做什么呢,你的函数好像有很多问题追问我想做的是输入一个数字n,然后转换成cel,cel=1.8*n+32.0;利用while循环来输入n,while循环中可以无限输入数字,然后如果输入非数字,循环就结束了.其中那个Temper()是调用函数追答#include
float temper();
int main(void)
{
float cel;
printf("cel = %f", temper());
return 0;
}
float temper()
{
float a, cel;
printf("Please input a number:");
while (scanf("%f", &a))
cel = 1.8 * a + 32.0;
return cel;
}
我写一下你看看哈#include
int main(void)
{
int n;
while (scanf("%d", &n))
printf("n = %d ", n);
return 0;
}
用到scanf(),如果成功读入一个整数,就返回1,否则就返回0追问
还是不行,帮我看看吧
追答没搞清楚你想做什么呢,你的函数好像有很多问题追问我想做的是输入一个数字n,然后转换成cel,cel=1.8*n+32.0;利用while循环来输入n,while循环中可以无限输入数字,然后如果输入非数字,循环就结束了.其中那个Temper()是调用函数追答#include
float temper();
int main(void)
{
float cel;
printf("cel = %f", temper());
return 0;
}
float temper()
{
float a, cel;
printf("Please input a number:");
while (scanf("%f", &a))
cel = 1.8 * a + 32.0;
return cel;
}
- 3楼网友:大漠
- 2021-01-26 12:16
int main(void)
{
int n,a;
a = scanf("%d", &n);
while (a != 0)
{
printf("n = %d\n", n);
a = scanf("%d", &n);
}
return 0;
}
{
int n,a;
a = scanf("%d", &n);
while (a != 0)
{
printf("n = %d\n", n);
a = scanf("%d", &n);
}
return 0;
}
- 4楼网友:酒者煙囻
- 2021-01-26 11:25
思路:用strcmp()函数,判断输入的键盘的ASCII码值在30-39之间的,就是数值,相反,就是非数字值。break跳出循环。追问strcmp这个函数没学过追答好像这个函数是比较两个字符串的大小,用在这还不恰当,我看了这个例子,你自己理解着应用:
C语言使用的读入键盘输入的函数较常用的一般有:
scanf
fscanf
sscanf
getchar
gets
scanf、fscanf、sscanf 根据你定义的字符格式来判断是字符串还是纯数字。
例如:
scanf("%d",&a); 使用了格式控制%d就表示输入的十进制整数;
scanf("%",a);控制%s就表示输入的字符串。
详细格式控制符如下:
a 读浮点值(仅适用于 C99)
A 读浮点值(仅适用于 C99)
c 读单字符
d 读十进制整数
i 读十进制、八进制、十六进制整数
e 读浮点数
E 读浮点数
f 读浮点数
F 读浮点数(仅适用于 C99)
g 读浮点数
G 读浮点数
o 读八进制数
s 读字符串
x 读十六进制数
X 读十六进制数
p 读指针值
n 至此已读入值的等价字符数
u 读无符号十进制整数
[ ] 扫描字符集合
% 读 % 符号(百分号)
gets一般直接默认输入的就是字符串,即使你输入一串数字,也会认为你输入的是字符数字;
getchar一般直接默认输入字符。追问
帮我看看吧!
C语言使用的读入键盘输入的函数较常用的一般有:
scanf
fscanf
sscanf
getchar
gets
scanf、fscanf、sscanf 根据你定义的字符格式来判断是字符串还是纯数字。
例如:
scanf("%d",&a); 使用了格式控制%d就表示输入的十进制整数;
scanf("%",a);控制%s就表示输入的字符串。
详细格式控制符如下:
a 读浮点值(仅适用于 C99)
A 读浮点值(仅适用于 C99)
c 读单字符
d 读十进制整数
i 读十进制、八进制、十六进制整数
e 读浮点数
E 读浮点数
f 读浮点数
F 读浮点数(仅适用于 C99)
g 读浮点数
G 读浮点数
o 读八进制数
s 读字符串
x 读十六进制数
X 读十六进制数
p 读指针值
n 至此已读入值的等价字符数
u 读无符号十进制整数
[ ] 扫描字符集合
% 读 % 符号(百分号)
gets一般直接默认输入的就是字符串,即使你输入一串数字,也会认为你输入的是字符数字;
getchar一般直接默认输入字符。追问
帮我看看吧!
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯