题目是:用0~6分别表示星期日至星期六,当输入其中的任意一个数字时,请输出对应的星期名。
参考答案如下:
#include<stdio.h>
void main(){
char *weekname[7]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
int week;
printf("input week No:");
scanf("%d",&week);
if(week>=0&&week<7)
printf("week No:%d-->%s\n",week,weekname[week]); //weekname[]数组是指针数组,输出时为什么不加星号呢---> printf("week No:%d-->%s\n",week,*weekname[week]);
else
printf("input error!\n");
}
这个程序运行没有问题,但里面注释的那一行代码我有点疑问,如果是 *weekname[week] 运行时就有问题了。望高手为我说明一下啊
加上*没有输出s,而是调试时出现了错误需要中断调试
追答*weekname这样的话做输出的时候输出的是
weekname[week]这个代表的是一个字符串对吧,*weekname[week]输出的应该是数组第week个字符串的第一个字符,不如说week=0;那么*weekname[week]应该输出s
*weekname这个样子的话就代表的是该数组的第一个元素,weekname就代表数组第一个元素的地址
调过了,输出的的确不是s,报错
追答printf("week No:%d-->%s\n",week,*weekname[week]);这要改下%s应该改成%c这样就不会报错了,验证过了