条件语句判断
写一个程序,对用户输入的数进行求和,用户可以在同一行输入多个数字,数字之间可以是任意一个分隔符。当用户输入任意字符时,结束程序并打印结果#include<stdio.h>
int main()
{
float num=0;
double sum=0;
int s;
do
{
printf("请输入合法的数字:");
do{
sum+=num;
s=scanf("%f",&num);
}while(s==1&&getchar()!='\n');//不是很能理解这个条件判断的逻辑,假如数之间也有其他符号,岂不是直接跳出循环了,他是怎么忽略掉数之间的符号呢?
}while(s==1);
printf("结果是:%.2f\n",sum);
return 0;
} s==1表示什么意思 首先你得了解 scanf() 函数的用法以及返回值
如下:
scanf()返回值:出至鱼Chttps://fishc.com.cn/thread-67391-1-1.html
如果函数调用成功,返回值是成功获取并填充到附加参数中的个数。
如果函数调用失败,返回值小于附加参数的个数(甚至是 0)。
如果读取到标准输入流的结尾处,则返回 EOF。 float num = 0;
int s;// 负责接受 scanf() 函数返回的结果(0, 1)
s = scanf("%f", &num); // 这里num你定义的是浮点型变量
// 此时你输入的是个整数或者浮点数 那么scanf()返回的结果为真(1)
// 若是你输入不是float类型的,例如 输入'a' 编译器就会说,你给我定义的是float类型的,'a'是啥玩意,于是气冲冲的扔给你一个 0(假),潇洒的离去{:10_335:}
以上是我的理解希望对你有帮助{:10_281:} 7a8 其中的字符部分,被getchar()接收了,当你按下回车的时候就退出内层循环
while(s==1&&getchar()!='\n');
第一次循环 7 s = 1 getchar()接收一个 字符 'a' 并且判断是否为'\n'
第二次循环8 此时getchar()接收了一个\n 退出循环 做最好的自己520 发表于 2023-2-8 17:59
首先你得了解 scanf() 函数的用法以及返回值
如下:
scanf()返回值:出至鱼Chttps://fishc.com.cn/th ...
可是都判断是假了,内层循环外层循环应该都跳过啊,怎么会忽略掉'a'继续读取8呢 wp231957 发表于 2023-2-8 16:52
s==1表示什么意思
你查查运算符那个表格不就清楚吗,这种问题居然问我???
fuaowei 发表于 2023-2-12 20:30
可是都判断是假了,内层循环外层循环应该都跳过啊,怎么会忽略掉'a'继续读取8呢
感觉4楼说的挺明白的了,实在不行可以 lldb 调试看看 dolly_yos2 发表于 2023-2-12 20:52
感觉4楼说的挺明白的了,实在不行可以 lldb 调试看看
那个大佬讲的确实是很清楚,我也大致明白,就是很奇怪'a'居然是第一次循环里的,不应该是7是第一次循环,'a'是第二次循环,然后再依次循环{:10_266:}。第一次学习编程理解这个好痛苦
页:
[1]