新手获得错误:预期')'之前','代币

时间:2014-03-19 19:03:12

标签: c

我正在编写一个计算两个值的平方的程序(我必须使用一个函数。)我确信有很多错误但是,我似乎无法将它们挑出来:

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

int integer1, integer2, total = 0;
int squared(int integer1, int integer2);
int main(void)
{
   printf("Enter two numbers to be Squared\n");
   scanf("%d%d",&integer1,&integer2);
   printf("Square of entered numbers = %d\n", squared(integer1,integer2));

   return 0;
}
int squared(int integer1, int integer2)
{
    int total;
    total = integer1 + integer2;
    return total *= total;
}

标题文件:

#ifndef HEADER_H
#define HEADER_H

#define squared

int squared(int integer1, int integer2);

#endif

5 个答案:

答案 0 :(得分:0)

始终存在的主要问题是您没有指定每个函数参数的类型。例如,您需要告诉编译器integer1是int。另外,请参阅haccks的回答。

答案 1 :(得分:0)

一个接一个的两个返回语句是无用的。第二个返回语句无法访问。你在两行的末尾都错过了分号。可能这是你想要的功能:

int squared(int integer1,int integer2,int total)
{
   total = integer2+integer2;
   return total*total;
}

计算两个值的总和,并返回总和的平方。

答案 2 :(得分:0)

除了函数定义之外,你甚至需要改变函数调用,

printf("Square of entered numbers = %d\n",squared(total));

printf("Square of entered numbers = %d\n",squared(integer1,integer2,total));

以便函数调用获取要添加的值。阅读一些基本的c程序,了解格式和语法。

答案 3 :(得分:0)

虽然您实际上不需要为函数int指定的参数指定类型squared,但是因为只要未指定类型就假定int,所以它永远不会错把它们放下来,如:

int squared(int integer1, int integer2, int total);
// instead of
// int squared(integer1, integer2, total);
// both at the prototype and the definition of the function

然后,你可以把它留下来。

您的函数squared的定义存在实际问题。您没有使用分号;,并且您已为第一个语句写了一个返回值,我认为您并不想返回任何内容。你可能只是想要:

int squared(int integer1, int integer2, int total)
{
    total = integer1 + integer2;
    return total *= total;
}

另一个重要的事情是,你从squared函数给main函数调用少了2个参数。 squared等待3,你只给它1.你可能想把它称为:

...
    printf("Square of entered numbers = %d\n", squared(integer1, integer2, total));
...

最后,您不应该使用没有给出值的变量。 integer1 希望将分配一个值,integer2也是希望。但是,当您从total拨打squared时,main将不会分配值。您可以使用0或其他内容对其进行初始化,如下所示:

...
    int integer1, integer2, total = 0;
...

实际上,您甚至不需要在totalmainsquared函数不需要第三个包含total的参数正如您在int total内声明squared一样。但我不会那样......

答案 4 :(得分:0)

通过以上所有答案,您似乎在函数的return语句中错过了;