求助快哭了。。。

[复制链接]
查看11 | 回复10 | 2021-1-27 06:46:43 | 显示全部楼层 |阅读模式
Description

给出一个正整数(positiveinteger)(不超过10位),从高位开始逐位分割并输出。
Input

测试数据有多行,每行是一个正整数n,不含前导零。
Output

对每个测试输出一行结果:分割后的整数序列,每位数之后跟一个空格。
SampleInput

654321
1
SampleOutput

654321
1


#include
intmain()
{
longinta,n,m,c[10]={0};
while(scanf("%d",&n)!=EOF)
{
m=0;
while(n!=0)
{
c[m]=n%10;
n=n/10;
m++;
}
m--;
while(m>=0)
{
printf("%d",c[m]);
m--;
if(m!=-1)
printf("");
if(m==-1)
printf("\n");
}
}
}
总是不对,本人只会一点点c。。。
分 -->
回复

使用道具 举报

千问 | 2021-1-27 06:46:43 | 显示全部楼层
把读入和输出的格式都改成"%ld",就行了,如下。
#include
intmain()
{
longinta,n,m,c[10]={0};
while(scanf("%ld",&n)!=EOF)
{
m=0;
while(n!=0)
{
c[m]=n%10;
n=n/10;
m++;
}
m--;
while(m>=0)
{
printf("%ld",c[m]);
m--;
if(m!=-1)
printf("");
if(m==-1)
printf("\n");
}
}
}

回复

使用道具 举报

千问 | 2021-1-27 06:46:43 | 显示全部楼层
十位整数你用int就够了。
回复

使用道具 举报

千问 | 2021-1-27 06:46:43 | 显示全部楼层
另外你的代码有点冗余。
模10的时候你可以用数组的末端填充。
输出时由低到高由非零位开始输出即可。
回复

使用道具 举报

千问 | 2021-1-27 06:46:43 | 显示全部楼层
#1怎么回单独一个人的回复啊,还有能顺便优化一下代码吗
回复

使用道具 举报

千问 | 2021-1-27 06:46:43 | 显示全部楼层
10位整数用uint也不可能,只能用longlong,这类型用cin/cout比较方便
voidoutput(longlongn)
{
if(!n)return;
output(n/10);
cout>n){
output(n);
cout
回复

使用道具 举报

千问 | 2021-1-27 06:46:43 | 显示全部楼层
这都是什么意思。。。

回复

使用道具 举报

千问 | 2021-1-27 06:46:43 | 显示全部楼层
能给注释吗....
回复

使用道具 举报

千问 | 2021-1-27 06:46:43 | 显示全部楼层
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
单步调试和设断点调试(VSIDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。

回复

使用道具 举报

千问 | 2021-1-27 06:46:43 | 显示全部楼层
直接按字符串读进来,输出的时候输出一个字符加一个空格。
10位整数的话长度11的字符数组就够了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行