当前位置: 代码迷 >> C语言 >> [求助]一个简单求n题
  详细解决方案

[求助]一个简单求n题

热度:268   发布时间:2007-06-04 22:32:34.0
1: n=0 while 成立 执行n++ n=1
2: n=1 while 成立 执行n++ n=2
3: n=2 while 成立 执行n++ n=3
4: n=3 while 不成立 执行n++ n=4

----------------解决方案--------------------------------------------------------
以下是引用小子也大叔在2007-6-4 22:31:13的发言:

我现在没去编译他  我想答案应该是D  因为if n=0;我觉得这句有语病 如果是个条件判断的话  应该是
if n==0;

我现在编译了   真的有语病 报错如下图:
就是 if n=0;有错

当我把它改成 if(n==0);时  如:
#include<stdio.h>
#include<stdlib.h>

int main(void)
{
int n;

if (n==0);
while(n++<=2);
printf("%d",n);

system("pause");
return 0;
}
 就可以编译了  结果是 4 这个结果我就想不通了  

还有时候的程序可以写成这样:

#include<stdio.h>
#include<stdlib.h>

int main(void)
{
int n;

if (n==0)
;
while(n++<=2)
;
printf("%d",n);

system("pause");
return 0;
}

我的理解是:当n=0时 什么都不执行  当我就想不通 n的初值是多少呢????结果怎么会是4呢???


----------------解决方案--------------------------------------------------------
N 的 初值为0

if(n==0)

就是
if(1)

因为n==0 就是1 呀
----------------解决方案--------------------------------------------------------
看不懂

----------------解决方案--------------------------------------------------------
以下是引用爱C在2007-6-4 22:14:16的发言:

if n=0;

while(n++<=2); printf("%d",n); A) 2 B) 3C) 4 D)有语法错

这个题目的答案是C为什么啊。
这题有语法错误啊 !!
if后面是什么??

不错  这个一定是有语病的 if 后面应该是个条件判断 可以改为 n==0
要是是n==0的话  就是他们那样说的:第一次 其实我都不知道n的初值是多少 要是是1的话 就是开始为1 但执行一次后 自加为2

第2次  n=2 满足条件 然后自加为3 这个时候再去判断 (n++<=2)时 就不满足条件了 就不再执行后面的空语句 但n++还是要执行的 所以 n自加为4   

所以 答案是4 

但哪个可以告诉我n的初值是多少?????
----------------解决方案--------------------------------------------------------

以下是引用夜火在2007-6-4 22:44:28的发言:
N 的 初值为0

if(n==0)

就是
if(1)

因为n==0 就是1 呀

或许你可以把它写成这样:

#include<stdio.h>
#include<stdlib.h>

int main(void)
{
int n;

if (n==0);
printf("%d\n",n);

while(n++<=2);
printf("%d",n);

system("pause");
return 0;
}

这样就可以判断它的初值了(或许不是吧  我也不知道算不算是)
运行结果是:

要是这样的话 看来n的初值就应该是2 (当然只要它的初值满足n<=2 结果还是4)

但要是改成:
#include<stdio.h>
#include<stdlib.h>

int main(void)
{
int n=0;

//printf("input n:");
//scanf("%d",&n);

if (n==0);
printf("%d\n",n);

while(n++<=2);
printf("%d",n);

system("pause");
return 0;
}

的话 又能怎么想呢???
他的初值又成了0(为0 应该是情理之中) 但为什么上面的就是2呢???


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

答案是4
main()
{ int n=0;

while(n++<=2); printf("%d",n);


}


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

答案:4
n++,n先参与表达式的计算后n再自增加1。


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

我也觉得应该选D:


----------------解决方案--------------------------------------------------------
或许LZ这个程序根本就是个错误  总的来说我们应该避免这种情况出现
----------------解决方案--------------------------------------------------------
  相关解决方案