c - 试图编写一个程序来对 int 和 char 的值求和
问题描述
我正在尝试用 C 编写一个程序来对整数和字符的值求和。如果用户在字符应该在的位置输入一个整数,我希望我的程序计算这 2 个整数的值。我下面的代码适用于用户输入 2 个整数,但最多只能计算 9(例如:4 5:“字符 '4' 代表一个数字。'4' 和 '5' 的总和是 9”)。如果用户输入5 6,则结果为:“字符'5'代表一个数字。'5'和'6'之和为;”。我一直在寻找一段时间,任何潜在的解决方案总是会导致不正确的总和。我还希望我的程序接受高于“9”的用户输入(例如:20 50),但是如果我将“9”更改为“99”,我会收到以下警告:“警告:
#include <stdio.h>
int sum (int m, char n){
return m+n;
}
int main(){
char ch;
int c;
printf("Enter an integer and a character separated by a blank> ");
scanf("%d %c",&c, &ch);
if((c >= '0' && c <= '9')||(ch >= '0' && ch <= '9')){
int cs = sum(c, ch - 0);
printf("Character '%d' represents a digit. Sum of '%d' and '%c' is %d" , c, c, ch - 0, cs);
}
return 0;
}
解决方案
int cs = sum(c, ch - 0);
看起来您试图通过从用户输入的任何字符中减去 0 的 ASCII 值来解释 ASCII 值。但是,当您想要使用字符文字“0”时,您使用了整数文字 0。见下文:
int cs = sum(c, ch - '0');
另外,我建议将您的 int 重命名为 i 或 c 以外的其他名称。区分 c 和 ch 的类型不同有点困难。
也考虑换
if((c >= '0' && c <= '9')
至
if((c >= 0 && c <= 9)
c 是一个整数,你应该这样比较它。通过使用 ' ',您基本上是在对 char 变量进行强制转换,这在此处是不必要的。另一个问题是,我认为您无法使用 char 变量作为两位数来完成您想要做的事情。char 变量可以保存单个字符,而两位数由两个字符组成。
推荐阅读
- php - 在 PHP MYSQL 中将表中的数据从一台数据库服务器复制到另一台数据库服务器
- css - 对视口响应和对子内容灵活的容器
- php - 从硬编码的 HTML 站点中删除 index.php
- ruby - 如何在 Ruby 中导入虹膜数据集
- unreal-engine4 - 在半空中时发射角色速度增加 - unreal4
- html - 主页不会滚动超过某个点
- javascript - Reactjs 裁剪图像
- windows - 批量减少文件名中的空格
- linux - Spring boot 2.1在Ubuntu18.4上运行,但无法从外部连接
- c# - Json 到 ListView - 无法将类型转换为 IEnumerable - Xamarin