为什么scanf可以同时将两个值(只要中间加个逗号或空格)赋值到一个变量命里
#include <stdio.h>int main()
{
float num = 0;
double sum = 0;
int status;
do
{
printf("请输入合法的数字:");
do
{
sum = sum + num;
status = scanf("%f", &num);
} while (getchar() != '\n' && status == 1);
} while(status == 1);
printf("结果是:%.2lf\n", sum);
return 0;
} 本帖最后由 superbe 于 2019-11-3 13:48 编辑
do {
sum = sum + num;
status = scanf("%f", &num);
} while (getchar() != '\n' && status == 1);
1. 先执行scanf读入一个数,
2. 再getchar()接收一个字符,不只是逗号和空格,换成其它字符也会被接收,这个字符相当于被“吃掉”了,
3. 然后再执行scanf时从上述的字符后面一个字符重新开始读取。如果不是数字(忽略开头的空白字符)就退出循环。
这样就可以逗号或空格为分隔符,读取多个数了。 同时将两个值赋值到一个变量命里,是我听错了还是你描述不清楚?
有本事,你先把一个变量的2个值打印出来看看 ba21 发表于 2019-11-1 23:16
同时将两个值赋值到一个变量命里,是我听错了还是你描述不清楚?
有本事,你先把一个变量的2个值打印出 ...
我也很疑惑,但如果输入12,34之类的它会将这两个值都计算,但我只定义了一个变量num,为什么这两个数字中间加个逗号或空格就可以被赋值进去 姬世鹏 发表于 2019-11-2 18:34
我也很疑惑,但如果输入12,34之类的它会将这两个值都计算,但我只定义了一个变量num,为什么这两个数字中 ...
比如,代码哪里? ba21 发表于 2019-11-2 19:03
比如,代码哪里?
status = scanf("%f", &num);
你可以运行一下试试,输入23,12或23 12都可以进行独立运算 姬世鹏 发表于 2019-11-2 21:21
status = scanf("%f", &num);
你可以运行一下试试,输入23,12或23 12都可以进行独立运算
听你讲半天,就讲这个。
输入23,12 结果num=23
输入23 12 结果num=23
有疑问吗?没有什么不对。
过多的解释不来,你还是仔细看看scanf的使用说明吧
https://baike.baidu.com/item/scanf/10773316?fr=aladdin superbe 发表于 2019-11-1 22:22
do {
sum = sum + num;
status = scanf("%f", &num);
谢谢,终于理解我的意思了 弟弟又不认真听课
页:
[1]