繁体   English   中英

我该如何解决这个简单的C函数?

[英]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

说明如下:

  • 编写一个名为DoSomething的函数,没有返回值,…

因此,代码如下:

void DoSomething(void)
  • …它应该只做一(1)件事:将全局变量my_result乘以5,然后将结果存储回my_result。

的代码是:

{
    my_result = my_result * 5;
}
  • 您不必调用DoSomething或初始化my_result,我将这样做。

做完了 要求的总代码为:

void DoSomething(void)
{
    my_result = my_result * 5;
}

您已在注释中表明您正在将此代码提交到某种自动评分/检查软件中。 因此,该软件被设计为可以接受与分配相匹配的代码,而且不多也不少。 很可能会将代码放入文件中,然后编译包含#include包含前一个文件的源文件。 该源文件定义了my_resultmain ,因此您的代码不应定义,否则将导致编译和/或链接错误。 您只需要提交说明中要求的代码。

有关您的代码的注释:

  • 指令说要编写一个名为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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM