我正在当地的社区学院学习混合课程“算法,架构和汇编语言”。虽然它是一个介绍类,主要关注计算机如何将代码转换为二进制,但我们有一些C代码的赋值。我们在课堂上甚至没有过去的一些东西,我迷失了。
说明如下:
编写一个名为DoSomething的函数,没有返回值,它应该只做一(1)件事:将全局变量my_result乘以5并将结果存储回my_result
您不必调用DoSomething,也不必初始化my_result,我会这样做。
我试过了
int my_result;
dosomething (my_result) {
my_result = my_result * 5;
}
但这是不正确的。我几乎没有使用C语言的经验,而且被卡住了。我不是要求任何人做我的作业,我只想了解。这在课堂上没有涉及。
答案 0 :(得分:3)
你几乎拥有它。由于my_result
是全局的,因此您无需将其传递给函数,它随处可访问。哦,每个函数都需要指定它的返回值。使用void
指定没有返回值且没有参数。
int my_result;
void dosomething (void) {
my_result = my_result * 5;
}
答案 1 :(得分:3)
正确的函数声明必须具有类型,函数名称及其参数。
type function_name(type1 arg1, type2 arg2, type3 arg3, ...);
如果某个函数未返回任何内容,则type
必须为void
void function_name(type1 arg1, type2 arg2, type3 arg3, ...);
如果某个函数不带任何参数,那么您可以使用void
代替
争论清单:
type function_name(void);
您的dosomething
函数缺少返回类型,该类型应为void
(赋值说编写一个名为DoSomething
的函数,没有返回值)
并且它不带参数(至少赋值没有指定任何参数),所以
正确的函数原型必须是:
void DoSomething(void);
所以正确的程序
#include <stdio.h>
int my_result;
void DoSomething(void)
{
my_result = my_result * 5;
}
int main(void)
{
my_result = 6; // initializing global variable
DoSomething();
printf("my_result: %d\n", my_result);
return 0;
}
将打印my_result: 30
。
答案 2 :(得分:1)
说明如下:
所以代码就是:
void DoSomething(void)
代码就是:
{
my_result = my_result * 5;
}
完成。请求的总代码是:
void DoSomething(void)
{
my_result = my_result * 5;
}
您已在评论中表明您正在将此代码提交到某种自动评分/检查软件中。因此,该软件旨在接受与分配匹配的代码,不多也不少。很可能,它会将您的代码放入一个文件中,并编译包含前一个文件#include
的源文件。该源文件定义my_result
和main
,因此您的代码不应该,或者它将导致编译和/或链接错误。您只需提交说明中要求的代码。
关于您的代码的说明:
DoSomething
的例程。您使用了dosomething
。这些在C中是不同的;案件很重要。void
作为函数的返回类型没有返回值,如void DoSomething(…)
中所示。 (由于历史原因,如果省略函数声明中的返回类型,则默认为int
。让类型默认为旧语法,应避免使用。)dosomething (my_result)
不正确。一,my_result
被描述为全局变量,而不是参数。二,参数声明的语法错误。参数声明必须具有类型,如dosomething(int x)
中所示。由于例程不需要参数,因此适当的声明为void DoSomething(void)
。 (尽管教师有可能打算void DoSomething()
,但这通常不是首选。)答案 3 :(得分:1)
没有什么可担心的。放松,这只是成为一名优秀开发人员的过程的一部分。
要解决此类问题,请首先记下函数所期望的内容,并希望函数返回。
现在,在你的问题中,假设函数不会返回任何内容。因此函数的返回类型将是无效的。
现在,由于我们必须使用全局变量,这意味着函数不需要参数。
因此,我们的代码是:
#include <stdio.h>
int my_result; // Our Global Variable
void doSomething (void) // Our Function
{
my_result = my_result * 5;
}
int main()
{
/* Asking the value of my_result */
printf("Please enter a value : ");
scanf("%d", my_result);
doSomething();
printf("\nNew value of my_result is : %d\n", my_result);
return 0;
}
// End of main.