问题描述
我是C语言的初学者,所以我的问题听起来很含糊,但请耐心等待;)。 因此,我试图创建一个程序,在该程序中,用户输入他所通过的主题(三个选项:数学,物理或两者),并根据输入,计算机将奖金打印在屏幕上。 但是,当我执行程序时,它仅在第一个IF语句之后退出,例如,如果我输入BOTH或PHYSICS选项,则输出仍显示$ 5奖金,仅当给出数学运算作为输入时才应显示。你们能指导我犯什么错误吗? 提前致谢, 比拉勒·艾哈迈德(Bilal Ahmed)。
#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
}
解决方法
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
}
...
,
的声明
(subject= Math)
将Math
的值分配给subject
并对其求值。如果正确,它将进入if
的分支。你的意思是
(subject== Math)
仅用于比较而不分配,也不要忘记初始化变量。编码愉快!