0

我是 C 编程的新手,我正在尝试书中的一段代码。当我尝试构建和运行它时,我收到无法运行程序的错误和警告。不知道为什么。我的代码是逐字写的。我也在为 PC 使用 codeBlocks。

#include <stdio.h>

 int main()
 {
     char choice;
     printf("Are you filing a single, joint or ");  
     printf("Married return (s, j, m)? ");  
     do
     {
         scanf(" %c ", &choice);
         switch (choice)
         { 
             case ('s') : printf("You get a $1,000 deduction.\n");
                    break;
             case ('j') : printf("You geta 1 $3,000 deduction.\n");
                    break;
             case ('m') : printf("You geta $5,000 deduction.\n");
                    break;

             default    : printf("I don't know the ");
                          printf("option %c.\n, choice");
                          printf("Try again.\n");
                    break;

         }
      }while ((choice != 's') && (choice != 'j') && (choice != 'm');  
      return 0;
  }
4

3 回答 3

4

错误是由于缺少)inWhile语句。

目前是: while ((choice != 's') && (choice != 'j') && (choice != 'm');

它应该是

while ((choice != 's') && (choice != 'j') && (choice != 'm'));

除此之外,您的scanfprintf陈述有问题。

目前他们是: scanf(" %c, &choice");

printf("option %c.\n, choice");

这些应更改为: scanf(" %c", &choice);

printf("option %c.\n", choice);

如果在编写代码时小心谨慎,这些类型的问题可以很容易地避免。

于 2013-07-22T14:49:12.337 回答
3

你有几个语法问题。

在您的scanf行中,结束双引号的位置错误,应该在%c.

scanf(" %c", &choice);

在你while的行中,你在行尾缺少一个右括号。

} while ((choice != 's') && (choice != 'j') && (choice != 'm'));

修复这两个错误会导致程序对我来说编译和运行良好。

于 2013-07-22T14:50:02.947 回答
0
In function 'main':
Line 25: error: expected ')' before ';' token
Line 27: error: expected ';' before '}' token
Line 27: error: expected declaration or statement at end of input

http://codepad.org/tXK1DlsJ

首先,您不要关闭 do-while 循环的大括号。您需要在最后添加大括号。

while ((choice != 's') && (choice != 'j') && (choice != 'm'));

此外,正如其他人所提到的,您需要将您的 scanf 语句更改为

scanf(" %c", &choice);
于 2013-07-22T14:51:09.963 回答