【发布时间】:2013-11-26 21:50:59
【问题描述】:
我编写了一个快速程序(计算工资)来帮助我跟上进度。由于某种原因,当我编译它时,我不断收到错误“53:';'之前的语法错误”令牌”
#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'){你不能那样做。 -
if((month=='A')||(month=='B')||...)
-
在 53 上没有
;令牌。一定有一些你没有向我们展示的东西。你有没有把year定义为宏??? -
首先,exit(1) 而不是 exit 1
-
哇,这很快,我添加了额外的 () 并且几乎感觉像一个完整的白痴,因为忽略了如此简单的事情,但由于某种原因我仍然收到错误。 @AndreyT 是的,我已将年份定义为 365。
标签: c syntax-error