目录: 标题| 题干| 答案| 搜索| 相关
问题

有下列程序void func1(int i);void func2(int


有下列程序void func1(int i);void func2(int i);char st[ ]="hello,friend! ";void func1(int i){ printf("%c",st[i]); if(i<3){i+=2;func2(i);}}void func2(int i){ printf("%c",st[i]); if(i<3){i+=2;func1(i);}}main(){ int i=0;func1(i); printf("\n");}执行后的输出结果是A.hello B.helC.hlo D.hlm

  • Ahello
  • Bhel
  • Chlo
  • Dhlm
参考答案
参考解析:

根据变量作用域与其定义语句在程序中出现位置之间的关系,可把变量分为局部变量和全局变量两种。其中,在函数外部定义的变量叫做全局变量,又称为外部变量;在函数体内定义的变量是局部变量,又称为内部变量。全局变量的作用域是整个程序,而局部变量的作用域是定义它的函数或者程序段。在本题中,程序首先声明两个无返回值函数func1和func2,然后定义一个全局数组st。做这类除主函数外,有其他函数的试题时,首先需要分析其他函数来得知函数的作用,然后再看主函数。func1函数带有一个整型变量的形参,在函数体中,首先输出以形参作为下标的数组元素值,然后执行if条件判断语句,其条件为形参变量i<3。如果结果为真,则将变量i加2后保存,然后调用func2函数;如果条件结果为假,则结束该函数。从程序中不难看出,func2函数与func1函数基本类似,只是最后它对函数func1进行调用,与前者不同,两个函数是互相调用的。在主函数中定义一个变量i并赋值为0,然后调用函数func1,根据我们对函数func1的分析可知,输出st[0]即字符‘h’,而此时if语句的结果为真,执行i加2并调用func2函数操作。此时变量i的值为2,因此,输出st[2]即字符‘l’,此时函数func2中的if条件语句结果为真,同样执行i加2,并调用func1函数操作,然后通过func1函数输出st[4]即字符‘o’,此时由于变量i的值等于4,是大于3的,函数结束。程序运行到出口,最后输出换行。因此,本程序最终的输出结果是hlo。

分类:其他
相关推荐

1、若有以下程序 #include void f(int n) main()

若有以下程序#include void f(int n)main(){void f(int n);f(5);}void f(int n);{printf("%dn",n);}则以下叙述不正确的是()A若只在主函数中对函数f进...

2、有以下程序void func(int *a,int b[]){ b[0]=*

有以下程序void func(int *a,int b[]){ b[0]=*a+6; }main(){ int a,b[5]={0}; a=0; b[0]=3; func(&a,b); rintf("%d\n",b[0]);}程序的运行结果是A.6 B.7C.8 D.9A6 B7C8 D9

3、有如下程序段#include "stdio.h"void fun(int *

有如下程序段#include "stdio.h"void fun(int *a,int *b,int *c,int *d,int *e){ int i,j,k,m; for(i=0;i< *a;i++) for(j=0;j< *b;j++)  for(k=0;k<*c;k++) ...

4、有以下程序#include "stdio.h"void fun(int *a

有以下程序#include "stdio.h"void fun(int *a,int *b){ int c=20,d=20; *a=c/3; b=d/5;}main(){ int a=3,b=5; fun(&a,&b); printf("%d,%d\n",a,b);}程序的运行结果是A.6,5 B.5,6C.20,25 D.3,5A6,5 B5,6C20,25 D3,5

5、有如下程序段void fun(int *a, int *b){ int *k

有如下程序段void fun(int *a, int *b){ int *k; k=a; a=b; b=k;}main(){ int a=3, b=6, *x=&a, *y=&b; fun(x,y); printf("%d %d", a, b);} 程序运行后输出的结果是A.6 3 B.3 6 C.编译出错 D.0 0A6 3 B3 6 C编译出错 D0 0

6、有以下程序void fun(int a,int b,int c){ a=45

有以下程序void fun(int a,int b,int c){ a=456,b=567,c=678;}main(){ int x=10,y=20,z=30; fun(x,y,z); printf("%d,%d,%d\n",x,y,z);}输出结果是A.10,20,30 ...