【C系列5.10】指针专题之月份对应(HZNUOJ 2024程序设计基础第五章作业)
注:此篇文章仅供学习使用,严禁抄袭以刷题量。
Description
Alex想给刚满三岁的弟弟编写一个程序,他输入一个数字后,就会输出相应的月份(“January”, “February”, “March”, “April”, “May”, “June”, “July”, “August”, “September”, “October”, “November”, “December”),比如输入3则输出“March”,如果数字大于12,则输出“Oh my God!”。请你运用指针来喝Alex一起解决这个简单的小问题。
Input
输入包含多组测试数据,每组测试数据只含一个正整数N(N <= 100000)。
Output
这个数字所代表的月份。
Samples
input
1
output
January
题目分析:
指针?
指针训练其实不需要指针
下面介绍两种开二维数组的方式:
char month[13][20]={"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
//解释
char month[13(二维数组大小:包含多少个一维数组)][20(一维数组的大小)]={"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
//指针法
char *b[]={"January", "February", "March", "April", "May", "June","July", "August", "September", "October", "November", "December"};
当你学会二维数组的正确打开方式时,题目将会非常简单
注意第二种方法提供了一种思路,就是说可以把数组第0维设为空,这样查询的时候就不需要-1了
c(方法一)
#include <stdio.h>
int main()
{
char *b[] = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
int n;
while (scanf("%d", &n) != EOF)
{
if (n > 12)
{
printf("Oh my God!\n");
}
else
{
printf("%s\n", b[n - 1]);
}
}
return 0;
}
c(方法二)
#include <stdio.h>
int main()
{
int t;
char month[13][20] = {"", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
while (scanf("%d", &t) != EOF)
{
if (t > 12)
{
printf("Oh my God!");
}
else
{
printf("%s\n", month[t]);
}
}
return 0;
}