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

时间:2018-03-10 01:18:01

标签: 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语言的经验,而且被卡住了。我不是要求任何人做我的作业,我只想了解。这在课堂上没有涉及。

4 个答案:

答案 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)

说明如下:

  • 编写一个名为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(),但这通常不是首选。)

答案 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.