程序应该从用户那里获取大写和小写字母,并且每个字母都分配给一个值。
示例。 S 为 0,K 为 1,E 为 2。
总值公式为((A*10)+(B))*10^C
A - 第一个输入 B - 第二个输入 C 是第三个输入。
函数 int lettervalue(char letter)
应该返回字母的值。
我使用 switch 结构来分配字母值。
每次编译时都会出现错误:'pow'的类型冲突
。 pow 函数是否接受变量,我应该在函数 int lettervalue(char letter)
中更改一些内容吗?
#include <stdio.h>
#include <math.h>
int pow(int x, int y);
int lettervalue(char letter)
{
int val;
switch (letter){
case 'S':
case 's':
val = 0;
break;
case 'K':
case 'k':
val = 1;
break;
case 'E':
case 'e':
val =2;
break;
}
return val;
}
int main(void)
{ int valueA, valueB, valueC, totalvalue;
char A, B, C;
printf("Please input the letter: ");
scanf("%c%c%c", &A, &B, &C);
valueA = lettervalue(A)*10;
valueB = lettervalue(B);
valueC = lettervalue(C);
totalvalue = (valueA+valueB)*pow(10, valueC);
printf("The total value is %d", totalvalue );
return 0;
}
最佳答案
代码不必要地提供了 pow()
原型(prototype),该原型(prototype)与 math.h
中的原型(prototype)不一致。
#include <math.h>
// math.h provides: double pow(double x, double y);
消除int pow(int x, int y);
。
更改代码
// totalvalue = (valueA+valueB)*pow(10, valueC);
totalvalue = (valueA+valueB)* ((int)pow(10, valueC));
或者
double total;
total = (valueA+valueB)*pow(10, valueC);
printf("The total value is %.0lf", total );
请务必链接到数学库以避免“对 pow 的 undefined reference ”。
"undefined reference to `pow'" even with math.h and the library link -lm
关于c - 错误: Conflicting types for 'pow' in C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20954573/