实验10指针做函数参数编程训练_第1页
实验10指针做函数参数编程训练_第2页
实验10指针做函数参数编程训练_第3页
实验10指针做函数参数编程训练_第4页
实验10指针做函数参数编程训练_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

1、实验10指针做函数参数编程训练实验目的:1.掌握指针的定义及使用;2.体会使用指针的作用;3.掌握指针做函数参数的作用;4.掌握指针做函数参数的基本步骤;实验题目:1.输入某年某月某日,计算并输出它是这一年的第几天。/*函数功能:对给定的某年某月某日,计算它是这一年第几天函数参数:整型变量year,month,day,分别代表年,月,日函数返回值:这一年的第几天*/int DayofYear(int year,int month,int day;2.输入某一年的第几天,计算并输出它是这一年的第几月第几日。/*函数功能:对给定的某一年的第几天,计算它是这一年的第几月第几日函数入口参数:整型变量y

2、ear,存储年整型变量yearDay,存储这一年的第几天函数出口参数:整型指针pMonth,指向存储这一年第几月的整型变量整型指针pDay,指向存储第几日的整型变量函数返回值:无*/void MonthDay(int year,int yearDay,int *pMonth,int *pDay;3.输出如下菜单,用switch语句实现根据用户输入的选择执行相应的操作。1.year/month/day->yearDay2.yearDay->year/month/dayPlease enter your choice:参考程序及注释:#include <stdio.h>#i

3、nclude <stdlib.h>int DayofYear(int year, int month, int day;void MonthDay(int year, int yearDay, int *pMonth, int *pDay;void Menu(void;int dayTab213 = 0,31,28,31,30,31,30,31,31,30,31,30,31, 0,31,29,31,30,31,30,31,31,30,31,30,31;int main(int year, month, day, yearDay;char c;Menu(; /* 调用Menu函数显示

4、一个固定式菜单 */c = getchar(; /* 输入选择 */switch (c /* 判断选择的是何种操作 */case '1':printf("Please enter year, month, day:"scanf("%d,%d,%d", &year, &month, &day;yearDay = DayofYear(year, month, day;printf("yearDay = %dn", yearDay;break;case '2':printf("

5、;Please enter year, yearDay:"scanf("%d,%d", &year, &yearDay;MonthDay(year, yearDay, &month, &day;printf("month = %d, day = %dn", month, day;break;case '3':exit(0; /* 退出程序的运行 */default:printf("Input error!"return 0;/* 函数功能:对给定的某年某月某日,计算并返回它是这

6、一年的第几天 */int DayofYear(int year, int month, int dayint i, leap;/* 若year为闰年,即leap值为1,则用第1行元素dayTab1i计算;否则leap值为0,用第0行dayTab0i计算 */leap = (year % 4 = 0 && (year % 100 != 0 | (year % 400 = 0;for (i=1; i day = day + dayTableapi;return day; /* 返回计算出的day的值 */* 函数功能:对给定的某一年的第几天,计算它是这一年的第几月第几日 */voi

7、d MonthDay(int year, int yearDay, int *pMonth, int *pDayint i, leap;leap = (year % 4 = 0 && (year % 100 != 0 | (year % 400 = 0;for (i=1; yearDay>dayTableapi; i+yearDay = yearDay - dayTableapi;*pMonth = i; /* 将计算出的月份值赋值给pMonth所指向的变量 */*pDay = yearDay; /* 将计算出的日号赋值给pDay所指向的变量 */* 函数功能:显示菜单

8、*/void Menu(voidprintf("1. year/month/day -> yearDayn"printf("2. yearDay -> year/month/dayn"printf("3. Exitn"printf("Please enter your choice:"实验11 字符串与指针编程练习实验目的:1. 熟悉字符串的输入及输出2. 掌握字符指针做函数参数的方法3. 掌握数组做函数参数的方法实验题目:1. 编写一函数实现字符串的反序输出,函数原型如下:void invert(ch

9、ar *s;即将字符串s反序。解题思路:用循环将串s的首尾字符对调,直到中间位置结束。如:串“ABCDE0”,将A与E对调(交换,B与D对调,循环次数是串的实际长度的一半。2. 在主函数main中输入一串字符串,并调用invert函数将此字符串反序,然后再将反序后的字符串输出。3. 编写一函数将字符串s中的字符c删除void charDel(char *s,char c;解题思路:假设s为“aebefe0”串中的e字符删除,判断当前s指针是否指向e字符,若指向e字符,则将e字符后面的befe0字符向前移动一位,然后移动s指针,重复这一过程。4. 编写函数void replace(char *s

10、,char c1,char c2实现将s所指向的字符串中所有字符c1用c2替换,字符串,字符c1和c2均在主函数中输入,将原始字符串和替换后的字符串显示在屏幕上。解题思路:如果当前s指针指向的是c1字符,则把c2赋值给s指针所指向的地址空间,然后移动指针s,重复上述过程。参考代码:#include "stdio.h"#include "string.h"void replace(char *s,char c1,char c2;void charDel(char *s,char c;void invert(char *s;int main(char str

11、="acbd"invert(str;puts(str;void invert(char *sint strLenth;char *i,*j,*mid,temp;/j和i所指向字符是相互交换的字符strLenth=strlen(s;mid=s+strLenth/2;/交换的次数应为字符串总长度除以2j=s+strLenth-1;/令j指向字符串的末尾,0字符的前一个字符for(i=s;i<mid;i+/i=s令i指针指向字符串的首部,i+令i指针指向下一个字符temp=*i;*i=*j;*j=temp;/交换对应的字符j-;/字符串末尾指向前移void charDel(char *s,char cchar *p,*q;while(*s!='0'if(*s=cp=s;q=s+1

温馨提示

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

评论

0/150

提交评论