简单的C程序帮忙改下

来源:百度知道 编辑:UC知道 时间:2024/06/18 18:40:35
题目是:输入一个4位数字,要求输出这4个数字字符,但每两个字符间空一个空格,如输入1990,应输出1_9_9_0.注(_是空格)
#include<stdio.h>
main()
{char a[10],b[10];
int i,j,n=0;
printf("输入10位以下的数字:\n");
scanf("%s",a);
printf("\n");
i=0;
while(a[i]!='\0')
{n++;
i++;
}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{b[i+j]=a[j];
b[j+i+1]=' ';
}

printf("%s",b);
}
不可以

#include<stdio.h>
main()
{char a[10],b[10];
int i,j=0,n=0;
printf("输入10位以下的数字:\n");
scanf("%s",a);
printf("\n");
i=0;
while(a[i]!='\0')
{n++;
i++;
}
for(i=0;i<n;i=++i);
{b[j]=a[i];
j=++;
b[j]=' ';
j++;
}
printf("%s",b);
}
这样不行吗?

b数组溢出了,
B[30]应该不会有错了

while(a[i]!='\0')
{n++;
i++;
}
这句是要求a[]的长度吧
其实相当于
n=strlen(a);

b数组太小了,容不下你所要表示的数,
至少要b[20]才能满足你的要求.

程序修改如下:
VC编译通过.测试也成功

#include<stdio.h>
main()
{char a[10];
int i;
printf("输入10位以下的数字:\n");
scanf("%s",a);
printf("\n");
for(i=0;i<strlen(a);i++) printf("%c ",a[i]);

}

#include<stdio.h>
void main()
{
char a[10];