室友的问题但是太久没操作的我早就忘记了

img

这是什么鬼,一开头看着是C语言,下面写着写着是python

这是C语言的

#include <stdio.h>

int main() {
    int num1, num2, sum = 0;
    printf("请输入两个整数:");
    scanf("%d %d", &num1, &num2);
    if (num1 > num2) { int t = num1; num1 = num2; num2 = t; }
    for (int i = num1; i <= num2; i++) {
        if (i % 3 == 0) {
            sum += i;
        }
    }
    printf("%d和%d之间是3的倍数的所有数字之和为:%d\n", num1, num2, sum);
    return 0;
}

这是Python的

num1 = int(input("请输入第一个整数:"))
num2 = int(input("请输入第二个整数:"))

if num1 > num2:
    num1, num2 = num2, num1

sum = 0
for i in range(num1, num2+1):
    if i % 3 == 0:
        sum += i

print("这两个数字之间是3的倍数的所有数字之和为:", sum)


不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 看下这篇博客,也许你就懂了,链接:百科不全书之我的常见报错和解决
  • 除此之外, 这篇博客: 关于函数指针以及由函数指针引起的混乱中的  【我的问题】 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

            上面我们指出函数名是一个指针变量,这个指针变量指向函数体,那么为什么会出现这样的输出结果呢?

            希望有大佬在评论区发表自己的意见,这个问题我不理解,求助!!!!

    #include <stdio.h>
    
    int max(int a, int b)
    {
    	return a > b ? a : b;
    }
    
    
    int main(void)
    {
    	int a, b;
    	scanf("%d %d", &a, &b);
    
    	int (*pmax)(int a, int b) = max;
    
    	printf("%p\n", max);
    	printf("%p\n", &max);
    	printf("%p\n", pmax);
    	printf("%p\n", &pmax);
    
    
    	return 0;
    }
    
    

     

                为什么 max 和 &max的结果一样呢?难道 max 不应该是一个指针变量嘛?

                经过我一晚上的胡思乱想,我有了一个不太成熟的想法,来解释这个问题:

           当创建一个数组的时候,会为其分配一段连续的存储空间,同时利用一个数组名来指向该数组的首地址,我们把这个数组名称为数组变量。

            需要注意的的是,内存并不会为数组变量分配存储空间这也是为什么数组名不能指向其他地方,而指针变量可以指向其他地方,因为内存为指针变量分配了存储空间。那么我们是不是可以认为,函数名是一种特殊的指针变量,内存同样不会对其分配存储空间,这也是为什么函数名不能指向其他地方。

            我们发现这两者存在极大的相似之处,所以我提出了这样一个想法,函数变量(函数名)与数组变量(数组名)相似,在进行编译的时候,系统会把函数名和数组名出现的地方直接替换成函数或者数组的首地址!!!那么这里是不是又是一个特殊的发现?进行替换?是否与宏定义相关?

            所以函数变量和数组变量是不是一种特殊的宏定义?????

     

     希望有大神指正!!!

  • 您还可以看一下 传智老师的多角度带你编写更规范的黑盒测试用例课程中的 等价类设计测试用例的步骤小节, 巩固相关知识点

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^