【问题标题】:error compiling in c user input在 c 用户输入中编译错误
【发布时间】:2012-02-22 14:46:45
【问题描述】:

我必须编写一个程序来询问用户是男性还是女性,然后是生日(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 行:错误:'

我不明白这些错误,有人可以帮我让这个编程工作吗?这是它应该有的输出:

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 compiler-construction methods if-statement


    【解决方案1】:

    当编译器产生错误信息时,最可靠的方法是从产生的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 列是第一个 &lt;= 运算符。

    当它发生时,这条特定的消息会告诉您问题的确切原因(您需要在 &lt;= 之前添加一个表达式),但如果消息本身不清楚,请将其视为存在某事的迹象 错误在它指向的地方,或者可能在它之前的位置(比如说,在上一行)。

    修复该错误,重新编译,然后对新版本文件报告的第一个错误执行相同的操作。

    随着您更好地理解语言和编译器,您应该能够弄清楚它在做什么并一次更正多个错误。但就目前而言,一次修复一个错误是一种好方法。

    关于您的代码的其他一些注释:

    删除这一行:

    #include<conio.h>
    

    它是不可移植的,而且你没有使用来自&lt;conio.h&gt; 的任何东西。

    void main() 错误;应该是int main(void)

    【讨论】:

      【解决方案2】:

      您在其中一个返回语句中缺少分号。最长的文本行末尾没有分号。

      【讨论】:

        【解决方案3】:

        您的问题是表达式 temp &gt;= 25 &amp;&amp; &lt;= 29 。我猜你的意思是写temp &gt;= 25 &amp;&amp; temp &lt;= 29

        【讨论】:

          【解决方案4】:

          您在各种比较中缺少操作数:

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

          例如,你应该写

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

          希望这会有所帮助。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2018-11-08
            • 2014-03-26
            • 1970-01-01
            • 2011-04-13
            • 2011-06-10
            • 1970-01-01
            • 2014-10-21
            相关资源
            最近更新 更多