求解答S1E8作业中的疑惑
1.此段代码中的fah变量,如果声明为int类型,最终答案为7.00(小数部分全是0);如果按小甲鱼老师的答案,声明为float类型,则能得到正确答案,小数部分也不是0了。请问这是为啥?#include <stdio.h>
int main()
{
int fah;
float cel;
printf("请输入华氏度:");
scanf("%d", &fah);
cel = (fah - 32) * 5 / 9;
printf("转换为摄氏度是:%.2f\n", cel);
return 0;
}
2.
(1)此段代码中,请问变量a的数量为何要设置为256?
(2)而且char类型的取值范围最高不是255吗?
(3)小甲鱼老师说,不写数量,编译器会自动计算数量,可是我自己试了char a[];这种写法会报错,char a[]="";则会乱码,请问是为什么呀?
#include <stdio.h>
int main()
{
char a;
int h;
float m, in;
double lb;
printf("请输入您的姓名:");
scanf("%s", &a);
printf("请输入您的身高(cm):");
scanf("%d", &h);
printf("请输入您的体重(kg):");
scanf("%f", &m);
printf("========== 正在为您转换 ==========\n");
in = h / 2.54;
lb = m / 0.453;
printf("%s的身高是%.2f(in),体重是%.2f(lb)\n", a, in, lb);
return 0;
}
第二个问题:
(1)a是一个字符数组,它可以储存256个英文字符,储存长度为255的字符串
(2)char类型的取值是255,但这里的意思是创建一个数组a,它可以放256个char类型的值
(3)小甲鱼老师的意思是
#include <stdio.h>
int main()
{
char a[] = "Hello";
printf("%s\n",a);
return 0;
}
这样写是没问题的,因为他会计算"Hello"的长度,但你这里char a[];写既没有指定储存的字符串,又没有指定长度,当然会报错,至于char a[] = "";的意思等同于char a[] = {'\0'};也就是说,a的数量为1,然而你后面让这个数量为1的字符数组去装一个名字,当然会乱码 第一个问题:小甲鱼说了,整型/整型,结果仍为整型,会舍弃小数部分,当你把其中一个操作数变为浮点型,就返回浮点型,计算机这么做是为了保证精度。
所以你一种是把fah变量改浮点,另一种是把9改成9.0即可#include <stdio.h>
int main()
{
int fah;
float cel;
printf("请输入华氏度:");
scanf("%d", &fah);
cel = (fah - 32) * 5 / 9.0;
printf("转换为摄氏度是:%.2f\n", cel);
return 0;
}
本帖最后由 并非我董事 于 2022-8-2 17:42 编辑
1.
高转低会损失精度,这里出现了自动类型转换
float转int,比如 float a = 3.14;
int a;
b = a;
printf("%d\n",a);
此时会输出结果3
第2个问题,是一个数组,就是说,这个数组存放了256个相同类型(char)的变量,为了能够保证输入的所有字符都被储存。
第二小问我没看懂
第三小问,是因为你必须将数组全部元素初始化,才可以让计算机帮你计算元素个数,数组的元素个数必须在他所处的那行代码出就确定。
char a[]=" " 这个语句应该是只将第一个元素初始化为空格,然后就是只有一个元素。所以你以后就越界访问了{:10_266:} 临时号 发表于 2022-8-2 17:48
第二个问题:
(1)a是一个字符数组,它可以储存256个英文字符,储存长度为255的字符串
(2)char类型的取值是25 ...
你的第1点,我试了下输入汉字也没问题阿?用的DEV-C++ 额外减小 发表于 2022-8-2 18:26
你的第1点,我试了下输入汉字也没问题阿?用的DEV-C++
输入汉字是没问题啊,我只是说可以储存256个英文字符,因为如果是中文字符的话占2个字节,如果储存中文字符的话只能储存128个中文字符,我这么说只是想严谨一点 临时号 发表于 2022-8-2 17:18
第二个问题:
(1)a是一个字符数组,它可以储存256个英文字符,储存长度为255的字符串
(2)char类型的取值是25 ...
也就是说,a这个数组,存放了256个char类型的变量,而每个char变量的取值范围是255? 脱碳葡萄糖 发表于 2022-8-2 20:03
也就是说,a这个数组,存放了256个char类型的变量,而每个char变量的取值范围是255?
是的,准确的说是256个char类型的数据,不是变量 临时号 发表于 2022-8-2 18:30
输入汉字是没问题啊,我只是说可以储存256个英文字符,因为如果是中文字符的话占2个字节,如果储存中文字符 ...
3q
页:
[1]