C语言很简单的问题14

来源:百度知道 编辑:UC知道 时间:2024/06/29 19:42:34
#include<stdio.h>
void fun(ints[])
{ static int j=0;
do
s[j]+=s[j+1];
while(++j<2);
}
main()
{ intk,a[10]={1.2.3.4.5};
for(k=1;k<3;k++)fun(a);
for(k=0;k<5;k++)printf("%d",a[k]);
}

这里上面的{}和下面的{}
是上面算一次往下算
还是上面的循环完再把值放下面循环
然后步骤讲一下

for(k=1;k<3;k++)fun(a); 这句循环完,再执行
for(k=0;k<5;k++)printf("%d",a[k]); 这句

程序的入口点是main函数,上面的fun函数只有在被调用的时候才执行
for(k=1;k<3;k++) fun(a) ;就像这样被调用,才执行。

步骤:
1。for(k=1;k<3;k++)fun(a); 这句连续两此调用fun函数,函数fun中j是静态变量.
2。第一次j=0,s[j]+=s[j+1]这句就是把s[0]和s[1]的和赋值给s[0]。
然后又有这句while(++j<2); while语句后面有分号所以直到j =2的时候条件不满足才退出循环。
3。第二此j=2就是把s[2]和s[3]的和赋值给s[2];当然这里的s[x]就相当于住函数里的a[x]。
4。for(k=0;k<5;k++)printf("%d",a[k]); 这句就是输出a数组的前五个数喽。
这样就得出了结果

程序的入口点是main函数,当main函数执行完,函数结束
当遇到调用别的函数时,就会转到被调用的函数,
执行完后返回main函数执行下一行

void fun(ints[]) {}是一个自定义函数,只有在主函数main调用它时,才执行。

从函数main开始,执行到for时循环,每次循环都会调用自定义函数fun,每次执行fun,内部do while也要循环。

另外注意static使J的值一直存在于内存中,也就是 j=0; 只在第一次执行。以后的值调用内存中有的值。

输出为:35745

程序从main开始执行
执行到for(k=1;k<3;k++)fun(a); 这里的时候 执行三次fun(a)
程序运行结果 35745