C语言宏定义与指针.ppt

上传人:小飞机 文档编号:6503846 上传时间:2023-11-07 格式:PPT 页数:39 大小:475KB
返回 下载 相关 举报
C语言宏定义与指针.ppt_第1页
第1页 / 共39页
C语言宏定义与指针.ppt_第2页
第2页 / 共39页
C语言宏定义与指针.ppt_第3页
第3页 / 共39页
C语言宏定义与指针.ppt_第4页
第4页 / 共39页
C语言宏定义与指针.ppt_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《C语言宏定义与指针.ppt》由会员分享,可在线阅读,更多相关《C语言宏定义与指针.ppt(39页珍藏版)》请在三一办公上搜索。

1、第11讲 宏定义与指针,上周平台编程训练情况,练习完成情况:75个同学基本完成练习?7个同学存在折扣或者错误。,平台发帖区:27个问题贴,其中我转帖qq问题的聊天记录11个帖子,希望大家去浏览帖子。,完成标准1、提交过2、错了订正3、反复练习,达到会做4、举一反三,温故知新 期末考试还有1个月,期中考试覆盖内容是重点和基础。,11月12日课堂练习疑似替做一人身兼三人?,课堂练习问题,上周平台训练问题,12生肖问题:字符串输出爱因斯坦问题:穷举法数的交换问题,1、最大/最小值2、两两交换,12生肖问题:字符串输出,书144页:字符串输出/输入有两种方法逐字符:需要用到循环,不建议用整个字符串一次

2、性输出/输入:简单,建议用,书136页:二维数组float a34;则a0、a1、a2则视作一维数组名,爱因斯坦问题,穷举法:基本掌握思路:for(i=1;i+)/穷举所有可能,没有设置循环结束条件,因为不知i最大能到多少if(列出题目中的条件)输出答案并break/找到答案就输出,并退出循环,书119页,表达式2可省略,通过break退出循环,if需要控制两条语句,因此要 构成复合语句,数的交换问题,10.7 的问题贴很多:没思路?找不到错误何在?,程序阅读1结果?,#include int main()int a=3,b=4;a=a+b;b=a-b;a=a-b;printf(%d,%dn,

3、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作用?,#includevoid main()int a100,i,min,max,n;scanf(%d,max与min记录最大值与最小值,平台的6.3题,平台6.7题,max与min记录最大值与最小值的位置(下标),平台11.5题,max与min记录最大值与最小值的位置(指针),10.7 程序挑错1,#includevoid main()int

4、a10,max,min,i,t,n;for(i=0;imax)max=i;if(aimin)min=i;t=a9;a9=amax;amax=t;n=a0;a0=amin;amin=n;for(i=0;i=9;i=i+1)printf(%d,ai);printf(n);,max与min记录最大值与最小值的位置(下标),10.7 程序挑错2,#include void main()int a10,i,max,min,k,j;for(k=0;kamax)amax=aj;a0=amin;a9=amax;for(i=0;i10;i+)printf(%d,ai);printf(n);,max与min值不确

5、定,amax、amin表示?,两两交换?,本讲新内容,指针与变量指针作函数参数指针与数组宏定义,14,地址概念与如何表示?,内存区的每一个字节有一个编号,这就是“地址”。C规定:变量的地址:可以用取地址运算符&来获取数组的地址:可以用数组名表示函数的地址:可以用函数名表示,15,int i,j,k;printf(%d,i);scanf(%d,指针是一种特殊变量,它存放地址。,地址2000是变量的指针,变量与指针,10.1 定义一个指针变量,定义指针变量的一般形式为:数据类型*指针变量名;,例:int*ptr;float*array;char*s1,*s2;,在定义指针变量时要注意两点:,18,

6、指针的初始化,指针在定义后必须初始化才能使用;否则,结果不确定。指针初始化的一般格式:数据类型*指针变量名 初始地址值;或数据类型*指针变量名;指针变量名=数据对象地址;其中数据对象地址可以是变量、数组、函数、结构等的地址。如:int x=7;int*ptr=/初始化为空指针,19,指针与变量的使用,#include void main()int*ptr,x;x=7;ptr=,直接用变量名,通过指针,例10.2 输入和两个整数,按先大后小的顺序输出 和。,#include void main()int*1,*2,*,;scanf(,);1;if();printf(=,=,);printf(ma

7、x=,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.通过指针引用数组元素,引用一个数组元素,

8、可以用:()下标法,如形式;()指针法,如*()或*()。其中是数组名,是指向数组元素的指针变量,其初值。,例10.5 输出数组中的全部元素。,假设有一个数组,整型,有个元素。要输出各元素的值有三种方法:,(1)下标法。#include void main()int;int;for(;)scanf(,);printf();for(;)printf(,);,(2)通过数组名计算数组元素地址,找出元素的值。#include voidmain()int;int;for(;)scanf(,);printf();for(;)printf(,*();,(3)用指针变量指向数组元素。#include voi

9、d 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 022153 234 0 0 30036 25202 11631 8259 8237 28483显然输出的数值并不是数组中各元素的值,#include void main()int*,;for(;)scanf(,);printg();p=a;fo

10、r(;,)printf(,*);,宏定义,为什么要用宏如何定义#define PI 3.1415926带参数的宏#define PI 3.1415926#define s(r)PI*r*r,带参数的宏和函数的区别,#define PI 3.1415926#define s(r)PI*r*rfloat ss(flaot r)return(PI*r*r);main()int a;scanf(“%d”,文件包含,什么是文件包含头文件文件包含的两种形式#include#include”两者的区别P.196,本周编程训练,11.1 寻找做好事的人 11.2 寻找最大数-指针与变量 11.3 圆的面积计算

11、-宏定义 11.4 升序排序-指针作函数形参 11.5 寻找最大数-指针与数组 11.6 单词个数统计-数组下标法 11.7 完全数 11.8 回文数 11.9 逆序输出-字符串 11.10 字符串分割,1、输入整数x,将其逆序转化的数字字符以字符串的形式存入字符数组y,然后整体输出一个字符串。数字如何转换为数字字符?例如2-2,通过2+0或者2+48都可逆序取x的各位数存入数组思路:,设置结束标志位0,逆序输出平台题11.9,从键盘上输入一个满足格式(形如“A1,234”)要求的字符串,编程将其从分割符(“,”)位置分割成两个部分(如 A1 和 234 两个字符串),并在屏幕上分两行顺序显示

12、分割后的结果(输入输出格式示例如下)。输入:A 1,234 输出:A1 234,思路?,单词分割平台题11.10,统计单词个数平台题11.6,1、从键盘输入一行字符,统计其中有多少个单词。即书150页例7.8,编程思路描述:运用标志word,word是前一个字符是否空格的标识,其值为0,表示前一个字符是空格,其值为1,表示前一个字符不是空格.具体步骤如下:1)如果当前字符是空格,则表示未出现新单词,单词个数num不变,word赋值02)如果当前字符不是空格,则看前一个字符是否空格:如果word为0,则表示前一个字符是空格,则新单词出现,num加1,word赋值1;如果word为1,则表示前一个字符不是空格,则未出现新单词,num值不变。,关于蓝桥杯后续课程,大一下:计算机软件技术基础陈秀新大二下:面向对象语言与编程杨伟杰,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号