#include
#include
#include
#include
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;
}
该回答引用GPTᴼᴾᴱᴺᴬᴵ
该代码有多处语法错误和拼写错误,但最引人注目的是 Lenhgth(); 这一行,因为其中有一个中文分号 “;”,而 C 语言中并没有中文分号。建议将这行代码中的中文分号替换为英文分号 “;”,即 Lenhgth();。
·
此外,该代码中还有一些可能导致运行错误的细节问题,如 scanf("%s",&a) 可能会导致缓冲区溢出,应该使用 scanf("%s",a) 来避免这个问题。此外,为了避免未定义行为,建议将 mm、cm、dm、m 这些变量的类型改为 char,或者直接使用 char 类型的变量。
计算公式有错误,比如输入 5, 选择 4.厘米转化,想要转化为 m ,输出 :5.000000 cm=500.000000 m 这明显计算错误,其他的换算也有错误,建议再仔细梳理下计算公式的代码,该用除的用除,该用乘法的用乘法。其他一些错误已做修改,改动处见注释,供参考:
#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); //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); //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); //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); //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); //scanf("%s", &a); 修改
if (strcmp(a, "in") == 0) n = q / 3.937; //n = m / 3.937;修改
else if (strcmp(a, "ft") == 0) n = q / 0.328;//n = m / 0.328;修改
else if (strcmp(a, "mm") == 0) n = q / 100; //n = m / 100; 修改
else if (strcmp(a, "cm") == 0) n = q / 10; //n = m / 10; 修改
else if (strcmp(a, "dm") == 0) n = q; //n = m; 修改
else if (strcmp(a, "m") == 0) n = q * 10; //n = m * 10; 修改
printf("%lf dm=%lf %s", q, n, a); //printf("%lf dm=%lf %s", m, n, a);修改
break;
case 6://m
printf("输入想要转化成的单位:\n");
scanf("%s", a); //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;
}