C++将一个输入位数不确定的正整数按三位分节格式输出,求改

#include<iostream>usingnamespacestd;voidfenjie(char*p,int&n,int&i){i=1;while(n){if(i%... #include<iostream>using namespace std;void fenjie(char *p,int &n,int &i){ i=1; while(n) { if(i%4!=0) { *p=n%10+'0'; n=n/10; } else *p=','; p++; i++; } do { p--; i--; } while(i>1); }int main(){ int n,j=0,i; char a[81]; cin>>n; fenjie(a,n,i); while(n!=0) { cout<<a[j]; j++; } cout<<endl; return 0;}

以上程序运行不出结果 正确结果应为7,654,321

ps 若main函数为以下形式结果如下
int main(){ int n,j=0,i; char a[81]; cin>>n; fenjie(a,n,i); cout<<a; cout<<endl; return 0;}
结果

求解释原因并改正
展开
 我来答
匿名用户
2014-12-16
展开全部
你把分解改成如下部分
void fenjie(char *p,int &n,int &i)
{
//防止输入数据为0
if(n==0)
{
p[0]='0';
p[1]='\0';
return;
}

i=1;
while(n)
{
if(i%4!=0)
{
p[i-1]=n%10+'0';
n=n/10;
}
else p[i-1]=',';
i++;

}

p[i-1]='\0'; // 字符串结束
// 数据重排
char c;
int j=0;
do
{
i--;
c=p[i-1];
p[i-1]=p[j];
p[j]=c;
j++;
}
while(i>j);
}
输出直接用
cout<<a<<endl;
就可以了

cin>>n;决定了你这个输入数据最大值为0xFFFFFFFF
fenjie(a,n,i);执行完以后 n 的值被改为0了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式