有大佬看一下为啥不对么,得了10分

P1151 子数整数

@[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


|