我必须编写一个程序,询问用户是男性还是女性,生日(mm dd yyyy),然后是日期。然后计算保险的年龄,这意味着 if else 循环告诉用户他们将支付什么价格。这是我的代码:
#include<stdio.h>
#include<conio.h>
char* calculateAge(int month, int day, int year, int birthmonth, int birthday, int birthyear, char gender)
{
int temp;
temp = (year - birthyear);
if (temp >= 33 && <= 62 && gender == 'm' || temp >= 30 && <= 62 && gender == 'f') {
return "The rate class is: Best rate - $40.00 per day or $200.00 per week.";
} else if (temp >= 25 && <= 29 && gender == 'f') {
return "The rate class is: Risk rate 1 - Best rate plus $10.00 per day or best rate plus $55.00 per week.";
} else if (temp >= 25 && <= 32 && gender == 'm') {
return "The rate class is: Risk rate 1 - Risk rate 1 plus $7.00 per day or risk rate 1 plus $30.00 per week.";
} else if (temp >= 66 && gender == 'm' || temp >= 63 && gender == 'f') {
return "The rate class is: Best rate plus $2.00 for each year over age 66 (male) or 63 (female), per day or best rate plus $5.00 for each year over age 66 (male) or 63 (female), per week."
} else {
return "Sorry, the renter is not 25 years of age or older.";
}
}
void main() {
int month, day, year, birthmonth, birthday, birthyear;
char gender;
printf("\nWelcome to the car renter’s rate finder. " );
printf("\nPlease enter today's date (mm dd yyyy): ");
scanf("%d%d%d",&month, &day, &year);
printf("\nPlease enter the renter’s gender (m/f):" );
scanf("%c", &gender);
printf("\nPlease enter the renter’s date of birth (mm dd yyyy):");
scanf("%d%d%d", &birthmonth, &birthday, &birthyear);
printf("\n Thank you.");
printf("%s", calculateAge(month, day, year, birthmonth, birthday, birthyear, gender));
return 0;
}
我不断收到这些错误,说: 第 14 行:错误:'<=' token line 16: same line 18: same line 22: error: expected ';' before '}' token
之前的预期表达式我不明白这些错误,有人可以帮助我让这个编程工作吗?这是它应该有的输出:
Welcome to the car renter’s rate finder.
Please enter today’s date (mm dd yyyy): 1 23 2008
Please enter the renter’s gender (m/f): m
Please enter the renter’s date of birth (mm dd yyyy): 6 9 1983
Thank you.
Sorry, the renter is not 25 years of age or older.
Welcome to the car renter’s rate finder.
Please enter today’s date (mm dd yyyy): 1 23 2008
Please enter the renter’s gender (m/f): f
Please enter the renter’s date of birth (mm dd yyyy): 2 23 1980
Thank you.
The female renter is 27 years old.
The rate class is: Risk rate 1 - $50.00 per day or $255.00 per week.
当编译器产生错误消息时,最可靠的方法是从产生的first错误消息开始。 (有时消息可能会乱序生成;在这种情况下,请从引用代码中最低行号的消息开始。)
如果您有语法错误,编译器可能很难理解您的意思。 它通常会猜测您“应该”写什么,但这种猜测可能是错误的。 编译器有时在缺少分号的情况下特别不擅长猜测。 根据您收到的错误消息判断,您可能正在使用 gcc。 当我编译你的代码时,我收到的第一条消息是:
c.c: In function ‘calculateAge’:
c.c:9:23: error: expected expression before ‘<=’ token
9号线是:
if (temp >= 33 && <= 62 && gender == 'm' || temp >= 30 && <= 62 && gender == 'f') {
第 23 列是第一个
<=
运算符。
事实上,这条特定的消息准确地告诉您问题是什么(您需要在
<=
之前添加一个表达式),但如果消息本身不清楚,请将其视为指示存在
some错误。指向它所指向的位置,或者可能稍稍位于它之前(例如,在上一行)。 修复该错误,重新编译,并对新版本文件中报告的第一个错误执行相同的操作。
随着您更好地了解该语言和编译器,您应该能够弄清楚它在做什么并立即纠正多个错误。 但就目前而言,一次修复一个错误是一个好方法。
关于代码的其他一些注释:
删除这一行:
#include<conio.h>
它是不可移植的,而且你无论如何也不会使用
<conio.h>
中的任何东西。
void main()
是错误的;应该是
int main(void)
。 if (temp >= 33 && <= 62 && ...
例如这里,你应该写
if (temp >= 33 && temp <= 62 && ...
希望这有帮助。
temp >= 25 && <= 29
。我猜你的意思是写
temp >= 25 && temp <= 29