鱼C论坛

 找回密码
 立即注册
查看: 2432|回复: 7

[已解决]s1e8求解

[复制链接]
发表于 2019-4-7 23:27:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 就是要努力呀 于 2019-4-7 23:29 编辑

求解为什么会有乱码,而且算出来的 high和weight也不对
  1. #include<stdio.h>

  2. int main()
  3. {
  4.        
  5.         printf("名字:");
  6.         unsigned char name[] = {scanf("%s",&name),'\0'};
  7.        
  8.         printf("身高(cm):");
  9.         float high = {scanf("%f",&high)};
  10.        
  11.         printf("体重(kg):");
  12.         float weight = {scanf("%f",&weight)};
  13.        
  14.         printf("以下是转换结果\n");
  15.        
  16.         weight = weight / 0.453;
  17.         high = high / 2.54;
  18.        
  19.         printf("%s的身高是%f(in),体重是%f(lb)。\n", name, high, weight);
  20.        
  21.         return 0;
  22. }
复制代码
最佳答案
2019-4-7 23:33:30
  1. unsigned char name[] = {scanf("%s",&name),'\0'}
复制代码
这是什么神仙用法
scanf的返回值是正确输入的参数的个数,别想当然
  1.   unsigned char name[128];
  2.   scanf("%s",&name);
复制代码


后面几项一样的改
QQ截图20190407232429.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-4-7 23:33:30 | 显示全部楼层    本楼为最佳答案   
  1. unsigned char name[] = {scanf("%s",&name),'\0'}
复制代码
这是什么神仙用法
scanf的返回值是正确输入的参数的个数,别想当然
  1.   unsigned char name[128];
  2.   scanf("%s",&name);
复制代码


后面几项一样的改
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-7 23:36:09 | 显示全部楼层
Croper 发表于 2019-4-7 23:33
这是什么神仙用法
scanf的返回值是正确输入的参数的个数,别想当然

scanf不能这样用呀。。,谢谢大佬
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-7 23:37:05 | 显示全部楼层
Croper 发表于 2019-4-7 23:33
这是什么神仙用法
scanf的返回值是正确输入的参数的个数,别想当然

为什么name【】要加128也
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-7 23:42:22 | 显示全部楼层
就是要努力呀 发表于 2019-4-7 23:37
为什么name【】要加128也


申请足够大的内存空间而已。。
128个字节可以装63个汉字,储存名字应该是足够了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-7 23:44:39 | 显示全部楼层
Croper 发表于 2019-4-7 23:42
申请足够大的内存空间而已。。
128个字节可以装63个汉字,储存名字应该是足够了

但是不是【】为空的话系统会自动读取有多少字符吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-7 23:53:02 | 显示全部楼层
[]是指让编译器根据初始化的值决定数组的大小,
在使用[]时必须在声明的时候同时初始化

  1. int a[]={1,2,3,4,5};
复制代码

那么生成的数组大小就是5
  1. int a[5]={1,2,3,4,5};
复制代码
效果一样

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-8 09:03:18 From FishC Mobile | 显示全部楼层
哦懂了谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-6 15:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表