qq_43886420
Zoe_yuyang
采纳率50%
2018-12-12 07:40

新手求助:统计满足条件的4位数

已采纳

题目:统计满足条件的4位数

【题目描述】
给定若干个四位数,求出其中满足以下条件的数的个数:个位数上的数字减去千位数上的数字,再减去百位数上的数字,再减去十位数上的数字的结果大于零。

【输入】
输入为两行,第一行为四位数的个数n,第二行为n个的四位数。(n≤100)

【输出】
输出为一行,包含一个整数,表示满足条件的四位数的个数。

【输入样例】
5
1234 1349 6119 2123 5017
【输出样例】
3

#include<iostream>
#include<cstdio>
using namespace std;
int main()
{char a,b,c,d;
int n,y=0;
cin>>n;
for(int i=1;i<=n;i++)
{scanf("%c%c%c%c",&a,&b,&c,&d);
if((d-a-b-c)>0)
y++;
}
cout<<y<<endl;
    return 0;
}

请问哪里出错了?运行时答案错误

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

3条回答

  • weixin_41461277 _ZGq 3年前

    因为字符有ASCII码的原因,字符的实际数值是原数字加上48。
    修改方法:1. 把a,b,c,d设成int型;2. 把d-a-b-c变成(d-48)-(a-48)-(b-48)-(c-48)。

    还有就是u013434984说的,把cin和scanf统一。

    点赞 1 评论 复制链接分享
  • u013434984 潭溪Zerg 3年前

    不要混合使用cin和scanf
    你这样,n是5,但是scanf会从换行开始读起,所以你的输入数为
    图片说明
    最终结果为0也就不奇怪了。
    既然用cpp最好就统一用cin >> a >> b >> c >> d;

    点赞 1 评论 复制链接分享
  • qq_37790902 tengyunyang 3年前
    #include<iostream>
    #include<cstdio>
    using namespace std;
    int main(){ 
        int num[50],count=0,i,n;
        int a,b,c,d;
        printf("请输入四位数个数");
        scanf("%d",&n);
        for(i=0;i<n;i++){
            scanf("%d",&num[i]);
            if((num[i]%10-num[i]/1000-num[i]/100%10-num[i]/10%10)>0){
                count++;
            }
    
        }
        printf("%d",count);
    
        return 0;
    }
    
    点赞 1 评论 复制链接分享

相关推荐