一道简单的c语言习题,求详解,在线等……
读下列程序:#include<stdio.h>intx;voidsub(int*s,intx){staticintt=0;x+=s[t];t++;}voidmain(){...
读下列程序:
#include<stdio.h>
int x;
void sub(int *s,int x)
{ static int t=0;
x+=s[t];
t++;}
void main( )
{int a[]={3,8,4,2},i;
int x=0;
for (i=0;i<4;i++)
{sub(a,x);
printf(“%3d”,x);
}
}
(1)程序的执行结果是( )。A.3 8 4 2 B.3 11 15 17 C.0 0 0 0 D.2 4 8 3
(2)若把程序第二行的语句“int x;”删除,运行结果是()。
A.3 8 4 2 B.3 11 15 17 C.0 0 0 0 D.2 4 8 3
我自己认为答案是 B A,可是编译器运行的结果都是0 0 0 0 ,答案也是那样的(C C),补充一哈,这是一道四川省二级考试题。 展开
#include<stdio.h>
int x;
void sub(int *s,int x)
{ static int t=0;
x+=s[t];
t++;}
void main( )
{int a[]={3,8,4,2},i;
int x=0;
for (i=0;i<4;i++)
{sub(a,x);
printf(“%3d”,x);
}
}
(1)程序的执行结果是( )。A.3 8 4 2 B.3 11 15 17 C.0 0 0 0 D.2 4 8 3
(2)若把程序第二行的语句“int x;”删除,运行结果是()。
A.3 8 4 2 B.3 11 15 17 C.0 0 0 0 D.2 4 8 3
我自己认为答案是 B A,可是编译器运行的结果都是0 0 0 0 ,答案也是那样的(C C),补充一哈,这是一道四川省二级考试题。 展开
展开全部
#include<stdio.h> int x; void sub(int *s,int x)//x是形式参数 { static int t=0;x+=s[t];t++;}void main( ) {int a[]={3,8,4,2},i; int x=0; for (i=0;i<4;i++) {sub(a,x);//x是实际参数 printf(“%3d”,x); } }
sub只改变形式参数的大小 不能改变实际参数
实参向形参的数据传递是“值传递”,单向传递
sub只改变形式参数的大小 不能改变实际参数
实参向形参的数据传递是“值传递”,单向传递
追问
可是我要怎么才能使调用函数起作用,如果这样的话,岂不是函数调用都没用了。
比如下面的函数也是在进行“值传递”,可是这两个调用有什么区别呢?
#include
int add(int x,int y){return x+y;}int main(){int a=3,b=7;cout<<add(a,b);return 0;}
追答
#include
int x;void sub(int *s,int *x){ static int t=0; (*x)+=s[t]; t++;}void main(){ int a[]={3,8,4,2}; int i; int x=0; for(i=0;i<4;i++) { sub(a,&x); printf("%3d",x); } }
这样就可以改变x的值了
展开全部
1.B
2.A
第二句的int x;是外部变量在调用函数sub时x的值改变了由于x是外部变量主函数里面的x值也改变了,第二次调用sub函数时x的值改变了
删掉第二句每次调用函数是时x的值都为0由于sub函数里面的t定义为statics型每次调用后t的值并不释放下次调用时t的值不是0而是上次调用的结果
2.A
第二句的int x;是外部变量在调用函数sub时x的值改变了由于x是外部变量主函数里面的x值也改变了,第二次调用sub函数时x的值改变了
删掉第二句每次调用函数是时x的值都为0由于sub函数里面的t定义为statics型每次调用后t的值并不释放下次调用时t的值不是0而是上次调用的结果
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
B,C
追问
不是啊,答案是 C C,编译器计算结果也是这样的。
追答
程序第二行的语句“int x;”说明x为全局变量,但在后面没有用到,后面定义的x均为局部变量,所以为0;这个题考的应该是变量的作用范围吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一个选B static int是静态的 第一次正常输出 第二次就是把3加上即3+8=11,同理三次为11+4=15;
第二个选C 局部变量的问题 简单不需要说
第二个选C 局部变量的问题 简单不需要说
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询