关于C++的一道题目,跪求大神,师兄师姐解答,学渣感激不尽

由键盘输入一个无符号长整数x,而后输入一个正整数k,求出将x的倒数第k位(从右往左数第k位)的数字删除后形成的结果数newx并输到屏幕上。例如,当输入的x为12345678,k为3,输出的结果newx应为1234578;当输入的x为12345,k为6时,输出的结果newx应为12345(当k值大于x的位数时,结果为x)

以下是我的解答,不过运行结果是错的,求大神指点迷津,感激不尽
#include<iostream.h>
void main()
{
int newx=0,k;
unsigned long x;
cout<<"unsigned long x=";
cin>>x;
cout<<"int k=";
cin>>k;
while(x!=0)
{
int a=x%10,b=1,i=1; //i我代表的是求余次数//
if(i<k)
{
newx=newx+a*b;
b=10*b;
x/=10;
i++;
}
else if(i=k)
{x/=10;
newx=newx+a*b;i++;}
else
b=10*b; x/=10;
newx=newx+a*b;
}
cout<<"newx is "<<newx<<endl;
}

//你的算法不太对,可以借助数组来实现
#include<iostream.h>
#include<math.h>
void main()
{
int newx=0,k,p,j,i=0;
unsigned long x,a;
int b[80];
cout<<"x=";
cin>>x;
cout<<"k=";
cin>>k;
        a=x;p=k;
while(x>9)
{
j=i++;
b[j]=x%10;
x=(x-b[j])/10;
if(x<9)
b[i]=x;
//cout<<b[j];
}
    while(k-1!=0)
{
b[k-1]=b[k-2];
k--;
}
if(p>i+1)
{
cout<<"newx is "<<a<<endl;
}
else
{
for(j=1;j<=i;j++)
{
newx=newx+b[j]*pow(10,j-1);
}
cout<<"newx is "<<newx<<endl;
}
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-08
else if(i=k)
{x/=10;
newx=newx+a*b;i++;}
其中newx=newx+a*b;应当取掉。
第2个回答  2014-03-08
你应该将else if(i==k)好吧 ,你这里写的也是错的 是==,不是=
将else if(i==k)作为第一个条件If(i==k){……}else if(i<k){……}追问

恩,你好。改进了,不过运行结果还是错的 TT

相似回答