lin折腾 发表于 2020-7-23 15:27:46

新手求教 关于c语言课后作业 S1E8:字符和字符串的小问题

刚刚开始学c语言 课后作业遇到了点问题 希望大神们来教一下{:10_256:}
#include <stdio.h>

int main()
{
      char name;
      float height, weight;

      printf("请输入您的姓名:");
      scanf("%s", name);

      printf("请输入您的身高(cm):");
      scanf("%f", &height);

      printf("请输入您的体重(kg):");
      scanf("%f", &weight);

      printf("========== 正在为您转换 ==========\n");

      height = height / 2.54; // 厘米转换为英寸
      weight = weight / 0.453; // 公斤转换为磅

      printf("%s的身高是%.2f(in),体重是%.2f(lb)。\n", name, height, weight);

      return 0;
}



为什么 char name 后面要加 具体是什么作用呢?
以及 scanf("%s",name) 那里 为什么 name 前面没有加‘&’ 这个符号 而下面的 height 和 weight 前面有& 是否这个符号是可有可无的

xiaosi4081 发表于 2020-7-23 15:29:19

本帖最后由 xiaosi4081 于 2020-7-23 15:38 编辑

1:256就是数组的大小,表示可以存放255个字符(不包括\0)
2:在scanf这里,数组是不用加&号的,因为数组本身就是一个指针(你现在可能还没学到指针,指针就是一个存储地址)

求最佳{:10_254:}

qiuyouzhi 发表于 2020-7-23 15:32:10

1,char name是一个字符数组,256代表这个数组的大小。
数组你可以想象成一列火车,可以自定义大小,每个车厢存放一个乘客(元素)。
2,因为数组名就是一个地址,所以不需要取址运算(&)。

永恒的蓝色梦想 发表于 2020-7-23 15:35:15

3L 正解

sunrise085 发表于 2020-7-23 15:37:27

1、char name是定义了一个字符数组,256是数组的长度,可以存放256个字符,存放字符串的话,不建议超过255个,因为后面需要有一个单元存放字符串结束符'\0'
2、scanf后面需要给出一个地址,数组名本身就是地址所以不需要&符号,对于weight和height是一般变量,需要用&指出其地址
页: [1]
查看完整版本: 新手求教 关于c语言课后作业 S1E8:字符和字符串的小问题