Aesthetics: goto or not
Aesthetics: goto or not
Good day! How are you this gloomy, rainy afternoon?
I just realized - through experimentation, naturally ๐ - that I can return whole printf()s into main. Mind blowing. Anyway, I would much appreciate any input on how to write my leapYear function more aesthetically pleasing. I tried slapping the printf statements at the end of leapYear or at the end of each if statement. Still feels repetitive...
Also, as it stands, I'm having leapYear return int as per the declaration and definition. But I am returning printf() statements. Why does this work? I know that, for instance, char is int under the hood, using the machine's underlying character table, for instance ASCII. Is the explanaition something similar to this?
Thank you in advance! ๐
#include <stdio.h>
#include <string.h>
int leapYear(int year);
int main() {
int year = 0;
printf("Enter the year that you would like to check and press ENTER: ");
scanf("%d", &year);
leapYear(year);
return 0;
}
int leapYear(int year) {
char wasiswill[12] = "";
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
if (year < 2026) strcpy(wasiswill,"was");
if (year == 2026) strcpy(wasiswill, "is");
if (year > 2026) strcpy(wasiswill, "will be");
goto EXIT_LEAP;
}
else {
if (year < 2026) {
strcpy(wasiswill,"was");
goto EXIT_NLEAP1;
}
else if (year == 2026) {
strcpy(wasiswill, "is");
goto EXIT_NLEAP2;
}
else if (year > 2026) {
strcpy(wasiswill, "will not be");
goto EXIT_NLEAP3;
}
}
EXIT_LEAP: return printf("%d %s a leap year.\n", year, wasiswill);
EXIT_NLEAP1: return printf("%d %s not a leap year.\n", year, wasiswill);
EXIT_NLEAP2: return printf("%d %s not a leap year.\n", year, wasiswill);
EXIT_NLEAP3: return printf("%d %s a leap year.\n", year, wasiswill);
}