我正在编写一个计算两个值的平方的程序(我必须使用一个函数。)我确信有很多错误但是,我似乎无法将它们挑出来:
#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
答案 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;
...
实际上,您甚至不需要在total
内main
,squared
函数不需要第三个包含total
的参数正如您在int total
内声明squared
一样。但我不会那样......
答案 4 :(得分:0)
通过以上所有答案,您似乎在函数的return语句中错过了;
。