Wdn258369 2023-03-07 14:21 采纳率: 75%
浏览 38
已结题

c语言长度转换报错是什么原因呢


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

void LengthMenu() {       //排序子菜单

    printf("****************************************\n");
    printf("*\t\t1.英寸转化\t\t*\n");
    printf("*\t\t2.英尺转化 \t\t*\n");
    printf("*\t\t3.毫米转化 \t\t*\n");
    printf("*\t\t4.厘米转化 \t\t*\n");
    printf("*\t\t5.分米转化 \t\t*\n");
    printf("*\t\t6.米转化 \t\t*\n");
    printf("*****************************************\n");
}

void Lenhgth()
{
double q,n;
 char in,ft,mm,cm,dm,m;
 char a[6];
 int i;
 printf("请输入要算的数:\n");
 scanf("%lf",&q);
 printf("请输入您的选择:\n");
 scanf("%d",&i);

 switch(i)
 {
  case 1://in
    printf("输入想要转化成的单位:\n");
    scanf("%s",&a);
    if(strcmp(a,"in")==0) n=q;
    else if(strcmp(a,"ft")==0) n=q*12;
    else if(strcmp(a,"mm")==0) n=q*0.0394;
    else if(strcmp(a,"cm")==0) n=q*0.394;
    else if(strcmp(a,"dm")==0) n=q*3.937;
    else if(strcmp(a,"m")==0)  n=q*39.37;
    printf("%lf in=%lf %s",q,n,a);
    break;
  case 2://ft
    printf("输入想要转化成的单位:\n");
    scanf("%s",&a);
    if(strcmp(a,"in")==0) n=q/12;
    else if(strcmp(a,"ft")==0) n=q;
    else if(strcmp(a,"mm")==0) n=q*0.00328;
    else if(strcmp(a,"cm")==0) n=q*0.0328;
    else if(strcmp(a,"dm")==0)  n=q*0.328;
    else if(strcmp(a,"m")==0)  n=q*3.28;
    printf("%lf ft=%lf %s",q,n,a);
    break;
  case 3://mm
    printf("输入想要转化成的单位:\n");
    scanf("%s",&a);
    if(strcmp(a,"in")==0)  n=q/0.0394;
    else if(strcmp(a,"ft")==0) n=q/0.00328;
    else if(strcmp(a,"mm")==0) n=q;
    else if(strcmp(a,"cm")==0) n=q*10;
    else if(strcmp(a,"dm")==0) n=q*100;
    else if(strcmp(a,"m")==0)  n=q*1000;
    printf("%lf mm=%lf %s",q,n,a);
    break;
  case 4://cm
    printf("输入想要转化成的单位:\n");
    scanf("%s",&a);
    if(strcmp(a,"in")==0)  n=q/0.394;
    else if(strcmp(a,"ft")==0) n=q/0.0328;
    else if(strcmp(a,"mm")==0) n=q/10;
    else if(strcmp(a,"cm")==0) n=q;
    else if(strcmp(a,"dm")==0) n=q*10;
    else if(strcmp(a,"m")==0)  n=q*100;
    printf("%lf cm=%lf %s",q,n,a);
    break;
  case 5://dm
    printf("输入想要转化成的单位:\n");
    scanf("%s",&a);
    if(strcmp(a,"in")==0) n=m/3.937;
    else if(strcmp(a,"ft")==0) n=m/0.328;
    else if(strcmp(a,"mm")==0) n=m/100;
    else if(strcmp(a,"cm")==0) n=m/10;
    else if(strcmp(a,"dm")==0) n=m;
    else if(strcmp(a,"m")==0)  n=m*10;
    printf("%lf dm=%lf %s",m,n,a);
    break;
  case 6://m
    printf("输入想要转化成的单位:\n");
    scanf("%s",&a);
    if(strcmp(a,"in")==0) n=q/39.37;
    else if(strcmp(a,"ft")==0) n=q/3.28;
    else if(strcmp(a,"mm")==0) n=q/1000;
    else if(strcmp(a,"cm")==0) n=q/100;
    else if(strcmp(a,"dm")==0) n=q/10;
    else if(strcmp(a,"m")==0)  n=q;
    printf("%lf m=%lf %s",q,n,a);
    break;
  default:
    printf("输入错误请重新输入");
}

}




int main()
{

LengthMenu();


Lenhgth();
return 0;

}

img

  • 写回答

3条回答 默认 最新

  • MarkHan_ 2023-03-07 14:26
    关注

    该回答引用GPTᴼᴾᴱᴺᴬᴵ
    该代码有多处语法错误和拼写错误,但最引人注目的是 Lenhgth(); 这一行,因为其中有一个中文分号 “;”,而 C 语言中并没有中文分号。建议将这行代码中的中文分号替换为英文分号 “;”,即 Lenhgth();。
    ·
    此外,该代码中还有一些可能导致运行错误的细节问题,如 scanf("%s",&a) 可能会导致缓冲区溢出,应该使用 scanf("%s",a) 来避免这个问题。此外,为了避免未定义行为,建议将 mm、cm、dm、m 这些变量的类型改为 char,或者直接使用 char 类型的变量。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月18日
  • 已采纳回答 3月10日
  • 创建了问题 3月7日

悬赏问题

  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法