c 用户输入编译错误

问题描述 投票:0回答:4

我必须编写一个程序,询问用户是男性还是女性,生日(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.
c function if-statement methods
4个回答
3
投票

当编译器产生错误消息时,最可靠的方法是从产生的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)
    


0
投票

if (temp >= 33 && <= 62 && ...

例如这里,你应该写

if (temp >= 33 && temp <= 62 && ...

希望这有帮助。


0
投票
temp >= 25 && <= 29

。我猜你的意思是写

temp >= 25 && temp <= 29
    


0
投票

© www.soinside.com 2019 - 2024. All rights reserved.