C程序不会编译

我正在参加编程,我有一位不太参与的教授。 不幸的是,这堂课充满了像我这样的新手,所以没有帮助。 我必须使用输入/输出,赋值语句和算术创建一个税收计算器。 我的朋友实际上帮我修改了一些代码并在发送给我之前编译了它。 我没有改变任何东西,但它对我不起作用。

#include  #include  int main() { const double TAX_RATE = 0.075; double item1 = 0, item2 = 0, item3 = 0; printf("Enter the price of the first item: \n"); scanf("%lf", &item1); printf("You entered %.2lf \n", item1); printf("Enter the price of the second item: \n"); scanf("%lf", &item2); printf("You entered %.2lf \n", item2); printf("Enter the price of the third item: \n"); scanf("%lf", &item3); double total = item1 + item2 + item3; double tax = total * TAX_RATE; double totalWithTax = total + tax; printf("You entered %.2lf \n", item3); printf("The total of your items is %.2lf \n", total); printf("The tax is %.2lf \n", tax); printf("The total with tax is %.2lf \n", totalWithTax); system("pause"); } 

这是输出

 1>------ Build started: Project: assign2, Configuration: Debug Win32 ------ 1> program.c 1>c:\users\chris\documents\visual studio 2010\projects\assign2\assign2\program.c(10): warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\stdio.h(304) : see declaration of 'scanf' 1>c:\users\chris\documents\visual studio 2010\projects\assign2\assign2\program.c(14): warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\stdio.h(304) : see declaration of 'scanf' 1>c:\users\chris\documents\visual studio 2010\projects\assign2\assign2\program.c(18): warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\stdio.h(304) : see declaration of 'scanf' 1>c:\users\chris\documents\visual studio 2010\projects\assign2\assign2\program.c(20): error C2143: syntax error : missing ';' before 'type' 1>c:\users\chris\documents\visual studio 2010\projects\assign2\assign2\program.c(21): error C2143: syntax error : missing ';' before 'type' 1>c:\users\chris\documents\visual studio 2010\projects\assign2\assign2\program.c(22): error C2143: syntax error : missing ';' before 'type' 1>c:\users\chris\documents\visual studio 2010\projects\assign2\assign2\program.c(25): error C2065: 'total' : undeclared identifier 1>c:\users\chris\documents\visual studio 2010\projects\assign2\assign2\program.c(26): error C2065: 'tax' : undeclared identifier 1>c:\users\chris\documents\visual studio 2010\projects\assign2\assign2\program.c(27): error C2065: 'totalWithTax' : undeclared identifier ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 

在C小于C99的变量必须在函数的顶部声明(在其他非变量初始化语句之前),所以

 const double TAX_RATE = 0.075; double item1 = 0, item2 = 0, item3 = 0; double total, tax, totalWithTax; 

然后你可以使用它们:

 total = item1 + item2 + item3; tax = total * TAX_RATE; totalWithTax = total + tax; 

在C ++和C99中,您可以在代码中声明变量。

Visual C ++不完全支持C99(只有一些部分,例如https://stackoverflow.com/a/146419/613130 )

Visual C ++根据文件扩展名选择您使用的语言。 您的朋友可能将程序命名为myprogram.cpp ,并在计算机上以C ++编译,而您将文件命名为myprogram.c ,并在计算机上将其编译为C.

对于警告……你可以忽略它们。 微软几年前开始讨论部分基本库C(处理字符串和内存块),宣称它们“不安全”,因为它很容易被滥用。 它引入了具有更多参数的新function。 这些function不是标准的,也不是Microsoft特有的。 请参阅http://msdn.microsoft.com/en-us/library/8ef0s5kh.aspx 。

你可以用一个

 #define _CRT_SECURE_NO_WARNINGS 

在文件的开头( #include之前)删除警告。 如果在GCC上编译,它将不会产生副作用。