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值,没有加,输出时转化为对应数字字符,自然是数字
页: 1 2 [3]
查看完整版本: 字符串结果输出异常