[英]How can I solve this simple C function?
我正在当地社区大学参加“算法,体系结构和汇编语言”混合课程。 虽然这是入门课程,但主要关注计算机如何将代码转换为二进制,但是我们对C代码有一些分配。 我们上课从未去过的一些东西,我迷路了。
说明如下:
编写一个名为DoSomething的函数,不带任何返回值,它应该只做一(1)件事:将全局变量my_result乘以5,然后将结果存储回my_result
您不必调用DoSomething或初始化my_result,我将这样做。
我努力了
int my_result;
dosomething (my_result) {
my_result = my_result * 5;
}
但这是不正确的。 我对C语言的经验几乎为零,并感到困惑。 我不是要任何人做作业,我只是想了解。 这在课堂上没有涉及。
您几乎拥有它。 由于my_result
是全局的,因此您无需将其传递给函数,因此可以在任何地方访问它。 哦,每个函数都需要指定其返回值。 使用void
指定没有返回值和参数。
int my_result;
void dosomething (void) {
my_result = my_result * 5;
}
正确的函数声明必须具有类型,函数名称及其参数。
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
。
说明如下:
因此,代码如下:
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()
,但这通常不是首选。) 没有什么可担心的。 放松,这只是成为优秀开发人员过程的一部分。
为了解决这些问题,首先请注意该函数期望什么,我们希望该函数返回。
现在,在您的问题中,函数将不返回任何内容。 因此,该函数的返回类型将为空。
现在,由于必须使用全局变量,这意味着函数不希望有任何参数。
因此,我们的代码是:
#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.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.