c语言程序设计教学辅导(六(编辑修改稿)内容摘要:
用域: 专指语句标号,供 goto 语句用。 Goto 语句只能转移到本函数定义中的一个带有语句标号的位置。 块作用域 变量 : 又 称为 局部变量。 一种情况: 在一条复合语句内定义, 作用域从定义点开始到复合语句结束。 另一种情况:函数定义中的形参变量,作用域为整个函数体。 函数定义体内 的自动变量和静态变量 函数定义体内的变量都属于块作用域 变量,即局部变量,但根据变量性质又分为 2种:一种叫自动变量,另一种叫静态变量。 如: void ff() { int z=0。 //自动变量,不赋初值,值不确定 static int k。 //静态变量,第 1次自动赋初值 0 k+=5。 //每次调用此函数在 k的原值上加 5 z+=5。 //每次都在 0上加 5 } int i。 for(i=1。 i=5。 i++) ff()。 分析变量作用域的程序举例 程序 1: include define NN 8 //文件域符号常量 int Num[NN]={12,10,8,3,5,0,7,2}。 //全局域数组 int Sum() { //求全局数组 Num[NN]中的所有元素之和 int i,s=0。 //i,s 为局部变量,作用域为此函数体 for(i=0。 iNN。 i++) s+=Num[i]。 6 return s。 //返回所求元素之和 } int Max() { //求全局数组 Num[NN]中的所有元素的最大值 int i,m=Num[0]。 //i,m 为局部变量,作用域为此函数体 for(i=1。 iNN。 i++) if(Num[i]m) m=Num[i]。 return m。 //返回所有元素的最大值 } void main() { int c。 //局部变量 ,从此处到主函数结束 c=Sum()+2*Max()。 //47+2*12=71 printf(c=%d\n,c)。 //输出结果: c=71 } 程序 2: include int Mul(int a[], int n)。 //函数原型声明语句 void main() { int b[5]={1,2,3,4,5}。 //只作用于主函数的数组 int r1,r2。 //只作用于主函数的局部变量 r1=Mul(b,5)。 //所有元素乘积,值 120 r2=Mul(b+2,3)。 //b[2]*b[3]*b[4],值 60 printf(r1=%d, r2=%d\n,r1,r2)。 //输出: r1=120, r2=60 } int Mul(int a[], int n) { //a 和 n的 作用域 为该函数 int i,p=1。 //局部变量,作用域到复合语句结束 for(i=0。 in。 i++) p*=a[i]。 求 a 数组中 n个元素之积 return p。 //返回 p 的值 } 程序 3: include int x=10。 //全局变量 void main() { int y=20。 //局部于整个主函数的变量 printf(x=%d, y=%d\n,x,y)。 //输出: x=10, y=20 { int x=30。 //局部于此复合语句内的变量,优先于外部同名变量 y=y+x。 //y 为外部的, x 为内部的 printf(x=%d, y=%d\n,x,y)。 //输出: x=30, y=50 } //内部的 x 的作用域就此结束 printf(x=%d, y=%d\n,x,y)。 //输出: x=10, y=50 } //y 作用域就此结束 7 //全局变量 x的作用域到整个程序运行结束 程序 4: include int Cdiv(int m, int n) //求出 m 和 n的最大公约数 { //m和 n只作用于此函数 int r。 //局部变量 if(mn) {r=m。 m=n。 n=r。 } //大者放 m,小者放 n while(r=m%n) {m=n。 n=r。 } //循环结束时 n 的值为最大公约数 return n。 //返回 n值 } void main() { int m,n。 //此处的 m和 n只作用于主函数 printf(输入两个正整数求其最大公约数 : )。 scanf(%d %d,amp。 m,amp。 n)。 printf(%d 和 %d 的最大公约数为 : %d\n,m,n,Cdiv(m,n))。 //进行 Cdiv(m,n)调用时, m 和 n 的值分别对应传送, //在 Cdiv(m,n)的函数体中对 m和 n 的修改,与此处的 m和 n无关 } //允许不同作用域的变量同名 运行结果: 输入两个正整数求其最大公约数 : 25 40 25 和 40 的最大公约数为 : 5 程序 5:。c语言程序设计教学辅导(六(编辑修改稿)
相关推荐
=5。 i++) sum=sum+(i+1)*(i+1) printf(“sumis:%D/N’,sum)。 \ } ( 1)将程序中的 for 语句改为 ”for(i=1。 i+5。 i++ )。 ” 则程序结果是什么。 ( 2)将程序中的 for 语句改为“ for(i=1。 i=5。 i+=2)” 则程序结果是什么。 ( 3) 将程序中的 for 语句改为“ for(i=5。 i=1。
4)。 } printf(1!+2!+3!+4!+5!=%d\n,s)。 } 用起泡法对十个数由小到大排序。 main( ) { int a[11], i, j, t。 printf(“ input 10 numbers: \n” )。 for(i=1。 i11。 i++) scanf(“ %d” ,amp。 a[i])。 printf(“ \n” )。 for (j=1。 j=9。 j++)
中小企业转型升级建设项目按照项目研发和设备投入总额的一定比例给予补助。 申报主体。 ( 1)符合 上述条件的项目实施企业。 ( 2)基础设施类项目申报主体为项目的投资法人;发展规划类项目申报主体为规划编制的政府实施部门;标准厂房租赁类项目申报主体为租赁标准厂房的企业。 ( 3)符合上述条件的项目实施企业。 A4:重点技术改造项目 支持重点。 省级重点技改项目。
物流企业。 这样,镇园区就分为三个小区,但产业发展特别是主导产业和优势产业不明显。 随着长沙大 河西 建设的全面推进和 城市化进程 步伐的加快,地处 “桥头堡 ”位置的丁字镇再次高起点定位、高标准谋划势在必行,产业布局调整、 土地规划 修编刻不容缓。 运行模式不畅,协调难度较大。 运行模式 丁字镇发展建设一直是 “自主建设,自我发展 ”的运行模式,在过去的建设中,通过丁字镇 干部 群众的不懈努力
} else printf(找不到该学号 \n)。 } } void Stat() /*成绩 统计 模块 */ { float AveYuWen, AveShuXue, AveYingYu。 StatAve(amp。 AveYuWen, amp。 AveShuXue, amp。 AveYingYu)。 /*统计三门课的班级平均分 */ printf(\n====成绩统计 ====\n)。
则以下语句正确的是。 A) a=5; B) a={2,39。 a39。 ,}; C) printf(%d\n,a); D) n=a; 【 】已知: struct sk { int a; int age; }date,*p; 如果要使指针 p 指向 data 中的成员 a,正确的赋值语句是 ____。 A) p = (struct sk *)amp。 ; B) p = (struct sk *);