【C系列5.2】指针专题之好朋友的属相(HZNUOJ 2024程序设计基础第五章作业)
注:此篇文章仅供学习使用,严禁抄袭以刷题量。
Description
Alex认识了很多好朋友,她想根据他们的出生年份推断出他们的属相(“鼠”, “牛”, “虎”, “兔”, “龙”, “蛇”, “马”, “羊”, “猴”, “鸡”, “狗”, “猪”)。从键盘任意输入一个数字来表示年份值,程序可以输出该年份的属相。请用指针帮助Alex来实现此功能。注意:负数代表公元前,如-20表示公元前20年。
Input
输入多组。
每组一个年份值N(-2016<N<2016)。
Output
属相。
Samples
input
1994
output
狗
Hint
负数表示公元前,公元0年不存在。
题目分析:
指针?
指针训练其实不需要指针
下面介绍两种开二维数组的方式:
char month[13][20]={"January", "February"};
//解释
char month[13(二维数组大小:包含多少个一维数组)][20(一维数组的大小)]={"January", "February"};
//指针法
char *b[]={"January", "February"};
当你学会二维数组的正确打开方式时,题目将会非常简单
其实也可以一个个找,但是非常麻烦
c(方法一)
#include <stdio.h>
int n;
int main()
{
char *num[13] = {"猴", "鸡", "狗", "猪", "鼠", "牛", "虎", "兔", "龙", "蛇", "马", "羊"};
while (scanf("%d", &n) != EOF)
{
if (n < 0)
n += 2401;
int x = n % 12;
printf("%s\n", num[x]);
}
return 0;
}
c(方法二)
#include <stdio.h>
int main()
{
int t;
while (scanf("%d", &t) != EOF)
{
if (t > 0)
{
t = t % 12;
switch (t)
{
case 1:
printf("鸡\n");
break;
case 2:
printf("狗\n");
break;
case 3:
printf("猪\n");
break;
case 4:
printf("鼠\n");
break;
case 5:
printf("牛\n");
break;
case 6:
printf("虎\n");
break;
case 7:
printf("兔\n");
break;
case 8:
printf("龙\n");
break;
case 9:
printf("蛇\n");
break;
case 10:
printf("马\n");
break;
case 11:
printf("羊\n");
break;
case 0:
printf("猴\n");
break;
}
}
else
{
t = t % 12;
switch (t)
{
case -1:
printf("猴\n");
break;
case -2:
printf("羊\n");
break;
case -3:
printf("马\n");
break;
case -4:
printf("蛇\n");
break;
case -5:
printf("龙\n");
break;
case -6:
printf("兔\n");
break;
case -7:
printf("虎\n");
break;
case -8:
printf("牛\n");
break;
case -9:
printf("鼠\n");
break;
case -10:
printf("猪\n");
break;
case -11:
printf("狗\n");
break;
case -12:
printf("鸡\n");
break;
}
}
}
}