初学C语言碰到的小程序,该如何处理

初学C语言碰到的小程序
(1)   x,y都是int变量,执行for语句后,y的值为______

        for(y=1,x=1;y <=50;y++)
        {if(x> =10)       break;
          if(X%2==1)   {x+=5;   continue;}x=-3;}

(2)   求程序输出结果
          #include <stdio.h>
          main()
          {int   a[][2]={10,20,30,40,50,60},(*p)[2];
            p=a;   prinf( "%d\n ",*(*(p+2)+1));}

(3)求输出结果

            #include <stdio.h>
            main()
            {int   a,b,s;
              scanf( "%d%d ",&a&b);s=a;if(a <b)s=b;s*=s;   printf( "%d\n ",s*s);}
(4)以下程序为了统计从键盘输入的非数字字符的个数,用换行符结束循环,补全程序          
              int   n=0,c;
              c=getchar();
              while(c!= '\n ')
              {   if(__________)     n++;
                  c=getchar();
              }
希望哪位大大帮把过程写的全点,或者把程序帮小弟讲讲,非常感谢

------解决方案--------------------
4.
if( c < '0 ' && '9 ' <c)
------解决方案--------------------
||
------解决方案--------------------
4.
if( c < '0 ' && '9 ' <c)


------解决方案--------------------
...............

晕哦。一行里N句,这样不好 哦
------解决方案--------------------
||
------解决方案--------------------
1.51 //X敲错了 怀疑x=-3 --> x-=3
2.60
3. max(a,b)^4
4.c> '9 '||c < '0 '
------解决方案--------------------
第一题我也觉得应该是x-=3,不然x=-3这个题也太白了点.
第二题p=a,*(*(p+2)+1)可以看为*(*(a+2)+1),要知道二维数组可以看成为是一个数组的每项值为一维的一维数组题目的a[3][2]其实看成一维数组a[3],而a[0],a[1],a[2]的值又分别为一个一维数组.编译器在处理数组时是当成指针处理的a[1]处理时如*(a+1),所以
*(*(a+2)+1)=> *(a[2]+1)=> a[2][1]
第三题 s*=s 相当于 s=s*s;也就是s平方然后平方后的值再赋给s.printf( "%d ",s*s)输出的为s*s的值,前面有个s*=s也就是说最后输出的应为s的4次方