C语言基础,条件结构

第六题else不是个最近的if配对吗那最前面那个if不是满足了吗,不是应该直接输出c等于2吗

第1个回答  2019-09-17
要大致了解下scanf函数。
#include

int
scanf(const
char*
format,
va_list);
功能:格式化输入或扫描(scan
format=Formatting
scanning)。在format串的控制下,读取输入转换并赋值到后面对应的参数变量中。
返回值:正确赋值给va_list中变量的输入项目的个数。
说明:
你的一个例子说明:
scanf("%d",
&c)中的"%d"(d=decimal
,十进制数)是一个转换说明符,告诉scanf,把输入文本中匹配整数格式的部分解释成一个基本整数,然后写到c变量中。如果存在某种错误,行为未定义。
你可以试验下:
int
c
=
7;//定义一个名为x的整数变量,初始值为7
int
count;
count
=
scanf("%d",
&c);//输入格式必须为:数字,用正则描述是:/^[+-]*[0-9]+$/
printf("%d",
c);
printf("%d",
count);
运行这段代码,会发现,如果你的输入是不正确的数字格式
例如包含字母字符,那么输出就不会等于输入的内容,而等于c原先的值。
显然,完成相等值判断的if-else
if-else中的else语句肯定会执行。
另外这句:printf("%d",
count)
会打印出
正确赋值给va_list中变量的输入项目数,所以输入了字母就为0,否则为1。
如果那段代码是别人的例子,要做的功能正是如此么。。:当用户的输入不合法时打印提示"please
input"重新输入,直到用户输入了一个合适的数字。
第2个回答  2019-06-20
else是与上面最近的if匹配,看不清你的题目,如果是
if(a<b)
if(b<c)....
else c++;
那就相当于
if(a<b)

{

if(b<c)....
else c++;
}

虽然a<b满足,但是b<c不成立,所以会运行c++,C的值最后还是3本回答被提问者和网友采纳
第3个回答  2019-06-20
else跟if(c<0)匹配,所以执行c++,也就是c=3
第4个回答  2019-06-20
else是和第二个if匹配 最近 c应该为3
第5个回答  2019-06-20
将图片拍清晰,或者直接给出问题的文字版。看不清楚问题就是想给你解决问题也做不到啊
相似回答