提问人:Beginner Programmer 提问时间:10/7/2022 最后编辑:Vlad from MoscowBeginner Programmer 更新时间:10/13/2022 访问量:80
需要输入整数,但它说左值需要作为赋值的左操作数 [已关闭]
need to put integer number but it says lvalue required as left operand of assignment [closed]
问:
编辑:修正了一些错别字,还添加了更多上下文
所以我试着把这个代码放进去:
#include <stdio.h>
int main() {
float ps, ls, ms, es;
printf("Enter the project score: ");
scanf("%d", &ps);
printf("Enter the long exam score: ");
scanf("%d", &ls);
printf("Enter the midterm exam score: ");
scanf("%d", &ms);
90 = (ps * 0.15) + (ls * 0.2) + (ms * 0.25) * (es * 0.4);
printf("Final exam score needed: %d", es);
return 0;
}
正如我想要的,这个方程 90=85(.15)+88(.2)+92(.25)+x(.4)
但它指出“左值需要作为赋值的左操作数”
答:
0赞
stark
10/7/2022
#1
你有
90=85(.15)+88(.2)+92(.25)+x(.4)
这应该是
// solve equation for x
float x = (90 - (85*(.15)+88*(.2)+92*(.25))) / .4;
printf("Final exam score needed: %f\n", x);
评论
0赞
Beginner Programmer
10/7/2022
谢谢,但期末考试成绩为0。
0赞
Eugene Sh.
10/7/2022
因为是,你正在尝试用它打印它es
float
%d
0赞
Vlad from Moscow
10/7/2022
#2
对于初学者,您将变量声明为具有float
float ps, ls, ms, es;
因此,要为变量输入值,您必须使用转换说明符而不是 likef
d
printf("Enter the project score: ");
scanf("%f", &ps);
本声明
90 = (ps * 0.15) + (ls * 0.2) + (ms * 0.25) * (es * 0.4);
没有意义。不能更改整数常量。此外,目前还不清楚为什么使用幻数。90
与下一个语句一样,您尝试使用无效的转换说明符再次输出变量的值,而不是您的意思是es
d
f
es = (ps * 0.15) + (ls * 0.2) + (ms * 0.25) * (es * 0.4);
printf("Final exam score needed: %f\n", es);
但是,请注意变量未初始化。因此,程序将具有未定义的行为。es
也许你的意思是(虽然很难说你到底是什么意思)
es = (ps * 0.15) + (ls * 0.2) + (ms * 0.25);
es *= 0.4;
0赞
Persixty
10/7/2022
#3
正如其他人指出的那样,您需要使用 来读取 .%f
float
但这里有一个求解方程的例子: 鉴于项目、长期考试和期中考试的分数,期末考试的加权平均分数为 90 分。
C 是一种“命令式”过程编程语言。
您需要指定如何派生该值。
不能指望它能解决你的方程式。
意思是“将右边的值分配给左边的变量”。
这不是平等的声明,甚至不是逻辑测试。这是一种将值赋值到变量中的行为。es
=
我之所以费力,是因为编程中的“突破性”理解是等于“=”并不总是意味着它在数学中的作用。事实上,很少这样做!
如果你尝试下面的 90、90 和 90,它会说 90(这是有道理的)。 如果你尝试 80、85 和 90,你需要 93.125 的最终分数。
此代码进行回溯检查,以显示计算出的值给出了正确的加权分数。
#include <stdio.h>
int main() {
float ps, ls, ms, es;
printf("Enter the project score: ");
scanf("%f", &ps);
printf("Enter the long exam score: ");
scanf("%f", &ls);
printf("Enter the midterm exam score: ");
scanf("%f", &ms);
printf("\nps=%f ls=%f ms=%f\n",ps,ls,ms);
es=(90-(ps * 0.15) - (ls * 0.2) - (ms * 0.25) )/0.4;
printf("Final exam score needed: %f\n", es);
float check=ps*0.15+ls*0.2+ms*0.25+es*0.4;
printf("Giving final score of %f\n",check);
return 0;
}
典型输出:
Enter the project score: Enter the long exam score: Enter the midterm exam score:
ps=80.000000 ls=85.000000 ms=95.000000
Final exam score needed: 93.125000
Giving final score of 90.000000
评论
90
es
=