鱼C论坛

 找回密码
 立即注册
查看: 1136|回复: 7

[已解决]计算器程序运行不起来,求助大佬,谢谢

[复制链接]
发表于 2022-1-6 15:08:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
各位大佬我想请教一个问题,程序直接进入else,不进入if 或else if,
输入 add 12 14,然后回车程序直接进入else,然后打印输入格式错误!
代码放下面了,不知道问题原因。
#include<stdio.h>
int main()
{
        int num1,num2,num=2;
        char i[8]="";
        
        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;
 } 
最佳答案
2022-1-6 15:22:33
本帖最后由 傻眼貓咪 于 2022-1-6 15:24 编辑

#include <stdio.h>
#include <string.h>

int main()
{
        int a, b;
        char str[8];
        
        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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-1-6 15:18:43 From FishC Mobile | 显示全部楼层
c语言判断字符串相等是不能用等等符号的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-1-6 15:22:33 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
本帖最后由 傻眼貓咪 于 2022-1-6 15:24 编辑

#include <stdio.h>
#include <string.h>

int main()
{
        int a, b;
        char str[8];
        
        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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-1-9 11:56:27 | 显示全部楼层

strcmp这个我还没学过,除了用这个还可以用其它的吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-1-9 12:07:23 | 显示全部楼层
wp231957 发表于 2022-1-6 15:18
c语言判断字符串相等是不能用等等符号的

为什么呀?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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[5] = "fishc";
    char b[5] = "fichc";
    int same = 1;
    
    for(int i = 0; i < 5; i++){
        if(a[i] != b[i]) same = 0;
    }
    
    if(same) printf("两个字符串一样");
    else printf("两个字符串不一样");

    return 0;
}
还有一点就是两个字符串长度是否一致?否则不一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-1-9 12:19:32 | 显示全部楼层
本帖最后由 傻眼貓咪 于 2022-1-9 12:25 编辑

因为字符串数组和常量字符串不同:
#include <stdio.h>

int main()
{
    /* 以下字符串全部一样是 fishc */
    
    char a[5] = "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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 18:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表