实验七指针基础一实验目的1)理解指针的基本概念,掌握各种指针变量的定义方法;2)理解并掌握指针作为函数参数传递数据的概念及方法;二程序示例[源程序2-1]输入两个整数,并使其从大到小输出,用指针变量实现数据的比较。1#include<stdio.h>2void main()3{4int *p1,*p2,*p, a, b;5scanf("%d %d", &a, &b);6p1=&a;p2=&b;7if(a<b)8(p=p1;p1=p2;p2=p;9printf("a=%d, b=%d)n", a, b);10printf("max=%d,min=%d)n",*p1,*p2);111[程序输入]58<回车>[程序输出]a=5, b=8max=8, min=5[程序分析]主函数中第6行语句p1=&a;p2=&b;的执行建立指向关系,使得指针变量p1、p2分别指向变量a和b;第7行if语句当a的数值小于b的数值时,会执行第8行语句,即改变指针变量p1、p2的指向关系,使得指针变量p1、p2分别指向变量b和a,并没有改变变量a和b的内容:第9行语句printf以直接访问的形式输出a和b对应存储空间的内容,第10行printf通过变量以间接访问的形式输出a和b对应存储空间的内容
实验七 指针基础 一 实验目的 1) 理解指针的基本概念,掌握各种指针变量的定义方法; 2) 理解并掌握指针作为函数参数传递数据的概念及方法; 二 程序示例 [源程序 2-1] 输入两个整数,并使其从大到小输出,用指针变量实现数据的比较。 1 #include <stdio.h> 2 void main() 3 { 4 int *p1, *p2, *p, a, b; 5 scanf("%d %d", &a, &b); 6 p1=&a;p2=&b; 7 if(a<b) 8 { p=p1; p1=p2; p2=p; } 9 printf("a=%d, b=%d\n", a, b); 10 printf("max=%d, min=%d\n", *p1, *p2); 11 } [程序输入] 5 8<回车> [程序输出] a=5, b=8 max=8, min=5 [程序分析] 主函数中第 6 行语句 p1=&a; p2=&b;的执行建立指向关系,使得指针变量 p1、 p2 分别指向变量 a 和 b;第 7 行 if 语句当 a 的数值小于 b 的数值时,会执行第 8 行语句,即改变指针变量 p1、p2 的指向关系,使得指针变量 p1、p2 分别指向 变量 b 和 a,并没有改变变量 a 和 b 的内容;第 9 行语句 printf 以直接访问的形 式输出 a 和 b 对应存储空间的内容,第 10 行 printf 通过变量以间接访问的形式 输出 a 和 b 对应存储空间的内容
[源程序2-2]将字符串a复制到字符串b。1#include<stdio.h>2void main()3{4char a[]-"How do you do?", b[20];5int i;6for(i=0;*(a+i)!="lo';i++)7*(b+i)=*(a+i);8*(b+i)="0′;9for(i=0;b[i]!="0';i++)10printf("%c ", b[i])11}[程序输出]How do you do?[程序分析]主函数中第4行定义字符数组a、b,并且通过对字符数组a初始化将字符串“Howdoyoudo?”存入a数组,第6行for循环实现将a数组的每个元素赋给b数组的对应元素,其中循环的中止条件采用指针方式,第9行for循环输出b数组每个元素的值,循环中止条件采用数组索引方式。注意:两个for循环均用字符串结束标志"0控制循环结束,而不是用数组长度控制循环。三、程序编写1.编写程序求十个数中的最大和最小数,要求:1)编写一个函数求最大和最小数,函数的入口参数为指针型变量;2)不得使用全局变量;3)在主函数内输入十个数据并输出结果。编写程序在一个包含N个字符的字符串中,将其从第M个字符开始的全部2.字符复制成另一个字符串,要求:1)编写一个函数(该函数参数是字符指针),实现字符串的复制功能:2)在主函数中输入长度为N的字符串及M值,并输出复制结果
[源程序 2-2] 将字符串 a 复制到字符串 b。 1 #include <stdio.h> 2 void main() 3 { 4 char a[]="How do you do?", b[20]; 5 int i; 6 for(i=0;*(a+i)!='\0';i++) 7 *(b+i)=*(a+i); 8 *(b+i)='\0'; 9 for(i=0;b[i]!='\0';i++) 10 printf("%c ", b[i]); 11 } [程序输出] How do you do? [程序分析] 主函数中第 4 行定义字符数组 a、b,并且通过对字符数组 a 初始化将字符 串“How do you do?”存入 a 数组,第 6 行 for 循环实现将 a 数组的每个元素赋 给 b 数组的对应元素,其中循环的中止条件采用指针方式,第 9 行 for 循环输出 b 数组每个元素的值,循环中止条件采用数组索引方式。注意:两个 for 循环均 用字符串结束标志'\0'控制循环结束,而不是用数组长度控制循环。 三、程序编写 1. 编写程序求十个数中的最大和最小数,要求: 1) 编写一个函数求最大和最小数,函数的入口参数为指针型变量; 2) 不得使用全局变量; 3) 在主函数内输入十个数据并输出结果。 2. 编写程序在一个包含 N 个字符的字符串中,将其从第 M 个字符开始的全部 字符复制成另一个字符串,要求: 1) 编写一个函数(该函数参数是字符指针),实现字符串的复制功能; 2) 在主函数中输入长度为 N 的字符串及 M 值,并输出复制结果