C程序不会编译

时间:2013-09-09 10:01:57

标签: c

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

#include <stdio.h>
#include <stdlib.h>

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 ==========

1 个答案:

答案 0 :(得分:11)

在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(处理字符串和内存块),宣称它们“不安全”,因为它很容易被滥用。它引入了具有更多参数的新功能。这些功能不是标准的,也不是Microsoft特有的。请参阅http://msdn.microsoft.com/en-us/library/8ef0s5kh.aspx

您可以使用

#define _CRT_SECURE_NO_WARNINGS

在文件的开头(#include之前)删除警告。如果你在GCC上编译,它就没有副作用。