c语言从入门到精通第七章指针.ppt_第1页
c语言从入门到精通第七章指针.ppt_第2页
c语言从入门到精通第七章指针.ppt_第3页
c语言从入门到精通第七章指针.ppt_第4页
c语言从入门到精通第七章指针.ppt_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、指针,韩都衣舍女装您值得拥有:,使用register定义局部变量,本例实现的是求1-100之间的素数,并以每6个数一行进行输出显示。#include int prime (int n)/*定义函数prime*/ register int m;/*定义寄存器变量m*/ for (m=2;mn-1;m+) if (n%m=0) /*判断n是否能被m整除*/ return 0; return 1; void main() register int i; int n=1;/*定义寄存器变量i*/ for (i=3;i=100;i+=2) if (prime(i)/*调用函数*/ printf(%4d,

2、i); if (n%6=0)/*判断i是否能被6整除*/ printf(n); n+; ,使用register定义局部变量,本实例中,定义的循环变量要对1-100之间的数据进行多次访问,因此可以设置为寄存器类型的变量,变量在程序运行中使用非常频繁,则存取该变量要消耗的时间就会很多,为了提高执行效率,C语言允许将局部变量的值存放在CPU中的寄存器中,寄存器变量占用CPU的高速寄存器,不占用内存单元。 说明:如果某个变量被频繁访问,如执行循环或者函数调用等,可以将其定义为寄存器变量。,小数分离,利用数学函数实现以下功能:从键盘中输入一个小数,将其分解成整数部分和小数部分并将其显示在屏幕上。#inc

3、lude #include main() float number; double f, i; printf(input the number:); scanf(%f, ,小数分离,本程序中用到了modf()函数,具体使用说明如下: double modf(double num,double *i) 该函数的作用是把num分解成整数部分和小数部分,该函数的返回值为小数部分,把分解出的整数部分存放到由i所指的变量中。该函数的原型在math.h中。,求任意数n次幂,利用数学函数实现以下功能:分别从键盘中输入底数及次幂,求出从该次幂开始的连续五个结果,要求每次次幂数加1。(范例位置:光盘TMfl61

4、2) #include #include main() float x, n; int i; printf(Please input the base:n); scanf(%f, ,求任意数n次幂,本程序中用到了pow()函数,具体使用说明如下: double pow(double base,double exp) pow()函数的作用是计算以参数base为底的exp次幂baseexp。pow()函数的原型在math.h中。 注意:如果参数base为零,或者exp小于零,则会出现定义域错误。如果参数base上溢,则会出现数出界错误。,某日是该年的第几天,本实例要求编写一个计算天数的程序,即从键

5、盘中输入年、月、日,在屏幕中输出此日期是该年的第几天。(范例位置:光盘TMfl613) #include int leap(int a)/*自定义函数leap用来指定年份是否为闰年*/ if (a % 4 = 0 /*数组b存放闰年每月的天数*/,某日是该年的第几天,if (leap(year) = 1)/*判断是否为闰年*/ for (i = 0; i m - 1; i+) sum += bi;/*是闰年,累加数组b前m-1个月份天数*/ else for (i = 0; i m - 1; i+) sum += ai;/*不是闰年,累加数组a钱m-1个月份天数*/ sum += d;/*将前

6、面累加的结果加上日期,求出总天数*/ return sum;/*将计算的天数返回*/ void main() int year, month, day, n;/*定义变量为基本整型*/ printf(请输入年月日n); scanf(%d%d%d, ,某日是该年的第几天,要实现本实例要求的功能主要有以下两个技术要点: 1判断输入的年份是否是闰年,这里我们自定义函数leap来进行判断。该函数的核心内容就是闰年的判断条件即能被4整除但不能被100整除,或能被400整除。 2如何求此日期是该年的第几天。这里将12个月每月的天数存到数组中,因为闰年2月份的天数有别于平年,故采用两个数组a和b分别存储。当

7、输入年份是平年,月份为m的时就累加存储着平年每月天数的数组的前m-1个元素,将累加的结果加上输入的日便求出了最终结果,闰年的算法类似。,递归解决年龄问题,有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第1个人大两岁。最后问第1个人,他说是10岁。编写程序当输入第几个人时求出其对应年龄。#include int age(int n)/*自定义函数age*/ int f; if(n=1) f=10;/*当n等于1时,f等于10*/ else f=age(n-1)+2;/*递归调用age函数*/ ret

8、urn f;/*将f值返回*/ main() int i,j;/*定义变量i,j为基本整型*/ printf(你想知道第几个人的你年龄,请输入:n); scanf(%d,/*将求出的年龄输出*/ ,递归解决年龄问题,要实现本实例要求的功能主要有以下两个技术要点: 本实例中age函数被递归调用,这里详细分析下递归调用的过程,递归的过程分为两个阶段: 第一阶段是“回推”,由题可知,要想求第5个人的年龄必须知道第4个人的年龄,要想知道第4个人的年龄必须知道第3个人的年龄直到第1个人的年龄,这时age(1)的年龄已知,就不用再推。“回推”的过程可以用图,递归解决年龄问题,本实例中age函数被递归调用,

9、这里详细分析下递归调用的过程,递归的过程分为两个阶段: 第一阶段是“回推”,由题可知,要想求第5个人的年龄必须知道第4个人的年龄,要想知道第4个人的年龄必须知道第3个人的年龄直到第1个人的年龄,这时age(1)的年龄已知,就不用再推。“回推”的过程可以用图,递归解决年龄问题,第二阶段是“递推”,从第2个人推出第3个人的年龄一直推到第5个人的年龄为止。这里要注意必须要有一个结束递归过程的条件,本实例中就是当n=1时f=10也就是age(1)=10,否则递归过程会无限制进行下去。总之递归就是在调用一个函数的过程中又出现直接或间接第调用该函数本身。,因此“回推”可以看成是个“下楼梯”的过程而“递推”

10、则是个“上楼梯”的过程,将这两个结合起来就是递归。,一数三平方,有这样一个六位数,它本身是一个整数的平方,其高三位和低三位也分别是一个整数的平方,例如225625=4752,225=152,625=252,求满足上述条件的所有六位数。(范例位置:光盘TMfl615) #include #include main() long i, n, n1, n2, n3, n4, count = 0; /*定义变量为长整形*/ printf(The result is:n); for (i = 100000; i = 999999; i+)/*遍历所有的六位数*/ n = (long)sqrt(i); /

11、*对i值开平方得到一个长整型数值n*/ if (i = n *n)/*判断n的平方是否等于i*/ n1 = i / 1000; /*求出高三位数*/ n2 = i % 1000; /*求出低三位数*/ n3 = (long)sqrt(n1); /*对n1值开平方得到一个长整型数值n3*/ n4 = (long)sqrt(n2); /*对n2值开平方得到一个长整型数值n4*/,一数三平方,if (n1 = n3 *n3 函数的作用是返回参数num的平方根,这里我们可以发现sqrt的返回值是一个double型,程序中我们将sqrt的返回值强制转换成长整形,这样会使开平方后得到的小数(小数点后不为0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论