1

当我尝试在 Visual Studio 2012 中编译我的项目时出现以下错误:

1>------ Build started: Project: ConsoleApplication1, Configuration: Debug Win32 ------
1>  main.c
1>e:\main.c(28): 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 11.0\vc\include\stdio.h(290) : see declaration of 'scanf'
1>e:\main.c(30): error C2143: syntax error : missing ';' before 'type'
1>e:\main.c(31): error C2143: syntax error : missing ';' before 'type'
1>e:\main.c(33): error C2065: 'answerMin' : undeclared identifier
1>e:\main.c(33): error C2065: 'answerMax' : undeclared identifier
1>e:\main.c(35): error C2065: 'answerMax' : undeclared identifier
1>e:\main.c(36): error C2065: 'answerMin' : undeclared identifier
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

这是 main.c 中的代码

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

double a ;
double b ;
double ComputeMaximum( double, double ) ;
double ComputeMinimum( double, double ) ;

int main(void)
{

  printf("\nPlease enter two numeric values for comparison\n") ;

  scanf("%d%d", &a, &b );

  double answerMax = ComputeMaximum( a, b ) ;
  double answerMin = ComputeMinimum( a, b ) ;

  printf("Of %d and %d the minimum is %d and the maximum is %d\n", a, b, answerMin, answerMax ) ;

  printf("%d", answerMax ) ;
  printf("%d", answerMin ) ;

  system("pause");
  return 0;

}

这是 ComputeMinimum.c 的代码

double ComputeMinimum( double a, double b )
{
  double result = 0 ;
  ( a > b ) ? ( b = result ) : ( a = result ) ;
  return result ;

}

这是 ComputeMaximum.c 的代码

double ComputeMaximum(double a, double b)
{
  double result = 0 ;
  ( a > b ) ? ( a = result ) : ( b = result ) ;
  return result ;

}
4

2 回答 2

1

使用 C 时,您必须在任何指令或函数调用之前声明变量。例子:

int main(void)
{
    double answerMax;
    double answerMin;
    .....
    system("pause");
     return 0;
 }

关于不推荐使用的功能。您可以在项目属性的预处理器定义中添加 _CRT_SECURE_NO_WARNING。

于 2013-11-04T20:35:09.677 回答
0
scanf("%d%d", &a, &b );

一定是

scanf("%lf %lf", &a, &b);

因为aandb是双精度数(值之间有空格)。

同样的

printf("Of %d and %d the minimum is %d and the maximum is %d\n", a, b, answerMin, answerMax ) ;

更改%d%f

另请注意,在

double ComputeMinimum( double a, double b )
{
  double result = 0 ;
  ( a > b ) ? ( b = result ) : ( a = result ) ;
  return result ;

}

result始终为 0,更改为

( a > b ) ? ( result = b ) : ( result = a ) ;

同样的computeMaximum

当然,您需要包含包含这些函数的标头main.c(编译器警告这一事实)

于 2013-11-04T20:46:44.963 回答