急!!关于c语言函数问题

来源:百度知道 编辑:UC知道 时间:2024/06/26 04:44:15
#include<stdio.h>
int i,j=2;
void p(void)
{ for(i=0;i<4;i++)
{ printf("%d",++j);
if ((i+1)%2==0) printf("\n");}
}
void main()
{ for(i=0;i<3;i++) p();
printf("%d\n",i);
}答案是34,56,5
希望有详细的讲解

#include<stdio.h> //头文件

int i,j=2; //全局变量i,j

void p(void)
{
for(i=0;i<4;i++) //4次循环
{
printf("%d",++j); //j=j+1 并打印
if ((i+1)%2==0) //如果i是单数就换行(即打两个数换一行)
printf("\n");
}
}

void main()
{
for(i=0;i<3;i++) //循环1次(即就运行了一遍p函数)
p();
printf("%d\n",i); //打印最终的i(就是5)
}

问题的关键是i,j是全局变量,它们的值在重新调用函数的时候不会重新初始化,就是说它们在上次操作的值会保存下来。

步骤,各变量值
先运行main函数,i=0 j=2
第一遍p函数,i=0 j=2
p函数中第一遍循环,i=0 j=2
j=j+1并打印j,i=0 j=3
p函数中第二遍循环,i=1 j=3
j=j+1并打印j,i=1 j=4
i为单数,打印换行符(就是换一行)
p函数中第三遍循环,i=2 j=4
j=j+1并打印j,i=2 j=5
p函数中第四遍循环,i=3 j=5
j=j+1并打印j,i=3 j=6
i为单数,打印换行符(就是换一行)
i=4 循环结束 回到main函数
main函数中的循环继续i++,此时i已经是5。
循环结束 i=5 j=6
打印i

结果:
34
56
5

hippo1989
呵呵,写的真详细啊!

我是初学者,但格式我还是看得懂的,你写得好乱啊。