C语言 对输入的1位数加法公式求和

/**
输入一串数字,输出它的总和;
如果是java的话使用容器来存储就好办了,这里试着用动态一维数组来存储试试

*/
#include<stdio.h>
#include<stdlib.h>//动态空间处理头文件?对的

int isNumber(char);
int isAdd(char);
void add(int*);

int main()
{
    int again=0;
    char enter;
    do
    {
        printf("输入加法式:(例子:1+2+3+...(按回车结束)):\n");
        int sum1=0;
        int *sum=&sum1;
        add(sum);
        printf("sum=%d\n",*sum);
        free(sum);//释放空间
        printf("继续[1/0]?:");
        scanf("%d%c",&again,&enter);//回车符无效

    }while(again==1);

    return 0;
}
int isNumber(char c)
{
    return (c>='0'&&c<='9');
}
int isAdd(char c)
{
    return (c=='+');//如果是加号的话
}
void add(int *sum1)//对输入的1+2+3+4+5.....进行求和,输入数字,和加号,输入其他字符结束
{
    char ch;//
    ch=getchar();//读入数字
    if(isNumber(ch))//如果是个数字
    {
        *sum1=*sum1+((int)ch-48);//强制类型转换成int类型,并且累加
        ch=getchar();//再次读入一个字符:‘+’
        if(isAdd(ch))//如果是加号
        {
            //让加号无效
            ch=0;//这样下次递归时,条件可以成立
            add(sum1);//再加
        }
        //如果是其他字符就直接退出本次递归
    }
}

测试:

输入加法式:(例子:1+2+3+...(按回车结束)):
1+2+3+4
sum=10
继续[1/0]?:1
输入加法式:(例子:1+2+3+...(按回车结束)):
12+23
sum=1
继续[1/0]?:
可以看到这里有问题了,只能进行一位数的累加,这样是没什么用的。下次来更新

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值