鱼C论坛

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

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

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

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

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

x
各位大佬我想请教一个问题,程序直接进入else,不进入if 或else if,
输入 add 12 14,然后回车程序直接进入else,然后打印输入格式错误!
代码放下面了,不知道问题原因。

  1. #include<stdio.h>
  2. int main()
  3. {
  4.         int num1,num2,num=2;
  5.         char i[8]="";
  6.        
  7.         printf("输入格式例如,add 15 14,结果为29.\n");
  8.         printf("请输入指令:");
  9.        
  10.         scanf("%s %d %d",i,&num1,&num2);
  11.        
  12.         printf("[%s %d %d]\n",i,num1,num2);
  13.        
  14.         if(i=="add")
  15.         {
  16.                 num=num1+num2;       
  17.                 printf("结果为:%d\n",num);
  18.         }
  19.         else if(i=="sub")
  20.         {
  21.                 num=num1-num2;       
  22.                 printf("结果为:%d\n",num);
  23.         }
  24.         else if(i=="mux")
  25.         {
  26.                 num=num1*num2;       
  27.                 printf("结果为:%d\n",num);
  28.         }
  29.         else if(i=="dive")
  30.         {
  31.                 num=num1/num2;       
  32.                 printf("结果为:%d\n",num);
  33.         }
  34.         else
  35.         {
  36.                 printf("格式输入错误!\n");
  37.         }
  38.        
  39.        
  40.        
  41.         return 0;
  42. }
复制代码
最佳答案
2022-1-6 15:22:33
本帖最后由 傻眼貓咪 于 2022-1-6 15:24 编辑

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

  3. int main()
  4. {
  5.         int a, b;
  6.         char str[8];
  7.        
  8.         printf("输入格式例如, add 15 14,结果为 29。\n");
  9.         printf("请输入指令:");
  10.        
  11.         scanf("%s%d%d", str, &a, &b);
  12.         printf("[%s %d %d]\n", str, a, b);
  13.        
  14.         if(!strcmp(str, "add")) printf("结果为:%d\n", a+b);
  15.         else if(!strcmp(str, "sub")) printf("结果为:%d\n", a-b);
  16.         else if(!strcmp(str, "mult")) printf("结果为:%d\n", a*b);
  17.         else if(!strcmp(str, "div")) printf("结果为:%.2f\n", (float)a/b);
  18.         return 0;
  19. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> 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 编辑

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

  3. int main()
  4. {
  5.         int a, b;
  6.         char str[8];
  7.        
  8.         printf("输入格式例如, add 15 14,结果为 29。\n");
  9.         printf("请输入指令:");
  10.        
  11.         scanf("%s%d%d", str, &a, &b);
  12.         printf("[%s %d %d]\n", str, a, b);
  13.        
  14.         if(!strcmp(str, "add")) printf("结果为:%d\n", a+b);
  15.         else if(!strcmp(str, "sub")) printf("结果为:%d\n", a-b);
  16.         else if(!strcmp(str, "mult")) printf("结果为:%d\n", a*b);
  17.         else if(!strcmp(str, "div")) printf("结果为:%.2f\n", (float)a/b);
  18.         return 0;
  19. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> 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 循环
  1. #include <stdio.h>

  2. int main()
  3. {
  4.     char a[5] = "fishc";
  5.     char b[5] = "fichc";
  6.     int same = 1;
  7.    
  8.     for(int i = 0; i < 5; i++){
  9.         if(a[i] != b[i]) same = 0;
  10.     }
  11.    
  12.     if(same) printf("两个字符串一样");
  13.     else printf("两个字符串不一样");

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

使用道具 举报

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

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

  2. int main()
  3. {
  4.     /* 以下字符串全部一样是 fishc */
  5.    
  6.     char a[5] = "fishc"; // 字符串数组
  7.     char *b   = "fishc"; // 常量字符串
  8.     char *c   = "fishc"; // 常量字符串
  9.    
  10.     // ------------------------------
  11.    
  12.     if(a == b) printf("a == b\n");
  13.     else       printf("a != b\n");
  14.         
  15.     // ------------------------------
  16.    
  17.     if(b == c) printf("b == c\n");
  18.     else       printf("b != c\n");

  19.     return 0;
  20. }
复制代码
  1. a != b
  2. 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-6-3 10:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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