baige
发表于 2020-8-4 10:48:17
liuzhengyuan 发表于 2020-8-4 10:45
我在楼上修改了一下……
你的程序scanf()里多了个\n
liuzhengyuan
发表于 2020-8-4 10:48:51
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;
}
baige
发表于 2020-8-4 10:49:38
122Ml 发表于 2020-8-4 10:47
一次性程序,输入1,直接结束循环
是要让他过滤空格和换行吗
liuzhengyuan
发表于 2020-8-4 10:49:42
baige 发表于 2020-8-4 10:48
你的程序scanf()里多了个\n
就是要多 \n,不然会多读
baige
发表于 2020-8-4 10:50:41
liuzhengyuan 发表于 2020-8-4 10:49
就是要多 \n,不然会多读
scanf()里面\n是错误的要让他换行结束多加一个\
122Ml
发表于 2020-8-4 10:51:23
{:10_266:}{:10_275:}程序能用,就是...
请输入合法的数字:
2
3
请输入合法的数字:
4
请输入合法的数字:
5
请输入合法的数字:
i
请输入合法的数字:
7
结果是:2345
--------------------------------
Process exited after 7.376 seconds with return value 0
请按任意键继续. . .
baige
发表于 2020-8-4 10:52:02
#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;
}
liuzhengyuan
发表于 2020-8-4 10:54:07
baige 发表于 2020-8-4 10:50
scanf()里面\n是错误的要让他换行结束多加一个\
我 VS 调试过了,使用 scanf 输入时会把 \n 也读进去,加个 \n 让它和用户输入的重叠
122Ml
发表于 2020-8-4 10:54:22
baige 发表于 2020-8-4 10:52
{:10_275:}可以运行了
baige
发表于 2020-8-4 10:55:04
122Ml 发表于 2020-8-4 10:54
可以运行了
只有遇到不是数字,空格,tab,和换行或字符数组已满时程序才会结束循环
巴巴鲁
发表于 2020-8-4 10:55:22
本帖最后由 巴巴鲁 于 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的数,如果输入两位整数,结果就不对了,不知道符不符合
122Ml
发表于 2020-8-4 10:57:56
巴巴鲁 发表于 2020-8-4 10:55
不过输入的只能是0~9的数,如果输入两位整数,结果就不对了,不知道符不符合
{:10_275:}233完美,0到9够用了
永恒的蓝色梦想
发表于 2020-8-4 10:58:21
122Ml 发表于 2020-8-4 10:39
输入整数存储到字符串中,遇到字符结束循环。只存储整数
您描述的可真草率
liuzhengyuan
发表于 2020-8-4 10:58:57
baige 发表于 2020-8-4 10:55
只有遇到不是数字,空格,tab,和换行或字符数组已满时程序才会结束循环
这个方法厉害{:10_275:}
122Ml
发表于 2020-8-4 10:59:04
永恒的蓝色梦想 发表于 2020-8-4 10:58
您描述的可真草率
......
122Ml
发表于 2020-8-4 10:59:50
永恒的蓝色梦想 发表于 2020-8-4 10:58
您描述的可真草率
下次会注意的
巴巴鲁
发表于 2020-8-4 11:03:26
122Ml 发表于 2020-8-4 10:57
233完美,0到9够用了
如果可以,设个最佳吧{:10_256:}
巴巴鲁
发表于 2020-8-4 11:06:37
122Ml 发表于 2020-8-4 10:57
233完美,0到9够用了
还是不太对,循环那里i<49,要给'\0'留一个位置,我改一下{:10_264:}
ggsdddup
发表于 2020-8-4 15:44:55
数组中如果都是数字,是不可能通过%s输出到屏幕的,只能通过循环将数组中的每个元素显示到屏幕中。
ggsdddup
发表于 2020-8-4 16:01:03
#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;
}