想入门的新人 发表于 2022-1-6 15:08:06

计算器程序运行不起来,求助大佬,谢谢

各位大佬我想请教一个问题,程序直接进入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;
}

wp231957 发表于 2022-1-6 15:18:43

c语言判断字符串相等是不能用等等符号的

傻眼貓咪 发表于 2022-1-6 15:22:33

本帖最后由 傻眼貓咪 于 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-9 11:56:27

傻眼貓咪 发表于 2022-1-6 15:22


strcmp这个我还没学过,除了用这个还可以用其它的吗?

想入门的新人 发表于 2022-1-9 12:07:23

wp231957 发表于 2022-1-6 15:18
c语言判断字符串相等是不能用等等符号的

为什么呀?

傻眼貓咪 发表于 2022-1-9 12:07:43

本帖最后由 傻眼貓咪 于 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:19:32

本帖最后由 傻眼貓咪 于 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-10 10:56:14

傻眼貓咪 发表于 2022-1-9 12:07
可以,就是比较麻烦一点,需要字符一个一个检查是否一样,用 for 循环还有一点就是两个字符串长度是否 ...

感谢{:5_92:}
页: [1]
查看完整版本: 计算器程序运行不起来,求助大佬,谢谢