for循环中变量值的更改不会在原始变量中更新


#include<bits/stdc++.h>
using namespace std;
#define ll long long int
int main()
{
ll n,k;
int count=0;
cin>>n>>k;
for(int i=0;i<k;i++)
{
if(n%10!=0){
n=n--;
}
else {
n=n/10;
}
}
cout<<n<<endl;
}

在环路内部执行递减操作后,n的值不变

当用n--减少n时,通过将其分配回

n = n--;

n--;就足够了(已清理代码(:

#include <iostream>
int main()
{
long long n,k;
std::cin >> n >> k;
for(int i = 0; i < k; i++)
{
if (n % 10 != 0) { n--; }
else { n /= 10; }
}
std::cout << n << 'n';
}

输入:15 6

输出:1

和往常一样,赋值和递增/递减应该分别进行,否则将导致undefined behavior。CCD_ 7、CCD_ 8或CCD_。

另请参见

  • 为什么是"使用命名空间std"被认为是不好的做法?

  • 为什么我不应该#include<bits/stdc++.h>?

  • 增量前与增量后

您正在递减N的值,但为其分配旧值。替换:

n=n--;

带有:

n--;

最新更新