-1
char DayName(int day_th)
{
  const char *DayName[] = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday" };
  return *DayName[day_th];
}

int main()
{
  int day_th=2;
  printf("What is your favorite day of the week? 1 is Sunday and 7 is Saturday: \n");
  printf("Day %d is a %s", day_th, DayName(day_th-1));
  return 0;
}

我正在编写一个输出如“第 2 天是星期一”的代码。我正在使用 VS 2019,编译器不会引发任何错误。但是,当我点击运行时,只显示“你最喜欢哪一天...行”,而不显示“第 2 天是星期一”。请帮忙!非常感谢。

4

1 回答 1

4

您通过将具有错误类型的数据传递给printf来调用未定义的行为:在预期的位置传递( )。charchar*%s

该函数DayName应该返回数组的元素const char*而不取消引用它们。

#include <stdio.h>

const char* DayName(int day_th)
{
  const char *DayName[] = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday" };
  return DayName[day_th];
}

int main()
{
  int day_th=2;
  printf("What is your favorite day of the week? 1 is Sunday and 7 is Saturday: \n");
  printf("Day %d is a %s", day_th, DayName(day_th-1));
  return 0;
}
于 2020-07-23T15:30:58.420 回答