1.
#include <stdio.h> int m=4; int func(int x,int y) { int m=1; return(x*y-m); } main() {int a=2,b=3; printf("%d\n",m); printf("%d\n",func(a,b)/m); }
运行结果为:
4
1
整型变量m在函数外定义,因此m为全局变量,其作用于范围为其定义位置开始,一直到整个程序结束。因此func与main函数都可以访问m
程序首先执行main函数
执行printf("%d\n",m); 即输出m中的值4,并换行。
执行printf("%d\n",func(a,b)/m);即输出表达式func(a,b)/m的值,为了计算该表达式,
需要调用函数func。此时main将a,b中的2和3值作为实参传递给func的x和y
程序开始转向执行func函数,此时func中的x为2,y为3
执行int m=1; 此句定义了一个局部变量m并赋值为1 。m的作用域为其所在的复合
语句,即func的函数体,因此在func的函数体重,有限访问局部变量m。
执行return(x*y-m); 即return(2*3-1) ;返回的是整数5.
func函数返回至main函数中的被调用处
main函数中func(a,b)的值为5,func(a,b)/m=5/4=1,注意,在main函数中访问的m为全局变量m,此时main函数无法访问func中的m,因为不在func中m的作用域。
2.
#include <stdio.h> int fun(int a, int b) { if(a>b) return(a); else return(b); } main() { int x=15, y=8, r; r= fun(x,y); printf("r=%d\n", r); }
运行结果为:r=15
程序首先执行main函数
执行r= fun(x,y);即将func(x,y)的值赋给r,为了计算该表达式,需要调用函数func。此时main将x,y中的15和8值作为实参传递给func的a和b
程序开始转向执行func函数,此时func中的a为15,b为8
执行if语句;判断if后面的表达式,a>b成立,因此执行相应的操作return(a);即返回
a的值 。
func函数返回至main函数中的被调用处
main函数中func(x,y)的值为15,即将15赋给r。
执行printf("r=%d\n", r); 即输出r=15
3.
#include <stdio.h> int fac(int n) { int f=1,i; for(i=1;i<=n;i++) f=f * i; return(f); } main() { int j,s; scanf(“%d”,&j); s=fac(j); printf("%d!=%d\n",j,s); }
1.( A )是构成C语言程序的基本单位。
A、函数 B、过程 C、子程序 D、子例程
2.C语言程序从 C 开始执行。
A) 程序中第一条可执行语句 B) 程序中第一个函数
C) 程序中的main函数 D) 包含文件中的第一个函数
3、以下说法中正确的是( C )。
A、C语言程序总是从第一个定义的函数开始执行
B、在C语言程序中,要调用的函数必须在main( )函数中定义
C、C语言程序总是从main( )函数开始执行
D、C语言程序中的main( )函数必须放在程序的开始部分
4.下列关于C语言的说法错误的是( B ) 。
A) C程序的工作过程是编辑、编译、连接、运行
B) C语言不区分大小写。
C) C程序的三种基本结构是顺序、选择、循环
D) C程序从main函数开始执行
5.下列正确的标识符是(C )。
A.-a1 B.a[i] C.a2_i D.int t