我想让这个程序说如果输入1,屏幕将显示"是G是G和弦中的第一个音符",如果你输入任何其他内容,它将打印"错误!"然后循环回到开头,这是我的尝试。另外,我知道有不同的方法可以做到这一点,但它是为了学校作业而且enum数据类型是必要的,虽然这个代码对于仅仅显示enum的使用是很有影响的,但是我无法理解它让这个工作。有什么指针吗? (没有双关语)。
c <- function(w, A, B) sum((w[1] * A - w[2] * B)^2)
optim(w, c, A = A, B = B)
答案 0 :(得分:4)
note = 1
正在为note
分配值1
。您希望将note
与1
进行比较,因此您需要运算符==
。阅读比较操作:
http://en.cppreference.com/w/cpp/language/operator_comparison
要清楚:
note = 1; // Assigning note to 1, note is now the value 1
note == 1; // Comparing note to 1, true if note is 1, false otherwise.
你还有很多其他问题:
printf ("Yes G is %ist note in the G-chord\n",G )};
行以分号结尾,if语句不是。else(
否则不会采用参数,应该使用大括号。 else {
return(0)
返回不是函数。完整(-Wall
)警告的编译器将告诉您所有这些事情。上面列表中的内容应该是编译器错误。
答案 1 :(得分:2)
您的代码中存在很多问题,但主要原因是您尝试将1
分配给note
而不是比较==
。
另一件事是你永远不会检查scanf
是否有错误。
括号和括号使用错误。
int main(){}
至少要int main(void){}
。
return
语句不应被视为一个函数,(0)
周围不需要这些括号,并且应该以分号;
而不是:
结尾
现在,以下内容应该更好地解释您可能尝试做的事情:
#include<stdio.h>
enum Gchord{G=1,B,D,};
int main(void){
printf( "What interval is G in the G chord triad \nEnter 1 2 or 3\n" );
int note;
if(scanf("%i",¬e) == 1){
if (note == 1 ){
printf ("Yes G is %ist note in the G-chord\n",G );
}else{
printf("no, wrong");
}
}else{
printf("Error, scanf\n");
}
return 0;
}
答案 2 :(得分:1)
I don't know where to start. Your code has a lot of errors.
int note;
变量几乎总是在顶部声明并初始化(在本例中为int note = 0;
,
分隔某些内容,请在其后面输入空格。不是scanf("%i",¬e);
而是scanf("%i", ¬e);
==
。单个=
用于为变量赋值。错误:if (note = 1 )
右:if (note == 1)
else
支架错误,甚至没有关闭。对于您的循环问题,您应该阅读while loops
并再次询问您是否理解它们。
enum Gchord{G=1,B,D,};
int main() {
int note = 0;
printf("What interval is G in the G chord triad \nEnter 1 2 or 3\n");
scanf("%i", ¬e);
if (note == 1) {
printf ("Yes G is %ist note in the G-chord\n", G);
}
else {
printf("no, wrong");
}
return 0;
};
答案 3 :(得分:0)
这里有无数的语法错误,包括每个人都指出note = 1为note变量赋值1而不是测试相等性。你想要这里的==运算符。
你也没有真正使用枚举,你的老师可能不会通过你。
我稍微修改了你的代码,以便更多地使用枚举并进行你正在寻找的循环。
enum Gchord { EXIT, G, B, D, };
int main()
{
while (true)
{
printf("What interval is G in the G chord triad \nEnter 1, 2, 3, or 0 to exit\n");
Gchord note;
scanf("%i", ¬e);
if( note == EXIT )
break;
if (note == G)
printf("Yes G is %ist note in the G-chord\n", G);
else
printf("no, wrong\n");
}
return(0);
};