实验七 指针

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验七指针

一、实验目的

1.通过实验掌握指针的概念,指针变量的定义和使用。

2.能正确使用数组的指针和指向数组的指针变量。

3.能正确使用字符串的指针和指向字符串的指针变量。

4.能正确使用指向函数的指针变量。

5.了解指向指针的指针的概念及其使用方法。

二、实验内容

1.输入年份和天数,输出对应的年、月、日。要求定义和调用函数month_day(year,yearday,*pmonth,*pday),其中,year是年份,yearday是天数,*pmonth是计算得出的月份,*pday是计算得出的日期。例如,输入“2000”和“61”,输出“2000-3-1”,即2000年的第61天是3月1日。

【解题思路】解题关键有两点:第一,要注意闰年和非闰年2月份的天数是不一样的,因此,对于给定的年份,首先要判断是否为闰年;第二,如何根据天数推断出对应的月和日。用给定的天数依次减去1月,2月,3月…的天数,直到这个天数小于某月的天数值,则该月即为该天数所在月份,减剩的天数值即为日期。

# include

void main ()

{

int day, month, year, yearday; //定义代表日、月、年和天数的变量void month_day(intyear,intyearday, int *pmonth,int *pday); //声明函数printf("input year and yearday: "); //提示输入数据:年和天数

scanf ("%d%d", &year, &yearday );

month_day (year, yearday, &month, &day ); // 调用计算月、日函数

printf ("%d-%d-%d \n", year, month, day );

}

voidmonth_day ( int year, intyearday, int * pmonth, int * pday)

{

int k, leap=0;

int tab [2][13]= {

{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 },

}; // 定义数组存放非闰年和闰年每个月的天数

leap=(year%4==0 && year% 100!= 0 || year%400==0); //建立闰年判别条件// 如果leap=1,表示为闰年,从tab[1][k]中取k月的天数;否则为非闰年

for ( k=1; yearday>tab[leap][k]; k++)

yearday-= tab [leap][k];

*pmonth =k;

*pday = yearday;

}

2.输入月份,输出对应的英文名称。例如,输入“5”,输出“May”。要求用指针数组表示12个月的英文名称。

【解题思路】定义一个指针数组,依次存放每个月对应的英文名称。输出时要注意数组下标与月份编号的对应关系。

#include

void main()

{

char

*month[12]={"January","February","March","April","May","June","July","Aguest",

"September","October","November","December"};

int mon;

printf("请输入月份:");

scanf("%d",&mon);

printf("%d月对应的英文名称为:%s",mon,month[mon+1]);

}

相关文档
最新文档