c语言问题 thanks
- 提问者网友:兔牙战士
- 2021-04-29 15:09
编写一个程序,输入有五个数字的数值,把这个数值分解为单个数字,然后打印出每一个数字(每个数字之间用一个空格分开,最后一个数字结尾没有空格)。例如用户输入了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
{
printf("Wrong input,try again!"); //输出提示信息
exit(0);
}
}
if (i=6)
{
for (j=1;j<=5;j++)
{
printf("%c ",a[j]); //打印正确的输入
}
}
return 0;
}
这个程序不能讲123 45这类输入判定为合法输入···
我能力有限 不知道如何改了 请大侠帮忙 先谢谢了 急
- 五星知识达人网友:山有枢
- 2021-04-29 16:28
输入的时候有问题:
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++)
{
printf(" %c",a[j]); //打印正确的输入
}
printf("\n");
}
return 0;
}