liuzhengyuan 发表于 2020-8-4 10:45
我在楼上修改了一下……
你的程序scanf()里多了个\n
122Ml 发表于 2020-8-4 10:47
一次性程序,输入1,直接结束循环
这样呢?
#include <stdio.h>
int main()
{
char name;
int i = 0, temp;
do
{
printf("请输入合法的数字:\n");
scanf("%c\n", &name);
} while (name >= '1' && name <= '9');
name = '\0';
printf("结果是:%s\n", name);
return 0;
}
122Ml 发表于 2020-8-4 10:47
一次性程序,输入1,直接结束循环
是要让他过滤空格和换行吗
baige 发表于 2020-8-4 10:48
你的程序scanf()里多了个\n
就是要多 \n,不然会多读
liuzhengyuan 发表于 2020-8-4 10:49
就是要多 \n,不然会多读
scanf()里面\n是错误的要让他换行结束多加一个\
{:10_266:}{:10_275:}程序能用,就是...
请输入合法的数字:
2
3
请输入合法的数字:
4
请输入合法的数字:
5
请输入合法的数字:
i
请输入合法的数字:
7
结果是:2345
--------------------------------
Process exited after 7.376 seconds with return value 0
请按任意键继续. . .
#include <stdio.h>
int main()
{
char name;
int i=0;
printf("请输入合法的数字:\n");
while(1){
scanf("%c",&name);// name 用%c;
if(name==' '||name=='\t'||name=='\n')continue;
else if(name<'0'||name>'9'||i>=49)break; // 当遇到不是0-9或字符数组已满 退出循环
++i;
}
name = '\0'; // 为数字之后添加字符串结尾'\0'
printf("结果是:%s\n",name);
return 0;
}
baige 发表于 2020-8-4 10:50
scanf()里面\n是错误的要让他换行结束多加一个\
我 VS 调试过了,使用 scanf 输入时会把 \n 也读进去,加个 \n 让它和用户输入的重叠
baige 发表于 2020-8-4 10:52
{:10_275:}可以运行了
122Ml 发表于 2020-8-4 10:54
可以运行了
只有遇到不是数字,空格,tab,和换行或字符数组已满时程序才会结束循环
本帖最后由 巴巴鲁 于 2020-8-4 11:07 编辑
#include <stdio.h>
int main()
{
char name;
int i = 0;
char ch;
for(i= 0; i < 49; i++) // 最多输入49个0~9的数,最后赋值给'\0'
{
printf("请输入合法的整数:\n");
ch = getchar();
getchar(); // 用来缓冲输入的回车
if(ch >= '0' && ch <= '9')
{
name = ch;
}
else
{
break;
}
}
name = '\0';
printf("结果是:%s\n",name);
return 0;
}
不过输入的只能是0~9的数,如果输入两位整数,结果就不对了,不知道符不符合
巴巴鲁 发表于 2020-8-4 10:55
不过输入的只能是0~9的数,如果输入两位整数,结果就不对了,不知道符不符合
{:10_275:}233完美,0到9够用了
122Ml 发表于 2020-8-4 10:39
输入整数存储到字符串中,遇到字符结束循环。只存储整数
您描述的可真草率
baige 发表于 2020-8-4 10:55
只有遇到不是数字,空格,tab,和换行或字符数组已满时程序才会结束循环
这个方法厉害{:10_275:}
永恒的蓝色梦想 发表于 2020-8-4 10:58
您描述的可真草率
......
永恒的蓝色梦想 发表于 2020-8-4 10:58
您描述的可真草率
下次会注意的
122Ml 发表于 2020-8-4 10:57
233完美,0到9够用了
如果可以,设个最佳吧{:10_256:}
122Ml 发表于 2020-8-4 10:57
233完美,0到9够用了
还是不太对,循环那里i<49,要给'\0'留一个位置,我改一下{:10_264:}
数组中如果都是数字,是不可能通过%s输出到屏幕的,只能通过循环将数组中的每个元素显示到屏幕中。
#include <stdio.h>
int main()
{
int i=0;
char name;
printf("请输入合法的数字:\n");
while(scanf("%d", &name)==1 && i<49 && name>=1 && name<=9)
{
printf("请输入合法的数字:\n");
i++;
}
name = '\0';
//打印数组
puts("结果是:");
i=0;
while (name != '\0')
printf("%d ", name);
puts("");
return 0;
}