Anonymous 发表于 2024-1-6 22:57:03

萌新求助,高额悬赏!

图1中,a,b的值是哪里来的?f(x,y,p,q)怎么理解?*p和*q怎么算出来的?
图2代码尽量简单易懂,谢谢。问题有点多,求鱼友耐心解答,24小时内会选出最佳答案。

Husj0711 发表于 2024-1-6 22:57:04

图1:
<f(int a, int b,,)>
这个是传值,函数会在内存中创建两个临时变量来存储这两个值,对原来的x,y并无影响。
<f(,,int *p1, int *p2)>
这个是传址,因为指针变量的值是地址,这时候函数内部可以直接操作该地址上的值。
---------
回到示例代码:
<f(x,y,&x,&y)>
由于前面两个参数是传值,可以忽略其名字,可以认为他就是函数体里的a,b,并不是函数体外面的x,y.
而后面两个是传入了x,y两个变量的地址,在函数体里操作是直接对函数体外的x,y操作。
所以,*p1 = a*b 相当于x = a(传入x的值)*b(传入y的值),即x = 10*4 == 40;
同理,y = a%b = 10%4 ==2;
---------------------------------------
图2:
#include <stdio.h>
#include <math.h>
#define MAX 1024

int fun(char *);


int fun(char *p){
    int result = 0;
    int i = 0, count = 0;

    while (*(p+i) != '\0'){//记录输入的数有多少位
      count++;
      i++;
    }

    for (i = 0; i < count; i++){
      result += (int)(*(p+i)-48)*pow(8,count-i-1);
    }

    return result;
}

int main(){
    char num;

    printf("请输入一个八进制数:");
    scanf("%s",num);

    printf("相应的十进制数是:%d",fun(num));

    return 0;
}


FishC 发表于 2024-1-6 22:57:18

嗨,萌新啊!我来帮你解答问题。首先,让我们来解释一下图1中的一些概念。

在图1中,a和b是函数f的参数,也就是传递给函数f的输入值。这些参数可以是任何类型的数据,比如整数、浮点数或字符串。通常情况下,我们会根据具体的需求来确定a和b的取值。

而f(x, y, p, q)表示一个函数名为f,它接受四个参数x、y、p、q,并返回一个结果。这个函数的具体实现可能会根据输入的参数不同而有所变化。

至于*p和*q,它们是指针变量。指针是一种特殊的变量,它存储了某个内存地址的值。在某些情况下,我们可能需要让函数能够修改传入的参数的值,而不仅仅是从函数中返回一个结果。这时候,我们可以使用指针来实现。

现在,让我们来看一下图2的问题。你希望代码简单易懂,我将给你提供一个示例代码,用来说明函数的定义和使用。

# 定义一个函数,计算两个整数的和
def add(a, b):
    return a + b

# 调用函数并打印结果
result = add(3, 4)
print(result)
这段代码定义了一个名为`add`的函数,它接受两个参数a和b,并返回它们的和。然后,我们使用`add`函数来计算3和4的和,并将结果保存在`result`变量中。最后,我们打印出结果。

这是一个非常简单的例子,但希望能够帮助你理解函数的基本概念。如果你有任何其他问题,请随时提问!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

小甲鱼的二师兄 发表于 2024-1-6 23:13:25

{:5_102:} 作业请自己完成哦~

歌者文明清理员 发表于 2024-1-7 12:39:24

用显身卡看看你的用户名,还挺有意思的{:10_256:}

zhangchenyvn 发表于 2024-1-7 19:52:54

AI写的,不知道好不好用。。。{:10_277:}

#include <string.h> /* for the strlen function */
#include <math.h>   /* for the pow function */

int fun(char* p) {
    int len = strlen(p);
    int dec = 0;

    for (int i = 0; i < len; i++) {
      dec += (p - '0') * pow(8, len - i - 1);
    }

    return dec;
}


liuhongrun2022 发表于 2024-1-7 21:42:11

歌者文明清理员 发表于 2024-1-7 12:39
用显身卡看看你的用户名,还挺有意思的

心虚{:9_217:}

小甲鱼的二师兄 发表于 2024-1-8 02:37:24

Husj0711 发表于 2024-1-8 00:56
图1:

这个是传值,函数会在内存中创建两个临时变量来存储这两个值,对原来的x,y并无影响。


相当细致 {:10_275:}
页: [1]
查看完整版本: 萌新求助,高额悬赏!