新手求助简单的C语言问题~~!

来源:百度知道 编辑:UC知道 时间:2024/06/14 15:46:02
刚开始学C,什么都是从头开始,刚遇到一个程序不太明白,还请各位指教一下~代码如下~
#include<stdio.h>
main()
{
int m,n;
scanf("%d",&m);
n=10;
if(m==1)
{
n=n+1;
}
if(m==2)
{
n=n+2;
}
if(m==3)
{
n=n+3;
}
else
{
n=n+5;
}
printf("%d",n);
getch();}
我用WIN-TC输出的时候,m=1,n=16;m=2,n=17;m=3,n=13。不太明白这个结果是怎么得到的,请知道的说下这个程序具体是怎么执行的,小弟先谢过了~~

main()
{
int m,n;
scanf("%d",&m);
n=10;
if(m==1)
{
n=n+1;
}
if(m==2)
{
n=n+2;
}

if(m==3)
{
n=n+3;
}
else
{
n=n+5;
}

printf("%d",n);
getch();}

else是跟着离他最近的一个IF的

当你M=1时 执行第一个IF 那么N=11了,然后因为M=1 所以第二个 IF不满足

显然第三个IF 也不满足
但是 第三个IF 后面有个ELSE,所以会执行ELSE 所以 N=11+5=16

简单说 把 程序分成3个IF块 分别叫A,B,C(C包含IF 和 ELSE)

M=1时 执行过程是 A,C
M=2 B,C
M=3 C

这要对if-else语句有一定理解,前面两个if是单独的判断语句,后面一个if和其后的else是一个统一的语句,所以当m=1和m=2是执行完前面的if后还执行后面的else,当m=3是只执行第三个if