C语言宏定义与指针.ppt_第1页
C语言宏定义与指针.ppt_第2页
C语言宏定义与指针.ppt_第3页
C语言宏定义与指针.ppt_第4页
C语言宏定义与指针.ppt_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

第11讲 宏定义与指针 上周平台编程训练情况 练习完成情况:练习完成情况:7575个同学基本完成练习?个同学基本完成练习?7 7个同学存在折个同学存在折 扣或者错误。扣或者错误。 平台发帖区:平台发帖区:2727个问题贴,其中我转帖个问题贴,其中我转帖qqqq问题的聊天问题的聊天 记录记录1111个帖子,希望大家去浏览帖子。个帖子,希望大家去浏览帖子。 完成标准完成标准 1 1、提交过、提交过 2 2、错了订正、错了订正 3 3、反复练习,达到会做、反复练习,达到会做 4 4、举一反三、举一反三 温故知新温故知新 期末考试还有期末考试还有1 1个月,期中考试覆盖内容是重点和基础。个月,期中考试覆盖内容是重点和基础。 1111月月1212日课堂练习疑似替做日课堂练习疑似替做 一人身兼三人?一人身兼三人? 课堂练习问题 上周平台训练问题 12生肖问题:字符串输出 爱因斯坦问题:穷举法 数的交换问题 1 1、最大、最大/ /最小值最小值 2 2、两两交换、两两交换 12生肖问题:字符串输出 书144页:字符串输出/输入有两种方法 逐字符:需要用到循环,不建议用 整个字符串一次性输出/输入:简单,建议用简单,建议用 书136页:二维数组 float a34; 则a0、a1、a2则视作一维数组名 char char a1210=“A“,“B“;a1210=“A“,“B“; printf(“%s“,printf(“%s“,a0a0); ); printf(“%c“,printf(“%c“,a00a00); ); 区别区别 爱因斯坦问题 穷举法:基本掌握 思路: for(i=1; ;i+)/穷举所有可能,没有设置循环结 束条件,因为不知i最大能到多少 if(列出题目中的条件) 输出答案并break/找到答案就输出,并退出循 环 书书119119页,表达式页,表达式2 2可省略可省略 通过通过breakbreak退出循环退出循环 if if需要控制两条语句,因需要控制两条语句,因 此要此要 构成复合语句构成复合语句 数的交换问题 10.7 的问题贴很多: 没思路? 找不到错误何在? 程序阅读1结果? #include #include int main() int main() int a=3,b=4;int a=3,b=4; a=a+b;a=a+b; b=a-b;b=a-b; a=a-b;a=a-b; printf(“%d,%dn“,a,b);printf(“%d,%dn“,a,b); 不用中间变不用中间变 量的两两交量的两两交 换方法换方法 程序阅读2-结果? #include int main() int a=3,b=4,t; t=a; a=b; b=t; printf(“%d,%dn“,a,b); 运用中间变量运用中间变量 的两两交换方的两两交换方 法,法,经典经典 程序阅读3:max与min作用? #include void main()void main() intint a100,i,min,max,n; a100,i,min,max,n; scanf(“%d“, ); for(ifor(i=0;imax)maxmax)max= =aiai; ; printf(“minprintf(“min=%=%d,maxd,max=%=%dn“,min,maxdn“,min,max); ); maxmax与与minmin记录记录 最大值与最小值最大值与最小值 平台的平台的6.36.3题题 平台平台6.76.7题,题,maxmax与与 minmin记录最大值与最记录最大值与最 小值的位置(小值的位置(下标下标) 平台平台11.511.5题,题,maxmax与与 minmin记录最大值与最记录最大值与最 小值的位置(小值的位置(指针指针) 10.7 程序挑错1 #include void main() int a10,max,min,i,t,n; for(i=0;imax) max=i; if(ai void main() int a10,i,max,min,k,j; for(k=0;kamax) amax=aj; a0=amin; a9=amax; for(i=0;i#include void main()void main() int *ptr,x; int *ptr,x; x=7; x=7; ptr= ptr= printf(“%d,%dn“, printf(“%d,%dn“,x x, ,*ptr*ptr); ); 直接用变量名直接用变量名 通过指针通过指针 例10 . 2 输入和两个整数,按先大后小的顺序输出 和。 #include void main() int *1,*2,*,; scanf(,); 1; if() ; printf(=,=,); printf(max=,min=,*1,*2); 运行情况如下: , , , 当输入,时,由于, 将和交换。交换前的情况见图( ),交换后见图()。 10.3 指针变量作为函数参数 例10 . 3 对输入的两个整数按大小顺序输出 #include void main() void swap(int *,int *); int ,; int *pointer_,*pointer_; scanf(,); pointer_ ; pointer_2 ; if( swap( pointer_ , pointer_2 ); printf(,); void swap(int *,int *) int temp; temp*1; *; *temp; 10.通过指针引用数组元素 引用一个数组元素,可以用: () 下标法,如形式; () 指针法,如*()或*()。 其中是数组名,是指向数组元素的指针变量,其初 值。 例10.5 输出数组中的全部元素。 假设有一个数组,整型,有个元素。要输出 各元素的值有三种方法: (1)下标法。 #include void main() int ; int ; for(;) scanf(,); printf(); for(;) printf(,); (2) 通过数组名计算数组元素地址,找出元素的值 。 #include void main() int ; int ; for(; ) scanf(,); printf(); for(;) printf(,*(); (3) 用指针变量指向数组元素。 #include void main() int ; int *,; for(;) scanf(,); printf(); for(;();) printf( ,*); 例10. 通过指针变量输出数组的个元素。 #include void main() int *,; ; for(; ) scanf(,); printf(); for(;, ) printf(,*); 程序运行情况: 1 2 3 4 5 6 7 8 9 0 22153 234 0 0 30036 25202 11631 8259 8237 28483 显然输出的数值并不是数组中各元素的值 #include void main() int *,; ; for(;) scanf(,); printg(); p=a; for(;, ) printf(,*); 宏定义 为什么要用宏 如何定义 #define PI 3.1415926 带参数的宏 #define PI 3.1415926 #define s(r) PI*r*r 带参数的宏和函数的区别 #define PI 3.1415926 #define s(r) PI*r*r float ss (flaot r) return(PI*r*r); main() int a; scanf(“%d”, printf(”%f”,s(a); printf(” %f”,ss(a); printf(”%f”,s(a+5); printf(” %f”,ss(a+5); 文件包含 什么是文件包含 头文件 文件包含的两种形式 #include #include” ” 两者的区别P.196 本周编程训练 11.1 11.1 寻找做好事的人寻找做好事的人 11.2 11.2 寻找最大数寻找最大数- -指针与变量指针与变量 11.3 11.3 圆的面积计算圆的面积计算- -宏定义宏定义 11.4 11.4 升序排序升序排序- -指针作函数形参指针作函数形参 11.5 11.5 寻找最大数寻找最大数- -指针与数组指针与数组 11.6 11.6 单词个数统计单词个数统计- -数组下标法数组下标法 11.7 11.7 完全数完全数 11.8 11.8 回文数回文数 11.9 11.9 逆序输出逆序输出- -字符串字符串 11.10 11.10 字符串分割字符串分割 1、输入整数x,将其逆序转化的数字字符以字符串 的形式存入字符数组y,然后整体输出一个字符串。 数字如何转换为数字字符?例如2-2,通过2+0 或者2+48都可 逆序取x的各位数存入数组思路: 设置结束标志位0 逆序输出平台题11.9 从键盘上输入一个满足格式(形如“ A1,234 ” )要求的字符串, 编程将其从分割符(“,”)位置分割成两个部分(如 A1 和 234 两个字符串),并在屏幕上分两行顺序显示分割后的结果( 输入输出格式示例如下)。 输入: A 1, 234 输出 : A1 234 思路?思路? 单词分割平台题11.10 统计单词个数平台题11.6 1、从键盘输入一行字符,统计其中有多少个单词。即书150页例7.8 编程思路描述: 运用标志word,word是前一个字符是否 空格的标识,其值为0,表示前一个字符是 空格,其值为1,表示前一

温馨提示

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

最新文档

评论

0/150

提交评论