计算器程序运行不起来,求助大佬,谢谢
各位大佬我想请教一个问题,程序直接进入else,不进入if 或else if,我输入 add 12 14,然后回车程序直接进入else,然后打印输入格式错误!
代码放下面了,不知道问题原因。
#include<stdio.h>
int main()
{
int num1,num2,num=2;
char i="";
printf("输入格式例如,add 15 14,结果为29.\n");
printf("请输入指令:");
scanf("%s %d %d",i,&num1,&num2);
printf("[%s %d %d]\n",i,num1,num2);
if(i=="add")
{
num=num1+num2;
printf("结果为:%d\n",num);
}
else if(i=="sub")
{
num=num1-num2;
printf("结果为:%d\n",num);
}
else if(i=="mux")
{
num=num1*num2;
printf("结果为:%d\n",num);
}
else if(i=="dive")
{
num=num1/num2;
printf("结果为:%d\n",num);
}
else
{
printf("格式输入错误!\n");
}
return 0;
} c语言判断字符串相等是不能用等等符号的 本帖最后由 傻眼貓咪 于 2022-1-6 15:24 编辑
#include <stdio.h>
#include <string.h>
int main()
{
int a, b;
char str;
printf("输入格式例如, add 15 14,结果为 29。\n");
printf("请输入指令:");
scanf("%s%d%d", str, &a, &b);
printf("[%s %d %d]\n", str, a, b);
if(!strcmp(str, "add")) printf("结果为:%d\n", a+b);
else if(!strcmp(str, "sub")) printf("结果为:%d\n", a-b);
else if(!strcmp(str, "mult")) printf("结果为:%d\n", a*b);
else if(!strcmp(str, "div")) printf("结果为:%.2f\n", (float)a/b);
return 0;
} 傻眼貓咪 发表于 2022-1-6 15:22
strcmp这个我还没学过,除了用这个还可以用其它的吗? wp231957 发表于 2022-1-6 15:18
c语言判断字符串相等是不能用等等符号的
为什么呀?
本帖最后由 傻眼貓咪 于 2022-1-9 12:27 编辑
想入门的新人 发表于 2022-1-9 11:56
strcmp这个我还没学过,除了用这个还可以用其它的吗?
可以,就是比较麻烦一点,需要字符一个一个检查是否一样,用 for 循环#include <stdio.h>
int main()
{
char a = "fishc";
char b = "fichc";
int same = 1;
for(int i = 0; i < 5; i++){
if(a != b) same = 0;
}
if(same) printf("两个字符串一样");
else printf("两个字符串不一样");
return 0;
}还有一点就是两个字符串长度是否一致?否则不一样 本帖最后由 傻眼貓咪 于 2022-1-9 12:25 编辑
想入门的新人 发表于 2022-1-9 12:07
为什么呀?
因为字符串数组和常量字符串不同:
#include <stdio.h>
int main()
{
/* 以下字符串全部一样是 fishc */
char a = "fishc"; // 字符串数组
char *b = "fishc"; // 常量字符串
char *c = "fishc"; // 常量字符串
// ------------------------------
if(a == b) printf("a == b\n");
else printf("a != b\n");
// ------------------------------
if(b == c) printf("b == c\n");
else printf("b != c\n");
return 0;
}a != b
b == c 傻眼貓咪 发表于 2022-1-9 12:07
可以,就是比较麻烦一点,需要字符一个一个检查是否一样,用 for 循环还有一点就是两个字符串长度是否 ...
感谢{:5_92:}
页:
[1]