请问这两种代码有什么区别吗(主要是最后的几个语句不同)?为什么第一种可以过,但是第二总不能正常运行?

```c
#include <stdio.h>
int main()
{
int a=0,b=0,c=0,d=0,e=0,f=0;
char ch;
while((ch=getchar())!='@')
{
if(ch=='(')
{
a++;
}else if(ch==')')
{
b++;
}else if(ch=='[')
{
c++;
}else if(ch==']')
{
d++;
}else if(ch=='{')
{
e++;
}else if(ch=='}')
{
f++;
}
}if(a!=b)
{
printf("()");
}
if(c!=d)
{
printf("[]");
}
if(e!=f)
{
printf("{}");
}
if((a==b)&&(c==d)&&(e==f))
{
printf("NULL");
}
return 0;
}
```c
#include <stdio.h>
int main()
{
int a=0,b=0,c=0,d=0,e=0,f=0;
char ch;
while((ch=getchar())!='@')
{
if(ch=='(')
{
a++;
}else if(ch==')')
{
b++;
}else if(ch=='[')
{
c++;
}else if(ch==']')
{
d++;
}else if(ch=='{')
{
e++;
}else if(ch=='}')
{
f++;
}
}if(a!=b)
{
printf("()");
}
else if(c!=d)
{
printf("[]");
}
else if(e!=f)
{
printf("{}");
}
else if((a==b)&&(c==d)&&(e==f))
{
printf("NULL");
}
return 0;
}