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;
}
baige
发表于 2020-8-4 16:19:09
本帖最后由 baige 于 2020-8-4 16:25 编辑
ggsdddup 发表于 2020-8-4 16:01
#include
首先字符数组存放的是字符,scanf()里用%c来输入的字符,并且每一个都是字符,而不是写成数字, 当判断是也不是 >=0 <=9 而 是>='0' <='9'
其次,你上面说不能用%s输出,但这是个字符数组,数组里存放的是数字字符'0'-'9' 不是数字0-9,是一个个的字符组成成的字符串,当然可以用%s输出
例如 char str = "12345";
当然可以用%s全部输出
ggsdddup
发表于 2020-8-4 19:01:16
本帖最后由 ggsdddup 于 2020-8-4 19:11 编辑
字符数组是可以放数字的,只要数字的范围不太大
baige
发表于 2020-8-4 19:12:33
本帖最后由 baige 于 2020-8-4 19:20 编辑
ggsdddup 发表于 2020-8-4 19:01
1、字符数组是可以放数字的,只要数字的范围不太大,还有判断的时候加不加单引号我感觉没什么用,(可能是 ...
你去看一下输出
#include <stdio.h>
int main()
{
char str = "0123456789";
for(int i = 0; i < 10; ++i)
printf("%d : %d\n",i,str);
return 0;
}
对于字符的取值范围0-255,每一个有都对应的一个字符,数字存进去,只是把数字当成一个个字符,
感觉你很想一个初学者
https://fishc.com.cn/forum.php?mod=viewthread&tid=41199&highlight=ascii
你也可以试着运行你的程序看会输出什么,无论你输入什么,你的输出都只会是:( 结果是:)()里面的
ggsdddup
发表于 2020-8-4 19:20:56
baige 发表于 2020-8-4 19:12
你去看一下输出
对于字符的取值范围0-255,每一个有都对应的一个字符,数字存进去,只是把数字当成一个 ...
牛皮
baige
发表于 2020-8-4 19:21:45
本帖最后由 baige 于 2020-8-4 19:23 编辑
ggsdddup 发表于 2020-8-4 19:20
牛皮
推荐你去看一下字符数组
ggsdddup
发表于 2020-8-4 19:29:33
本帖最后由 ggsdddup 于 2020-8-4 19:31 编辑
char name={10,20,5,3};
printf("%d\n", name);
那这个数组里边的不是字符啊
122Ml
发表于 2020-8-5 10:40:43
ggsdddup 发表于 2020-8-4 19:29
char name={10,20,5,3};
printf("%d\n", name);
那这个数组里边的不是字符啊
emmmm,有点听不懂,但还是随便说下我的见解:
输入10,20,5,3都不是字符,转化为ASCII值,没有加,输出时转化为对应数字字符,自然是数字