Arrays 我陷入了一个if-else语句中,试图比较存储在";中的两个字符串值;char";变量
我是一名初级C程序员,所以我的问题听起来可能很模糊,但请耐心听我说;)。 因此,我试图创建一个程序,用户在其中输入他所传递的主题(有三个选项:数学、物理或两者都有),然后根据输入,计算机在屏幕上打印奖金。 但是当我执行程序时,它只是在第一个IF语句之后退出,例如,如果我输入选项BOTH或PHYSICS,输出仍然显示$5 prize,只有当数学作为输入时才会显示。你们能告诉我我犯了什么错误吗? 提前感谢,, 比拉尔·艾哈迈德Arrays 我陷入了一个if-else语句中,试图比较存储在";中的两个字符串值;char";变量,arrays,c,string,if-statement,Arrays,C,String,If Statement,我是一名初级C程序员,所以我的问题听起来可能很模糊,但请耐心听我说;)。 因此,我试图创建一个程序,用户在其中输入他所传递的主题(有三个选项:数学、物理或两者都有),然后根据输入,计算机在屏幕上打印奖金。 但是当我执行程序时,它只是在第一个IF语句之后退出,例如,如果我输入选项BOTH或PHYSICS,输出仍然显示$5 prize,只有当数学作为输入时才会显示。你们能告诉我我犯了什么错误吗? 提前感谢,, 比拉尔·艾哈迈德 #include<stdio.h> int main(int
#include<stdio.h>
int main(int argc, char const *argv[])
{
char Math,Physics,Both,subject;
printf("Please enter the name of the subjects you have passed in...\nOptionA)Math\nOptionB)Physics\nOptionC)Both\n");
scanf("%s", & subject);
if (subject= Math)
{
printf("you will receive $5\n");
}
else if (subject= Physics)
{
printf("you will receive $10\n");
}
else if (subject= Both)
{
printf("you will receive $15\n");
}
return 0
}
#包括
int main(int argc,char const*argv[]
{
查数学,物理,两者,科目;
printf(“请输入您通过的科目名称…\n选项a)数学\n选项b)物理\n选项c)两者\n”);
scanf(“%s”,主题)(&subject);
如果(科目=数学)
{
printf(“您将收到$5\n”);
}
else if(科目=物理)
{
printf(“您将收到$10\n”);
}
else if(主题=两者)
{
printf(“您将收到$15\n”);
}
返回0
}
声明
(subject= Math)
将数学
的值指定给主题
,并对其求值。如果它是真的,那么它将进入If
的那个分支。你是说
(subject== Math)
只进行比较而不赋值,并且不要忘记初始化变量。快乐编码
(subject= Math)
将数学
的值指定给主题
,并对其求值。如果它是真的,那么它将进入If
的那个分支。你是说
(subject== Math)
只进行比较而不赋值,并且不要忘记初始化变量。快乐编码
char
数据类型是存储单个字符而不是字符串。为了输入一个字符串,您需要一个字符数组。您需要理解在C中处理单个字符和字符串之间的区别
char Math,Physics,Both,subject; // subject needs to be a character array
printf("Please enter the name of the subjects you have passed in...\nOptionA)Math\nOptionB)Physics\nOptionC)Both\n");
scanf("%s", & subject); // Also %s doesn't require & operator with character array.
//for character we use %c
因此,您需要将subject
声明为char subject[15]
。为空终止符留下空间
其次,要比较字符串,您需要在C中使用strcmp
-
if(strcmp(subject, "Math") == 0){
//stuff
}
...
char
数据类型是存储单个字符而不是字符串。为了输入一个字符串,您需要一个字符数组。您需要理解在C中处理单个字符和字符串之间的区别
char Math,Physics,Both,subject; // subject needs to be a character array
printf("Please enter the name of the subjects you have passed in...\nOptionA)Math\nOptionB)Physics\nOptionC)Both\n");
scanf("%s", & subject); // Also %s doesn't require & operator with character array.
//for character we use %c
因此,您需要将subject
声明为char subject[15]
。为空终止符留下空间
其次,要比较字符串,您需要在C中使用strcmp
-
if(strcmp(subject, "Math") == 0){
//stuff
}
...
=
不是=
C没有字符串类,char
不是(不存在的)字符串类。从那以后,请学习你的C编程书中有关数组和字符串的章节。此外,自20世纪70年代以来就知道的=vs==bug毫无疑问也在这本书中提到过。一本好书会告诉您启用和读取编译器警告。=
不是=
C没有字符串类,char
不是(不存在的)字符串类。从那以后,请学习你的C编程书中有关数组和字符串的章节。此外,自20世纪70年代以来就知道的=vs==bug毫无疑问也在这本书中提到过。一本好书会告诉您启用和阅读编译器警告。