c语言问题续

来源:百度知道 编辑:UC知道 时间:2024/06/14 19:48:32
Title:数值分解

编写一个程序,输入有五个数字的数值,把这个数值分解为单个数字,然后打印出每一个数字(每个数字之间用一个空格分开,最后一个数字结尾没有空格)。例如用户输入了12345,程序打印结果为: 1 2 3 4 5

输入情况的处理:

1)用户中规中矩的输入任意五位数字都能把它按照要求输出;

2)用户的无效输入,程序应该给出友好的提出 或者 处理

请回答者看好如下提示
123 45 这是合法输入(数字中有空格)
123\n45 这是合法输入(数字钟有回车)
12ab4 这是非法输入(凡是带有其他非数字非空格和回车时,都是非法输入)
我的程序如下
#include <stdio.h>
#include <stdlib.h>

int main()
{
char a[10000]; //定义一个数组存放五个输入的字符

int i,j;
for (i=1;i<=5;i++)
{
scanf("%c",&a[i]); //循环输入五个字符
}
for (i=1;i<=5;i++)
{
if (a[i]>='0'&&a[i]<='9') //判断输入是否合法
{

continue;
}

else
{

输入的时候有问题:
for (i=1;i<=5;i++)
{
scanf("%c",&a[i]); //循环输入五个字符
}

上面输入的时候如果有空格和回车,也会把空格和回车输入进去,按题目意思,应该把空格和回车过滤掉,可以把scanf("%c",&a[i]); 改为scanf("\n%c",&a[i]); 这样就可以滤掉空格和回车。
程序修改如下:
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
char a[10000]; //定义一个数组存放五个输入的字符

int i,j;
for (i=1;i<=5;i++)
scanf("\n%c",&a[i]); //循环输入五个字符
for (i=1;i<=5;i++)
{
if (a[i]>='0'&&a[i]<='9') //判断输入是否合法
continue;
else
{
printf("Wrong input,try again!\n"); //输出提示信息
exit(0);
}
}
if (i=6)
{
for (j=1;j<=5;j++)