求帮忙解答?解决办法

求帮忙解答?
char c;

do
{
printf("运行程序?【Y \ N】");
scanf("%c", &c);
for(int i=1; i<INT_MAX; ++i)
{
if(c == 'Y'||'y')
break;
else if(c == 'N'||'n')
return 0;
else;
}
}
while(c == 'y');

return 0;
求帮忙解答?解决办法

这个语句为什么不能从复执行?
------解决方案--------------------
printf里面的%和变量的一一对应关系
scanf里面的%和变量以及变量前加不加&的一一对应关系
是C代码中非常容易出错的地方,而且通常编译还不出错。
所以在编译源代码之前值得专门仔细检查一遍甚至多遍。

在每个最后不带\n的printf后面加fflush(stdout);
在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin);
另外请检查scanf的返回值。

------解决方案--------------------
你的程序执行时,输入y,接着按Enter键
y被scanf读取放入c中,完成一次循环
第二次循环时,Enter键值被scanf读取放入c中,按你程序的逻辑,for循环结束后,while(c == 'y');中的判断不成立,main正常结束
scanf("%c", &c);
  //标准中根本没有定义 fflush(stdin)。MSDN 文档里也清楚地写着fflush on input stream is an extension to the C standard(fflush 操作输入流是对 C 标准的扩充)。当然,如果你毫不在乎程序的移植性,用 fflush(stdin) 也没什么大问题。
     
   //fflush(stdin); 
    {
            int a;
                /* 通过 while 循环把输入流中的余留数据“吃”掉 */
                while ( (a = getchar()) != '\n' && a != EOF ) ;
               
      }

      for(i=1; i<12; ++i)
      {
         if(c == 'Y'
------解决方案--------------------
'y')
            break;
         else if(c == 'N'
------解决方案--------------------
'n')
            return 0;
         else;
      }