实验七 指针
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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]);
}