问题遇到的现象和发生背景
已知1英尺=0.3048米1码=0.9144米1尺=0.3333米,只用这三个,提示用户在屏幕输入一长度单位(英尺/码/米/尺)允许小数以yc/ma/chi/m结尾将输入长度转为另外三个没输入的长度打印,并保留五位小数,将所有转换过程写成子函数
我的解答思路和尝试过的方法
达到所有的单位互相转换只能用已知1英尺=0.3048米1码=0.9144米1尺=0.3333米这三个,就是不能单纯定一个变量乘一下了
关于C语言长度单位转换的题没想明白咋整的问题,如何解决?(语言-c语言)
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- 这次真没糖 2022-10-21 21:02关注
#include <stdio.h> float arr[4] = {0.3048, 0.9144, 0.3333, 1}; // 单位换算 char danwei[4][6] = {"yc", "ma", "chi", "m"}; int flag = 3; float strTofloat(char str[]) { // 从给定字符串中提取小数,并判断输入的单位 float a; int dotIndex = 0x7f7f7f7f, endNumberFlag = -1; for (int i = 0; str[i]; i++) { if (str[i] == '.') { dotIndex = i; continue; } if (str[i] >= '0' && str[i] <= '9') { // 提取数值 a = a * 10 + str[i] - '0'; } else if (a) { endNumberFlag = i - 1; //数据结束的下标 // 判断输入的单位 for (int j = 0; j < 4; j++) { if (str[i] == danwei[j][0] && str[i + 1] == danwei[j][1]) { flag = j; break; } } } } // 转化为小数 for (int i = dotIndex; i < endNumberFlag; i++) { a /= 10; } // printf("长度:%.5f, 单位:%s\n", a, danwei[flag]); return a; } void convert(float length, int flag) { //给定长度和单位,转换为其他的长度单位 length = length * arr[flag]; // 先转化为米,再由米转化为其他的单位 printf("转换结果:"); for (int i = 0; i < 4; i++) { if (i != flag) { printf("%.5f%s\t",length/arr[i],danwei[i]); } } } int main() { printf("输入一长度单位(英尺/码/米/尺)允许小数以yc/ma/chi/m结尾: "); char str[100]; scanf("%s", str); float length = strTofloat(str); convert(length, flag); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 MATLAB怎么通过柱坐标变换画开口是圆形的旋转抛物面?
- ¥15 寻一个支付宝扫码远程授权登录的软件助手app
- ¥15 解riccati方程组
- ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
- ¥30 用arduino开发esp32控制ps2手柄一直报错
- ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
- ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
- ¥50 树莓派安卓APK系统签名
- ¥65 汇编语言除法溢出问题
- ¥15 Visual Studio问题