C语言求解!!!请详细讲讲过程,谢谢!!!
#include<stdio.h>voidFUN(intS[]){staticintJ=0;do{S[J]+=S[J+1];}while(J<2);}main(){int...
#include<stdio.h>
void FUN(int S[])
{
static int J=0;
do
{
S[J]+=S[J+1];
}
while(J<2);
}
main()
{
int K,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]);
}
上面打错了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#include<stdio.h>
void FUN(int S[])
{
static int J=0;
do
{
S[J]+=S[J+1];
}
while(++J<2);
}
main()
{
int K,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]);
} 展开
void FUN(int S[])
{
static int J=0;
do
{
S[J]+=S[J+1];
}
while(J<2);
}
main()
{
int K,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]);
}
上面打错了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#include<stdio.h>
void FUN(int S[])
{
static int J=0;
do
{
S[J]+=S[J+1];
}
while(++J<2);
}
main()
{
int K,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]);
} 展开
4个回答
展开全部
我刚运行下发现没出结果,仔细看了下.
do
{
S[J]+=S[J+1];
}
while(J<2)
J的值一直为0,也就是说while的循环条件J<2恒成立,死循环!
好吧,又看见改为++J了
#include<stdio.h>
void FUN(int S[])
{
static int J=0;//static 说明当再次调用函数FUN时,J的值为上次调用后的值
do
{
S[J]+=S[J+1];
}
while(++J<2);
}
main()
{
int K,A[10]={1,2,3,4,5};//定义整型变量K,整形数组A,对应A[0]~A[4],A[5]~A[9]值都为0
for(K=1;K<3;K++) FUN(A);
/*
看值变化:
K 1 2
J 0 1 2(注意此时的J值为上一次++J<2条件结束后的值)
S[J] 3(1+2) 5(2+3) 7(3+4)
S[0] S[1] S[2]
A[0] A[1] A[2]
*/
for(K=0;K<5;K++) printf("%d",A[K]);
//输出A[0]~A[4]也就是S[0]~S[4] 两者占有共同的连续存储单元
//也就是 3 5 7 4 5(我给你加的空格)
// A[0] A[1] A[2] A[3] A[4]
//输出结果应该为为 35745
}
do
{
S[J]+=S[J+1];
}
while(J<2)
J的值一直为0,也就是说while的循环条件J<2恒成立,死循环!
好吧,又看见改为++J了
#include<stdio.h>
void FUN(int S[])
{
static int J=0;//static 说明当再次调用函数FUN时,J的值为上次调用后的值
do
{
S[J]+=S[J+1];
}
while(++J<2);
}
main()
{
int K,A[10]={1,2,3,4,5};//定义整型变量K,整形数组A,对应A[0]~A[4],A[5]~A[9]值都为0
for(K=1;K<3;K++) FUN(A);
/*
看值变化:
K 1 2
J 0 1 2(注意此时的J值为上一次++J<2条件结束后的值)
S[J] 3(1+2) 5(2+3) 7(3+4)
S[0] S[1] S[2]
A[0] A[1] A[2]
*/
for(K=0;K<5;K++) printf("%d",A[K]);
//输出A[0]~A[4]也就是S[0]~S[4] 两者占有共同的连续存储单元
//也就是 3 5 7 4 5(我给你加的空格)
// A[0] A[1] A[2] A[3] A[4]
//输出结果应该为为 35745
}
追问
上面打错了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#include
void FUN(int S[])
{
static int J=0;
do
{
S[J]+=S[J+1];
}
while(++J<2);
}
main()
{
int K,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]);
}
追答
哪里不懂,详细说明下,我会回答的~
展开全部
#include<stdio.h>
void FUN(int S[])
{
static int J=0;//定义静态的j
do
{
S[J]+=S[J+1];
}
while(++J<2); 这个循环实现的的是是s[0]=s[0]+s[1],s[1]=s[1]+s[2];
}
main()
{
int K,A[10]={1,2,3,4,5};
for(K=1;K<3;K++)这个是控制子函数循环的次数,假如没有这条语句输出的就是 3 5 3 4 5
FUN(A);
for(K=0;K<5;K++) printf(" %d",A[K]); 输出 3 5 7 4 5
}
void FUN(int S[])
{
static int J=0;//定义静态的j
do
{
S[J]+=S[J+1];
}
while(++J<2); 这个循环实现的的是是s[0]=s[0]+s[1],s[1]=s[1]+s[2];
}
main()
{
int K,A[10]={1,2,3,4,5};
for(K=1;K<3;K++)这个是控制子函数循环的次数,假如没有这条语句输出的就是 3 5 3 4 5
FUN(A);
for(K=0;K<5;K++) printf(" %d",A[K]); 输出 3 5 7 4 5
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
只要记住static变量只能被初始化一次,就行了。这个应该是此题的关键点。
只有第一次J=0。点到为止。
只有第一次J=0。点到为止。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我看的好像在do-while与距离缺少循环控制语句。
追问
#include
void FUN(int S[])
{
static int J=0;
do
{
S[J]+=S[J+1];
}
while(++J<2);
}
main()
{
int K,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]);
}
刚才打错了
追答
static int J=0;说明J是内部的静态变量,在函数退出之前函数的值一直存在,也就是每运行一次J的值都在变,他只被赋值一次,此后每运算一次J的值都在变,不会再被初始化成0.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询