2 sinat 29178679 sinat_29178679 于 2015.07.09 15:14 提问

一个数字间加空格问题

#include
main()
{
int num1[4],num2[7],i;
for(i=1;i<=4;i++)
scanf("%d",&num1[i]);
for(i=1;i<=4;i++)
{
num2[2*i-1]=num1[i];
num2[2*i]=' ';
}
for(i=1;i<=7;i++)
printf("%d",num2[i]);
return 0;
}
我自己写的程序如上,比如输入8888,输出是8空格8空格8空格8这样的。程序编译不出错,但是出入四位数后无输出,烦请看下哪里出了错

4个回答

caozhy
caozhy   Ds   Rxr 2015.07.09 15:18
已采纳

还有一种改法就是把scanf的%d修改为%c

caozhy
caozhy 回复Dennisqj: 你输出的是数字
2 年多之前 回复
sinat_29178679
sinat_29178679 谢谢,意思应该是说必须把它看成字符才能在两个字符间加上空格,对吧
2 年多之前 回复
caozhy
caozhy 回复sinat_29178679: 一个是数字,一个是字符。字符是数字的ascii码,而不真的是值。
2 年多之前 回复
sinat_29178679
sinat_29178679 果然可以了,不过这是为什么啊
2 年多之前 回复
caozhy
caozhy   Ds   Rxr 2015.07.09 15:15

num2[2*i-1]=num1[i];
->
num2[2*i-1]=(char)(num1[i] + '0');

frank_20080215
frank_20080215   2015.07.09 15:43

把scanf的%d修改为%c,请采纳caozhy建议

John_ToString
John_ToString   2015.07.09 20:32

#include
main()
{
int num1[4],num2[7],i;
for(i=1;i<=4;i++)
scanf("%d",&num1[i]);
for(i=1;i<=4;i++)
{
num2[2*i-1]=num1[i];
num2[2*i]=' ';
}
for(i=1;i<=7;i++)
printf("%d",num2[i]);
return 0;
}
我自己写的程序如上,比如输入8888,输出是8空格8空格8空格8这样的。程序编译不出错,但是出入四位数后无输出,烦请看下哪里出了错

当然不仅仅是修改输出格式的问题,因为这不是重点,你需要学会的是编程风格的形成,而不是一个小问题的解决。
粗看了一下你的代码,明显的错误就是数组越界问题,这样子好的时候会产生意外的结果,坏的时候会程序崩溃,所以养成一个好的编程习惯很重要。

Csdn user default icon
上传中...
上传图片
插入图片