首页 > 解决方案 > 试图编写一个程序来对 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;
}

标签: cintegercharacter

解决方案


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 变量可以保存单个字符,而两位数由两个字符组成。


推荐阅读