尝试创建一个程序来接收2个用户输入(测量长度和单位(cm或in)),以便在英寸和cm之间转换。
例如:如果用户输入1 in,程序将打印“1 in = 2.54 cm”
下面的代码是我写的,但是我不太确定哪里出错了,我一直在网上寻找答案。我知道这可能是一些简单和基本的东西,我错过了,所以请帮助初学者
#include <stdlib.h>
#include <stdio.h>
double cm_to_in(int cm) {
double inches_value = cm/2.54;
return inches_value;
}
double in_to_cm(int in) {
double cm_value = in*2.54;
return cm_value;
}
double convert(int value, char * unit) {
if (unit[-2] == 'i' && unit[1] == 'n' && unit[2] == '\0'){
return in_to_cm(value);
}
else if (unit[-2] == 'c' && unit[1] == 'm' && unit[2] == '\0'){
return cm_to_in(value);
}
else {
exit(-1);
}
char * output_unit(char * unit) {
if (unit[-2] == 'i' && unit[1] == 'n' && unit[2] == '\0'){
return "cm";
}
if (unit[-2] == 'c' && unit[1] == 'm' && unit[2] == '\0'){
return "in";
}
}
int main(int argc, char * argv[]) {
if (argc < 3) {
printf("Error: you must enter both a measurement and a unit (cm or in).\n");
exit(-1);
}
int val = atoi(argv[1]);
char * unit = argv[2];
converted_val = convert(val, unit);
output_unit = output_unit(unit);
printf("%d %c = %d %c\n", val, unit, converted_val, output_unit);
exit(0);
}
我期待这编译,但它不会。
1条答案
按热度按时间btxsgosb1#
string.h
中的strcmp
。它将比较两个字符串,如果相等则返回0。converted_val
和output_unit
的类型。output_unit
已使用两次,我已将变量重命名为out_unit
。%s
,对浮点数使用%f
。修复这些问题后,代码如下所示: