当前位置: 代码迷 >> C语言 >> 两段简单程序?
  详细解决方案

两段简单程序?

热度:57   发布时间:2007-10-18 22:47:44.0
两段简单程序?

看看两段程序
一:

#include<stdio.h>
void main(){
int i,j,k;
for(i=1;i<=5;i++){
if(i<=3){
for(j=3-i;j>0;j--)
printf(" ");
for(k=2*i-1;k>0;k--)
printf("*");
printf("\n");
}
else{
for(j=i-3;j>0;j--)
printf(" ");
for(k=-2*i+11;k>0;k--)
printf("*");
printf("\n");
}
}
getch();
}

二:
#include<stdio.h>
void main(){
for(int i=1;i<=5;i++){
if(i<=3){
for(int j=3-i;j>0;j--)
printf(" ");
for(int k=2*i-1;k>0;k--)
printf("*");
printf("\n");
}
else{
for(int j=i-3;j>0;j--)
printf(" ");
for(int k=-2*i+11;k>0;k--)
printf("*");
printf("\n");
}
}
getch();
}

前者可以正常编译,后者却不能!

[此贴子已经被作者于2007-10-18 22:49:15编辑过]

搜索更多相关的解决方案: void  include  

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

请先允许我提一个问题:你是不是先学JAVA后学C?

在JAVA 中可以这样 for(int i=1;i<=5;i++) 定义一个变量;
但是在C中必须把变量定义在执行语句之前。


----------------解决方案--------------------------------------------------------
在c里面所有的变量都要在函数一开始定义,

c++不需要,只要在使用前定义就行,象上面的第二个程序,放在vc6里面只要再多加个头文件就可以执行
----------------解决方案--------------------------------------------------------
如果是用gcc的话,那么这样写是可以编译的
用gcc -std=c99

c99里才支持这种写法

----------------解决方案--------------------------------------------------------
zhufeifei
好久没看到你了.

按照我们学的理论书来说,不能在for()里定义.
但很多编译器支持,是因为C++里支持.
C里面好象不可以,拿传统的TC来编译就知道.

不过不用去弄这些没有多大意义的东西.
只要知道这种写法不是真正的错误就行了.
我比较喜欢第二个.定义局部变量.
----------------解决方案--------------------------------------------------------

两个程序的变量 作用范围和生命周期都一样的


----------------解决方案--------------------------------------------------------
以下是引用永夜的极光在2007-10-19 11:22:13的发言:

两个程序的变量 作用范围和生命周期都一样的

错误.
写个简单的

#include<stdio.h>
int main()
{
int i=0;
{
int i=1;
printf("%d\n",i);
}
printf("%d\n",i);
return 0;
}


----------------解决方案--------------------------------------------------------
哦。忘记看上面的程序的j和k了,我其实想说的意思是下面这两种情况是一样的
程序代码:

int main()
{
int i;
for(i=0;i<5;i++);
return 0;
}

程序代码:

int main()
{
for(int i=0;i<5;i++);
return 0;
}

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

还上错.后面的i 只局限在for循环体了,而前面的i 是整个主函数.
你两个程序都没有再用到i ,当然不会用问题了.
程序代码:

int main()
{
int i;
for(i=0;i<5;i++);
printf(\"%d\",i);//通过
return 0;
}


程序代码:

int main()
{
for(int i=0;i<5;i++);
printf(\"%d\",i);//失败
return 0;
}

----------------解决方案--------------------------------------------------------
看来我们的编译器不一样,我在vc6里面调试是一样的

[此贴子已经被作者于2007-10-19 12:13:26编辑过]


----------------解决方案--------------------------------------------------------
  相关解决方案