C程序设计 (第四版) 谭浩强 习题8.18
习题 8.18 编一程序,输入月份号,输出该月的英文月名。例如,输入“3”,则输出“March”,要求用指针数组处理。
IDE工具:VS2010
Note: 使用不同的IDE工具可能有部分差异。
代码块
方法1:
#include <stdio.h>
#include <stdlib.h>
void output(int x, char *p[]);
int main(){
char *month[]={"January", "Februray", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
int m;
printf("Please enter month: ");
scanf("%d", &m);
for(; m < 1 || m > 12; printf("Error!\nPlease enter month: "), scanf("%d", &m));
output(m, month);
system("pause");
return 0;
}
void output(int x, char *p[]){
printf("%s\n", p[x-1]);
}
方法2:使用指针,动态内存分配
#include <stdio.h>
#include <stdlib.h>
void inputMonth(int *mon){
printf("Enter Month number: ");
scanf("%d", mon);
while(*mon < 1 || *mon > 12){
printf("Month Error! Retry!\nEnter Month number: ");
scanf("%d", mon);
}
}
void outputMonthEn(int *mon){
char *month[12] = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
for(int i = 0; i < 12; i++){
if(*mon == i + 1){
printf("%s\n", month[i]);
break;
}
}
}
int main(){
int *mon = (int*)malloc(sizeof(int));
inputMonth(mon);
outputMonthEn(mon);
free(mon);
system("pause");
return 0;
}