文档详情

函数与编译预处理.ppt

发布:2025-03-30约1.18万字共10页下载文档
文本预览下载声明

求m和n的公约数算法01if(m%n)==002n是公约数;03else04求n和m%n的公约数;05辗转相除法求最大公约数intgcd(intm,intn)

{if(m%n)==0

returnn;else

returngcd(n,m%n);}010302求最大公约数的递归算法求最大公约数的主函数voidmain(){intm,n,t;

intgcd(intm,intn);

scanf(“%d%d”,m,n);

if(mn)

{t=m;m=n;n=t;}

t=gcd(m,n);/*调用函数gcd(m,n);*/print(“\ngcd=%d”,t);}4.4变量作用域与存储方式先看一个例子,错在那里?:voidf1(){intt=2;a*=t;b/=t;}main(){inta,b;printf(“Entera,b:”);scanf(“%d,%d”,a,b);f1();/*调用函数f1()*/printf(“a=%d,b=%d”,a,b);}编译程序会提示出错:Undefinedsymbol‘a’和Undefinedsymbol‘b’。为什么?一.变量的作用域即变量的有效范围1.变量按作用域分为全局变量和局部变量2.比较:全局变量(外部变量)局部变量(内部变量)定义位置:函数体外函数体内作用域:从定义处到本源从定义处到本函数结束文件结束举例:所有函数体外定义的变量(1)所有在函数体内定义(2)形式参数注意与局部变量同名的处理局部变量屏蔽全局变量不同函数中同名局部变量互不干扰?C语言程序是由函数组成的,有且只能有一个main函数。1?变量定义可以出现在函数内,亦可出现在函数外或者是函数的参数中。2按照变量定义语句出现的位置,可以分为:3局部变量:在函数或复合语句内定义;4只在该函数或复合语句中才能使用。5全局变量:在函数外定义;6从它被定义的位置起,在之后的所有函数中有效。7形式参数:定义为函数的参数;8只在该函数中才能使用。93、局部变量在函数内部说明的变量或者在复合语句中定义的变量称为局部变量。其作用范围是其所在的函数或复合语句。又称全程变量或外部变量,在函数外部说明。其作用范围从它被定义的位置起,在之后的程序段中都是起作用的。全局变量壹贰如果在全局变量定义之前的函数想引用该外部变量,则应该在该函数中用关键字extern作“外部变量说明”。inta,b;voidswap(){intt;t=a;a=b;b=t;printf(“swap:a=%d,b=%d\n”,a,b);}main(){printf(“Entera,b:”);scanf(“%d,%d”,a,b);swap();printf(“main:a=%d,b=%d”,a,b);}Entera,b:5,3↙swap:a=3,b=5main:a=3,b=5运行结果inta,b;voidswap(){intt;t=a;a=b;b=t;printf(“swap:a=%d,b=%d\n”,a,b);}main(){printf(“Entera,b:”);scanf(“%d,%d”,a,b);swap();printf(“main:a=%d,b=%d”,a,b);}运行结果inta,b;程序在编译时,屏幕将提示有错误:Undefinesymbol‘a’Undefinesymbol‘b’inta,b;voidswap(){intt;t=a

显示全部
相似文档