我们老师给出的任务是创建一个程序,要求提出两个整数x
和y
以及一个字符z
。为z
输入的字母可以是a
,它会添加两个整数,s
会减去它们,m
乘以d
除以。
老师试图在课堂上解释多个'如果''其他'的陈述;但是,我担心我不能在缺少“{”的地方做出正面或反面。如果能够更好地理解这一点的人可以解释为什么以及缺少“{”的原因,那将是非常感激的。
#include <stdio.h>
int main(void)
{
char let;
int x;
int y;
int a;
int s;
int m;
int d;
printf("Enter command letter \n");
scanf("%c", &let);
printf("Enter both integers \n");
scanf("%d%d%c", &x, &y);
if (let==a)
{
a=x+y;
printf("x+y is %d \n", a);
}
else
{
if (let==s)
{
s=x-y;
printf("x-y is %d \n", s);
}
else
{
if (let==m)
{
m=x*y;
printf("x*y is %d \n", m);
}
else
{
d=x/y;
printf("x/y is %d \n", d);
}
}
return(0);
}
答案 0 :(得分:4)
这是典型的缩进问题。
你肯定知道的一件事是你不能为同一个IF提供两个'其他'。如果你按照你的代码,你会看到:
if (let==s)
{
s=x-y;
printf("x-y is %d \n", s);
}
else
{
if (let==m)
{
m=x*y;
printf("x*y is %d \n", m);
}
else
{
d=x/y;
printf("x/y is %d \n", d);
}
这是错误的。
现在已更正的版本
if (let==s)
{
s=x-y;
printf("x-y is %d \n", s);
}
else
{
if (let==m)
{
m=x*y;
printf("x*y is %d \n", m);
}
else //REINDENTED THIS ELSE, AND THE ERROR BECOMES VISIBLE
{
d=x/y;
printf("x/y is %d \n", d);
}
}//THIS IS THE ONE MISSING
答案 1 :(得分:1)
你有两个} else {
块。
只有在未运行} else {
和if (...) {
的情况下才需要执行一个 } else if (...) {
块。
例如:
int x = 4;
if (x == 1) {
// Do stuff
} else if (x == 2) {
// Do stuff because x isn't 1
} else if (x == 3) {
// Do stuff because x isn't 1 or 2
} else {
// Do stuff because x isn't 1, 2 or 3
}
答案 2 :(得分:1)
最后一个else
属于
if (let==m)
所以下一个}
关闭了之前的其他内容,而main()
错过了结束}
通常最好将if
/ else
对缩进到同一级别以避免这些错误