c语言的两个程序,帮忙看一下

来源:百度知道 编辑:UC知道 时间:2024/05/17 04:46:14
#include <stdio.h>
void main()
{int i,s=0;
for(i=0;i<5;i++)
switch(i)
{case 0:s+=3;
case 1:s++; break;
case 2:s*=2; break;
case 3:s=1;
case 4:s++;
}
printf("s=%d",s);
}
这个程序的执行结果是多少,能不能详细的说明一下~!

26. #include <stdio.h>
int f(int b[][4])
{int s=0,i,j;
for(j=0;j<4;j++)
{i=j;
if(i>2)i=3-j;
s+=b[i][j];
}
return s;
}
void main()
{int s[4][4]={{1,2,3,4},{0,2,4,6},{3,6,9,12},{3,2,1,0}};
printf("sum=%d\n",f(s));
}

这个程序的执行结果是多少,能不能也详细说一下主要的点

1答案为3
讲的要点是新手常犯的错误,CASE后面没加break;
switch(i)判断i的值,当找到后就会开始执行代码。没有遇到break;时会将下面的代码也执行掉。
再注意CASE 2后面有BREAK,case 3,4后面都没,3里面将s赋值为1,前面的操作结果就不管了,然后执行4:s++,此时值为2.然后i等于4,再次s++,结果 s=3

2答案为16
2的关键是
if(i>2)
{
i=3-j;
}
s+=b[i][j];
}
第一次 s = s+b[0][0] =1
第二次 s = s+b[1][1] =3
第三次 s = s+b[2][2] =12
第四次 s = s+b[0][3] =16

第一个程序,因为case 0后面没有break,
所以,当i为0时,s=s+3=3,
由于不能跳出switch 函数会继续执行s++=4
这时遇到break
跳出函数
然后执行第二次循环i=1
s++=5
第三次 i=2
s*=2=10
第四次I=3
s=1
s++=2
第五次i=4
s++=3
此时i=5,跳出while循环 累!!!!

第二个sum=16