Я написал краткую программу (расчет заработной платы), чтобы помочь мне оставаться на скорости. По какой-то причине, когда я компилирую это, я продолжаю получать ошибку «53: синтаксическая ошибка до»; токен "ошибка синтаксиса перед ';' token
#include
int main()
{
#define week 7;
#define year 365;
int jan,feb,mar,apr,may,june,july,aug,sep,oct,nov,dec;
int wage; /* Upgrade to float in future */
char input,month;
int holder;
jan=mar=may=july=aug=oct=dec=31;
apr=june=sep=nov=30;
feb=28;
for(;;)
{
if(input='y')
{
#define YEAR 366;
break;
}
else if(input='n')
{
break;
}
else
{
printf("Unable to understand input");
}
}
printf("Enter wage/day in pounds.\n?\n");
scanf("%d",&wage); /* unsure if I need to get string and then use atoi */
printf("Wage per day:\t%d\n",wage);
printf("Wage per week:\t%d\n",wage*7);
printf("Wage per month:\t%d\n",wage*30);
holder=YEAR;
printf("Wage per year:\t%d\n",wage*holder);
printf("As months have varying day amounts, if you wish to view a specific month type:\n");
printf("A-Jan\nB-Feb\nC-Mar\nD-Apr\nE-May\nF-June\nG-July\nH-Aug\nI-Sep\nJ-Oct\nK-Nov\nL-Dec\nor type X-to EXIT");
month=getchar();
if((month=='A')||(month=='C')||(month=='E')||(month=='G')||(month=='H')||(month=='J')||(month=='L')){
printf("Wage for this month will be:\t%d",wage*31);
}
else if((month=='D')||(month=='F')||(month=='I')||(month=='K')){
printf("Wage for this month will be:\t%d",wage*30);
}
else if((month=='B')&&(year==365)){
printf("Wage for this month will be:\t%d",wage*28);
}
else if((month=='B')&&(year==366)){
printf("Wage for this month will be:\t%d",wage*29);
}
else if(month=='X'){
exit(1);
}
return 0;
}
Независимо от того, сколько раз я читаю его, мне просто не удается увидеть, что я делаю неправильно.
В качестве побочного примечания, если кто-то чувствует, что кричит/дает указатели на мой стиль, я ценю любые советы, которые могут привести к улучшению моих навыков.
Спасибо всем, что было в подавляющем большинстве случаев быстрого ответа, я получил код компилируется правильно, так что теперь я могу начать отладку ошибки во время выполнения (Прежде чем кто упоминает об этом. Да, я понимаю необходимость вымывать после ввода)
'if (month == 'A' || 'C' || 'E' || 'G' || 'H' || 'J' || 'L') {' вы не можете сделать что. – Matthew
if ((month == 'A') || (month == 'B') || ...) – Jekyll
Там нет ';' токена как 53. Должно быть, что-то, что вы нам не показываете. Вы случайно определили «год» как макрос ??? – AnT