C++ 此给定代码应将给定的数字转换为最大可能的数字,方法是将适当的数字替换为9。此代码不起作用
C++ 此给定代码应将给定的数字转换为最大可能的数字,方法是将适当的数字替换为9。此代码不起作用,c++,C++,x和k分别是要转换的数字和要替换的数字。 函数int dig计算数字的位数 #include<iostream> using namespace std; int dig(long int n) { int m=0; while(n>0) { n=n/10; m++; } return m; } int main(void){ long long int x,f=1;//here x sho
x
和k
分别是要转换的数字和要替换的数字。
函数int dig
计算数字的位数
#include<iostream>
using namespace std;
int dig(long int n)
{
int m=0;
while(n>0)
{
n=n/10;
m++;
}
return m;
}
int main(void){
long long int x,f=1;//here x should take an input upto 18 digits.
int b=1,k,l,c,j=1,i,r;
cin>>x;
cin>>k;
l=dig(x);
c=l-k;
for(i=1;i<=c;i++)
{
f=f*10;
}
r=(x%f);
for(i=1;i<=k;i++)
{
b=b*10;
}
j=(b-1)*f;
j=j+r;
cout<<j;
return 0;
}
#包括
使用名称空间std;
int-dig(长int-n)
{
int m=0;
而(n>0)
{
n=n/10;
m++;
}
返回m;
}
内部主(空){
long-long-int x,f=1;//此处x应接受最多18位的输入。
int b=1,k,l,c,j=1,i,r;
cin>>x;
cin>>k;
l=dig(x);
c=l-k;
对于(i=1;i读取代码,您的意图似乎是将(最多18位数字)x的前k位替换为9,从而得到结果的大数字?即输入12345678和4应给出99995678
如果是,请继续阅读。如果不是,请忽略此答案
代码中的逻辑是正确的,但由于精度损失,它无法处理18位数字;您的一些变量需要更改为长整数以支持18位数字。请注意编译器警告
此外,代码似乎不能正确处理x的负值,但这很容易修复(请参阅mul的使用)。它不能防止k太大,但这也是一个容易修复的问题
这里有一个修正版本:输入1234567889012345678和4得到9999567789012345678。希望这有帮助
#include<iostream>
using namespace std;
int dig(long long int n)
{
int m = 0;
while (n>0)
{
n = n / 10;
m++;
}
return m;
}
int main(void) {
long long int x, f = 1;//here x should take an input upto 18 digits.
int b = 1, k, l, c;
long long int j = 1;
int i;
long long int r;
cin >> x;
cin >> k;
int mul = (x < 0) ? -1 : 1;
x *= mul;
l = dig(x);
if (k > l)
{
k = l;
}
c = l - k;
for (i = 1; i <= c; i++)
{
f = f * 10;
}
r = (x%f);
for (i = 1; i <= k; i++)
{
b = b * 10;
}
j = (b - 1)*f;
j = j + r;
j *= mul;
cout << j << endl;
return 0;
}
#包括
使用名称空间std;
整型挖掘(长整型n)
{
int m=0;
而(n>0)
{
n=n/10;
m++;
}
返回m;
}
内部主(空){
long-long-int x,f=1;//此处x应接受最多18位的输入。
int b=1,k,l,c;
长整型j=1;
int i;
长整型r;
cin>>x;
cin>>k;
int-mul=(x<0)?-1:1;
x*=mul;
l=dig(x);
如果(k>l)
{
k=l;
}
c=l-k;
对于(i=1;i)dig(0)
的结果是什么?函数int-dig(long-int-n)
工作,它返回位数。因此dig(0)将返回1
。我测试了代码,但不确定您想做什么。请您提供更多信息,或者举例说明您到底想做什么。然后回答会更容易。非常感谢。这真的很有帮助!!