清如许 发表于 2022-10-4 10:59:25

大佬们看看,为啥我这个程序运行一行就结束了啊啊啊啊

本帖最后由 清如许 于 2022-10-4 11:01 编辑

#include <stdio.h>
int main()
{
        char name;
        int length,weight;
        double foreign_length,foreign_weight;
        foreign_length=length*0.3937;
        foreign_weight=weight*2.2046;

        printf("-----您好,欢迎使用能转化系统!------\n");//运行到这里就结束力。。。。555555
        printf("请输入以下信息:\n");

        printf("姓名:");
        scanf("%s\n",name);

        printf("身高:");
        scanf("%d\n",&length);

        printf("体重:\n");
        scanf("%d\n",&weight);

        printf("-----请稍后,正在进行转化-----\n");

        printf("你的身高转化成功:%.3f\n",foreign_length);
        printf("你的体重转化成功:%.3f\n",foreign_weight);
       
        return 0;
}

清如许 发表于 2022-10-4 11:00:26

还有一个问题,我想用scanf输入一个中文名,要咋整啊?char的空间是不是不够啊,请教各位了

Twilight6 发表于 2022-10-4 11:01:30



scanf 中去掉 \n 试试看:

#include <stdio.h>
int main()
{
      char name;
      int length,weight;
      double foreign_length, foreign_weight;
      foreign_length = length * 0.3937;
      foreign_weight = weight * 2.2046;
      printf("-----您好,欢迎使用能转化系统!------\n");
      printf("请输入以下信息:\n");
      printf("姓名:");
      scanf("%s", name);
      printf("身高:");
      scanf("%d", &length);
      printf("体重:\n");
      scanf("%d", &weight);
      printf("-----请稍后,正在进行转化-----\n");
      printf("你的身高转化成功:%.3f\n", foreign_length);
      printf("你的体重转化成功:%.3f\n", foreign_weight);

      return 0;
}

jackz007 发表于 2022-10-4 11:06:42

本帖最后由 jackz007 于 2022-10-4 11:09 编辑

      char name ;// name 要定义成数组
      scanf("%d" , &length) ;   // "%d" 后面不要加 '\n',所有的 scanf() 都有同样的问题
      name 的存储空间足够大,中文字符随便输

清如许 发表于 2022-10-4 11:08:47

Twilight6 发表于 2022-10-4 11:01
scanf 中去掉 \n 试试看:

不行哇大佬,还是输入一行数据就结束了55555

清如许 发表于 2022-10-4 11:11:26

jackz007 发表于 2022-10-4 11:06
name 的存储空间足够大,中文字符随便输

意思是不同的变量名存储空间不一样吗?

jackz007 发表于 2022-10-4 11:13:21

本帖最后由 jackz007 于 2022-10-4 11:14 编辑

清如许 发表于 2022-10-4 11:11
意思是不同的变量名存储空间不一样吗?

         变量名和存储内容毫无关系,和存储空间的大小有关系。
         Windows 下一个西文字符占用 1 个 char,一个中文字符占用 2 个 char,Linux 下一个西文字符占用 1 个 char,一个中文字符占用 3 个 char。

临时号 发表于 2022-10-4 11:14:54

清如许 发表于 2022-10-4 11:11
意思是不同的变量名存储空间不一样吗?

char是字符,不是字符串

临时号 发表于 2022-10-4 11:20:26

清如许 发表于 2022-10-4 11:11
意思是不同的变量名存储空间不一样吗?

在中文版Windows系统中,使用的编码是ANSI,也就是GBK编码,在GBK编码中,一个中文字符占2个字节,256字节够你存入127个中文字符
在Linux中,使用的是utf-8编码,在utf-8编码中,一个中文字符占3个字节,256字节够你存入85个中文字符

清如许 发表于 2022-10-4 11:23:27

临时号 发表于 2022-10-4 11:20
在中文版Windows系统中,使用的编码是ANSI,也就是GBK编码,在GBK编码中,一个中文字符占2个字节,256字节够你 ...

哦哦,谢谢大佬

清如许 发表于 2022-10-4 11:23:59

jackz007 发表于 2022-10-4 11:13
变量名和存储内容毫无关系,和存储空间的大小有关系。
         Windows 下一个西文字符占用 ...

哦哦,谢谢大佬

清如许 发表于 2022-10-4 11:25:04

jackz007 发表于 2022-10-4 11:06
name 的存储空间足够大,中文字符随便输

大佬,去掉\n也不行啊,只能运行一行。。。。。
页: [1]
查看完整版本: 大佬们看看,为啥我这个程序运行一行就结束了啊啊啊啊