@[Zy521_125](/user/930780) 咱就是说在循环里面你的 sub1 sub2 sub3 的值也没变化啊
还有就是要输出 “No”,而不是“NO”
我也不是很理解用指针的意义何在
希望能够帮到你
by xixisuper @ 2023-02-19 15:56:09
@[Zy521_125](/user/930780) 顺便帮你改了一下代码,你自己理解下吧
```cpp
#include<bits/stdc++.h>//万能头文件
using namespace std;
int num[5];
void func(int number){ //输入的整数存到数组中
int i=4;
while(number!=0) {
num[i] = number % 10;
number = number / 10;
i--;
}
}
int main(){
int k;
cin>>k; //可被k整除
int count=0;
for(int i=10000;i<=30000;i++){
func(i);
int sub1=num[0]*100+num[1]*10+num[2];
int sub2=num[1]*100+num[2]*10+num[3];
int sub3=num[2]*100+num[3]*10+num[4];
if(sub1%k==0&&sub2%k==0&&sub3%k==0) {
cout<<i<<endl;
count++;
}
}
if(count==0)
cout<<"No";
}
```
by xixisuper @ 2023-02-19 16:04:02
`func` 中:
> ```cpp
> int* ans = new int[5];
> ```
>
> “向操作系统申请内存,在其中创建 5 个 `int` 对象,把指向它们的指针命名为`ans`”。
>
> ```cpp
> return ans;
> ```
>
> “把 `ans`(指向上述内存的指针)转交给调用者”。
`main` 中:
> ```cpp
> int num[5];
> int sub1 = num[0] * 100 + num[1] * 10 + num[2];
> int sub2 = num[1] * 100 + num[2] * 10 + num[3];
> int sub3 = num[2] * 100 + num[3] * 10 + num[4];
> ```
>
> “创建 5 个还未确定值的 `int` 对象,并尝试用它们计算 `sub1`、`sub2` 和 `sub3`”。
>
> ```cpp
> num[5] = *func(i);
> ```
>
> “取 `func(i)` 返回的指针所指向的首个 `int`(同时丢弃指针所指代的内存,不交还操作系统),赋值给 `num` 的第 6 个元素”。
---
上面四段话是对代码的直译,读不通说明代码有问题。修改的办法是换成 `array`:
![](https://cdn.luogu.com.cn/upload/image_hosting/yz1a7530.png)
by ud2_ @ 2023-02-19 16:14:32
@[xixisuper](/user/580107) 非常感谢
by Zy521_125 @ 2023-02-19 18:17:44
@[ud2_](/user/206953) 请问一下读代码的这个是哪个软件,谢谢。
by Zy521_125 @ 2023-02-19 18:24:54
@[Zy521_125](/user/930780) 比较两段代码差异的是 [difftastic](https://github.com/Wilfred/difftastic)。
by ud2_ @ 2023-02-19 19:29:59
@[ud2_](/user/206953) 你怎么弄得
by wstjy @ 2023-03-23 21:16:31