鱼C论坛

 找回密码
 立即注册
查看: 778|回复: 10

[已解决]哪里错了

[复制链接]
发表于 2020-3-31 17:41:42 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 如果孤独感 于 2020-3-31 22:50 编辑

为什么编译成功后输入1后结果是从65加起
  1. #include <stdio.h>

  2. int main()
  3. {
  4.         int ch, in, sum = 0, n;
  5. printf("请输入合法数字(多次输入求和):");
  6.         ch = getchar();
  7.         getchar();
  8.         for (; ch >= '0' && ch <= '9'; sum += (ch - '0'))
  9.         {
  10.                 printf("请输入合法数字:");
  11.                 ch = getchar();
  12.                 getchar();
  13.         }

  14.         printf("结果是:%d\n", sum);
  15. return 0;
  16. }
复制代码
最佳答案
2020-3-31 23:45:49
你在最后输入字符结束循环的时候输入字符所代表的值比‘0’大的值也被加到了sum里
你是输入q来结束对于程序来说就是1没了然后q变成新的ch计算后发现之前输入的ch不符合循环要求
最后结束循环,计算的值就错了
如果你换a来结束就变成49加起
把sum += (ch - '0')要放在循环第一个这样你输入的第一个数就不会被丢弃,而输入字符的值也不会在判定前就加给sum

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-31 17:46:20 | 显示全部楼层
你确定能编译成功??!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-31 17:57:39 | 显示全部楼层
本帖最后由 就是要努力呀 于 2020-3-31 17:58 编辑

gechar只能获取一个字符,(注意是一个字符不是数字)返回值是字符的ascii码,'0'的ascii码是48 '9'的ascii码是57 所以要用getchar来获取字符应该减去一个48
  1. ch = getchar() - 48;
复制代码
或者直接用scanf
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-31 18:20:17 | 显示全部楼层
咋这么多的getchar。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-31 18:40:35 | 显示全部楼层
就是要努力呀 发表于 2020-3-31 17:57
gechar只能获取一个字符,(注意是一个字符不是数字)返回值是字符的ascii码,'0'的ascii码是48 '9'的ascii ...

你看看他第17行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-31 19:02:50 | 显示全部楼层

  1. return 0;
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-31 19:03:49 | 显示全部楼层
检查的时候认真点这些错误编译器应该会报错的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-31 22:51:01 | 显示全部楼层
Hello. 发表于 2020-3-31 17:46
你确定能编译成功??!

没复制好而已你看整体的错误;
总之答案是能;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-31 22:51:39 | 显示全部楼层
就是要努力呀 发表于 2020-3-31 17:57
gechar只能获取一个字符,(注意是一个字符不是数字)返回值是字符的ascii码,'0'的ascii码是48 '9'的ascii ...

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

使用道具 举报

 楼主| 发表于 2020-3-31 22:52:11 | 显示全部楼层

没复制好而已你看整体的错误;
总之答案是能;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-31 23:45:49 | 显示全部楼层    本楼为最佳答案   
你在最后输入字符结束循环的时候输入字符所代表的值比‘0’大的值也被加到了sum里
你是输入q来结束对于程序来说就是1没了然后q变成新的ch计算后发现之前输入的ch不符合循环要求
最后结束循环,计算的值就错了
如果你换a来结束就变成49加起
把sum += (ch - '0')要放在循环第一个这样你输入的第一个数就不会被丢弃,而输入字符的值也不会在判定前就加给sum

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-12 19:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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