PTA L1-025 正整数A+B C语言

这里要注意B的输入,B可以有空格(例如:9 ajks),这也是第4个测试的的坑,直接用scanf读入AB的话,因为会造成读入不完全,B只读入了9,而造成错误,所以B的话最好用gets读入。

还要注意的是数字的范围是1-1000。

#include <stdio.h>
#include <string.h>
int pd(char arr[],int sz)//判断函数
{
    if(sz>4)
    {
        arr[0] = '?';
        return 1;
    }
    for(int i = 0;i<sz;i++)
    {
        if(arr[0]== '0')
            return 1;
        if(arr[i]<'0'||arr[i]>'9')
            return 1;
    }
    return 0;
}
int num(char arr1[],int sz1)//转换为数字
{
    int n = 0;
    for(int i = 0;i<sz1;i++)
    {
        n = n*10+(arr1[i]-'0');
    }
    return n;
}
int main()
{
    char ch1[10] = {0};
    char ch2[10] = {'?'};
    int sz1 = 0,sz2 = 0;
    scanf("%s ",ch1);//注意读入格式
    gets(ch2);
    sz1 = strlen(ch1);
    sz2 = strlen(ch2);
    if(pd(ch1,sz1))
    {
        ch1[0]='?';
    }
    if(pd(ch2,sz2))
    {
        ch2[0]='?';
    }
    if(ch1[0]=='?' && ch2[0]=='?')
        printf("? + ? = ?\n");
    else if(ch1[0]=='?')
        printf("? + %s = ?\n",ch2);
    else if(ch2[0]=='?')
        printf("%s + ? = ?\n",ch1);
    else
    {
        int num1 = num(ch1,sz1);
        int num2 = num(ch2,sz2);

        if((num1>=1 && num1<=1000) && (num2>=1 && num2<=1000))
            printf("%s + %s = %d\n",ch1,ch2,num1+num2);
        else if((num1<1 || num1>1000) && (num2<1 || num2>1000))
            printf("? + ? = ?\n");
        else if(num1<1 || num1>1000)
            printf("? + %s = ?\n",ch2);
        else if(num2<1 || num2>1000)
            printf("%s + ? = ?\n",ch1);

    }
    return 0;
}

——————————————————————————————————————————

到这里就结束了,如有错误,请指出。(因为本人是新手,所以写的代码可能有些繁杂,还请多多包涵,谢谢啦!)

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值