如何在C中修复错误“使用未声明的标识符n”?

时间:2014-04-21 22:46:01

标签: c compiler-errors syntax-error undeclared-identifier cs50

我确信可能有很多语法/其他错误,但我正在试图找出它正在接受的两个错误。我对此非常新,所以我真的不知道如何修复未声明的标识符。请注意,#include <cs50.h>只是CS50的库。

#include <cs50.h>
#include <stdio.h>

int main (void)
{ 
   int add, fee, disc;
   printf("For rate with tax and Security Deposit, type y. For 10 percent off, type n:"); 
   string name = GetString();
   if (name == y)
   { 
     printf("PreTax Amount: ");
     scanf("%d", &fee);
     printf("Okay. I will add the 10 percent tax to %d.\n ", fee);

     add        = (1.1 * fee);

     printf("Plus Tax Amount = %d\n", add);
     printf("Security Deposit = 1000 dollars\n");
     printf("Total = (%d + 1000)", add); 
   }  
   else if (name == n)
   {
     printf("PreTax Amount: ");
     scanf("%d%d", &fee, &disc);
     printf("Okay. I will minus the 10 percent discount to %d and then add tax.\n ", fee);

     add        = (0.9 * fee);
     disc       = (add * 1.1);

     printf("Minus Discount Amount plus tax = %d\n", disc);
     printf("Security Deposit = 1000 dollars\n");
     printf("Total = (%d + 1000)", disc);
   }

   return 0;
}

错误:

ContractualHelper.c:10:17: error: use of undeclared identifier 'y'
if (name == y)
            ^
ContractualHelper.c:22:22: error: use of undeclared identifier 'n'
else if (name == n)
                 ^
2 errors generated.

2 个答案:

答案 0 :(得分:1)

yn未声明,因为它们没有定义。

int y;是一个声明,可以消除这个错误。

但是,您的代码

if (name == y)

正在将变量name与变量y进行比较,我认为您要做的是查看name是否包含字符串y

如何进行这种比较是另一个问题。

答案 1 :(得分:0)

由于您只想与“Y”或“N”进行比较,我建议您使用char代替string。 所以: char name;

scanf("%c", &name);

比比较使用时:

if (name == 'Y') ...

添加

您还应该考虑来自用户的错误输入,因此请添加另一个else,如:

#include <stdio.h>
#include <string.h>

main()
{
   char name;
   scanf("%c", &name);

   if (name == 'y') 
    printf("Yes");

   else if (name == 'n')
    printf("No");

   else 
        printf("wrong input");
}