06单元5 构造类型程序设计_指针

上传人:油条 文档编号:10920079 上传时间:2017-10-11 格式:DOC 页数:21 大小:252.50KB
返回 下载 相关 举报
06单元5 构造类型程序设计_指针_第1页
第1页 / 共21页
06单元5 构造类型程序设计_指针_第2页
第2页 / 共21页
06单元5 构造类型程序设计_指针_第3页
第3页 / 共21页
06单元5 构造类型程序设计_指针_第4页
第4页 / 共21页
06单元5 构造类型程序设计_指针_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《06单元5 构造类型程序设计_指针》由会员分享,可在线阅读,更多相关《06单元5 构造类型程序设计_指针(21页珍藏版)》请在金锄头文库上搜索。

1、C 语言程序设计课程-源代码 软件技术专业国家教学资源库第 1 页 共 21 页单元 5 构造类型程序设计指针源代码SC 01 02 01 05 2011源代码编号SC010201052012源代码来源单元 5 构造类型程序设计例 5-63问题描述通过指针变量访问指向的变量。4程序代码#include void exp(int a,int b)int *p1=&a, *p2=&b; /指针 p1 指向变量 a,指针 p2 指向变量 bprintf(变量 a 的地址:%p,变量 a 的指针:%p,变量 a 的值:%dn,&a, p1,a);printf(变量 b 的地址:%p,变量 b 的指针%

2、p,变量 b 的值是:%dn,&b, p2,b);printf(%d,%dn,*p1, *p2);int main() int a,b;a=100;b=10;exp(a,b);return 0;C 语言程序设计课程-源代码 软件技术专业国家教学资源库第 2 页 共 21 页SC 01 02 01 05 2021源代码编号SC010201052022源代码来源单元 5 构造类型程序设计例 5-73问题描述输入两个整数,按大小顺序输出。要求用指针作函数参数。4程序代码#include void swap(int *p1,int *p2)int temp;temp=*p1;*p1=*p2;*p2=t

3、emp;int main() int a,b;printf(请输入两个整数(用逗号分隔):);scanf(%d,%d,&a,&b);if(a#define N 10void insert(int *p,int n,int x) /在有序的数组中插入一个数据,插入后的数组仍然有序int i,j;for(i=0;i=i;j-) /*将下标为 i 到 n-1 的所有元素后移一位*/pj+1=pj;pi=x; /*将数据 x 插入到数组中*/void output(int a,int n) /输出数组的全部元素int i;for(i=0;i#define N 50int len(char *s);/函

4、数声明int main() char strN;printf(输入字符串:n);gets(str);printf(字符串的长度为:%dn,len(str);return 0;int len(char *s) int n=0;while(*(s+n)!=0) n+;return n;C 语言程序设计课程-源代码 软件技术专业国家教学资源库第 6 页 共 21 页SC 01 02 01 05 2051源代码编号SC010201052052源代码来源单元 5 构造类型程序设计例 5-103问题描述分别统计字符串中大写字母、小写字母、空格及数字字符的个数。4程序代码#include #define S

5、IZE 50#define N 4void count(char *s,int a)while(*s)/循环判断每个字符,直到遇到 0结束if (Achar *day_name(int n);/函数声明int main()int i; printf(请输入一个整数(1-7):n);scanf(%d,&i);printf(%2d%sn,i,day_name(i);return 0;char *day_name(int n)static char *name=Illegal day,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday;r

6、eturn(n7) ? name0 : namen);C 语言程序设计课程-源代码 软件技术专业国家教学资源库第 9 页 共 21 页SC 01 02 01 05 2071源代码编号SC010201052072源代码来源单元 5 构造类型程序设计课堂实践 5-63问题描述求 2 个整数的和。要求:编写函数 void input(int *pa,int *pb)实现 2 个整数的输入,编写函数 int add(int *pa,int *pb)实现求和。4程序代码#includevoid input(int *pa,int *pb)printf(输入两个整数:n);scanf(%d%d,pa,pb

7、);int add(int *pa,int *pb)return *pa+*pb;void main()int a,b;input(&a,&b);printf(它们的和为:%dn, add(&a,&b);C 语言程序设计课程-源代码 软件技术专业国家教学资源库第 10 页 共 21 页SC 01 02 01 05 2081源代码编号SC010201052082源代码来源单元 5 构造类型程序设计课堂实践 5-73问题描述输入 10 个整数,将其中最小的数与第一个数进行对换,把最大的数与最后一个数对换。写 3 个函数:输入 10 个数; 进行处理; 输出 10 个数。4程序代码#include

8、#define N 10void exchange(int *p,int n)/*函数功能:将数组中的最小数与第一个数对换,最大数与最后一个数对换*/int i,t;int max,min,max_i,min_i;min=p0;min_i=0; /*假定第一个数为最小数,记下它的下标*/for(i=1;imax) max=*(p+i);max_i=i;if(max_i!=n-1) /*如果最大数不是最后一个数,交换*/t=pn-1;pn-1=pmax_i;pmax_i=t; void input(int *a,int n) /函数功能:输入数组中的全部元素int i;printf(Enter

9、%d numbers:,n);for(i=0; ivoid cpystr(char *pss,char *pds)/字符串复制while(*pds=*pss)!=0)pds+;pss+; int main()char a50,b50;printf(请输入源串:);gets(a); cpystr(a,b);printf(目的串为:);puts(b);return 0;C 语言程序设计课程-源代码 软件技术专业国家教学资源库第 13 页 共 21 页SC 01 02 01 05 2101源代码编号SC010201052102源代码来源单元 5 构造类型程序设计课堂实践 5-93问题描述编写函数:求

10、字符串中最大字符的地址并返回该地址,指向字符串的指针作为函数的参数。4程序代码#includechar *MaxChar(char *p) /求字符串最大的字符地址,返回值为指针类型int max_i=0,i;for(i=0;*(p+i);i+)if(*(p+i)*(p+max_i)max_i=i;return (p+max_i);int main()char ch50;printf(请输入一个字符串:n);gets(ch);printf(最大字符地址为:%p,最大字符为:%cn,MaxChar(ch), *MaxChar(ch);return 0; C 语言程序设计课程-源代码 软件技术专业

11、国家教学资源库第 14 页 共 21 页SC 01 02 01 05 2111源代码编号SC010201052112源代码来源单元 5 构造类型程序设计-指针同步训练 程序设计题 13问题描述有一个数组,内放 10 个整数,要求编写一函数找出最小的数和它的下标,然后把它和数组中最前面的元素调换。4程序代码#include#define N 10void processor(int *p)/查找最小数及其下标,并和第一个数交换int *p1,i,j,data;p1=p;j=0;for(i=1;i*(p+i)p1=p+i;j=i;printf(最小数的下标为:%dn,j);if(j!=0)data

12、=*p;/如果第一个数不是最小的,将最小数和第一个数交换*p=*p1;*p1=data;C 语言程序设计课程-源代码 软件技术专业国家教学资源库第 15 页 共 21 页void output(int *p)/输出数组全部元素int i;for(i=0;ivoid fun(int *p,int n,int m)/* n 人围成一个圆圈,编号 1n,从第 1 人到 m 循环报数,凡是报到 m 者离开圆圈,求 n 个人离开圆圈的次序*/int i,j,k;i=1;j=0;k=0;while(k#includeint fun(char *str) /判断一个字符串是否为回文int flag=1,i,

13、j;for(i=0,j=strlen(str)-1;i void del(char *ps,char x) /删除字符串中的指定字符int i,j;for(i=j=0;*(ps+i)!=0;i+)if (*(ps+i)!=x) *(ps+j)=*(ps+i); j+; *(ps+j)=0; int main() char s20,x;printf(请输入一个字符串:n);gets(s);printf(删除哪个字符?n);scanf(%c,&x);del(s,x);printf(删除后的字符串:n);puts(s);return 0; C 语言程序设计课程-源代码 软件技术专业国家教学资源库第

14、20 页 共 21 页SC 01 02 01 05 2151源代码编号SC010201052152源代码来源单元 5 构造类型程序设计-指针同步训练 程序设计题 53问题描述有 n 个整数,使前面各数顺序向后移动 m 个位置,最后 m 个数变成最前面m 个数。写一函数实现上述功能,在主函数中输入 n 个整数和输出调整后的 n个数。输入样例:5/*n 的值*/2/*m 的值*/1 2 3 4 5输出样例:4 5 1 2 3。4程序代码#include #include void cyc(int *p,int n,int m);void cyc(int *p,int n,int m)/将 n 个整数,循环后移 m 个位置int i,k,temp;for(k=0;km;k+) /*循环移位 m 次*/temp=*(p+n-1); /*暂存最后一个元素,空出那个位置*/for(i=0;in-1;i+)*(p+n-i-1)=*(p+n-i-2);/*依次做:空出的位置保存前一个元素*/ *p=temp; /*最前面的位置保存暂存的元素-循环移位一次*/

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号