2 baidu 33690068 baidu_33690068 于 2016.03.26 12:43 提问

pat 部分A+B 求大神帮帮忙,初学C语言

找不出错误。。。
正整数A的“DA(为1位整数)部分”定义为由A中所有DA组成的新整数PA。例如:给定A = 3862767,DA = 6,则A的“6部分”PA是66,因为A中有2个6。

现给定A、DA、B、DB,请编写程序计算PA + PB。

输入格式:

输入在一行中依次给出A、DA、B、DB,中间以空格分隔,其中0 < A, B < 1010。

输出格式:

在一行中输出PA + PB的值。

输入样例1:
3862767 6 13530293 3
输出样例1:
399
输入样例2:
3862767 1 13530293 8
输出样例2:
0

#include
#include
int main(void)
{
int i,b,j,k,temp,count=0,sum=0;
char A[12];char a[12];
char D;
k=0;
b=0;
for(i=1;i<=2;i++)
{
scanf("%s",&A);
scanf("%c",&D);
temp=strlen(A);
printf("%d",temp);
for(j=0;j<temp;j++)
{
if(D==A[j])
{
count++;
}
}
printf("%d\n",count);
if(count!=0)
{

   for(j=1;j<=count;j++)
   {
     sum=sum*10+D-'0';

   }
 }

}

printf("%d\n",sum);
return 0;
}
有人可以帮帮忙吗/(ㄒoㄒ)/~~

3个回答

qq423399099
qq423399099   Ds   Rxr 2016.03.26 15:46
已采纳

我把改动的地方都写在代码注释里面了

 #include<stdio.h>
#include<iostream>
using namespace std;
int main(void)
{
    int i,b,j,k,temp,count=0,sum=0;
    char A[12];char a[12];
    char D;

    b=0;
    for(i=1;i<=2;i++)
    {
        k=0; //每循环一次就重置为0
        scanf("%s",&A);//这里最好改成scanf("%s",A);(数组不需要取地址)
        scanf(" %c",&D);//这里需要加个空格匹配掉输入缓冲区中读掉第一个数以后遗留下来的空格
                        //不然D将会读到这个空格,楼主不信可以打印验证
        temp=strlen(A);
        //printf("%d",temp);
        for(j=0;j<temp;j++)
        {
            if(D==A[j])
            {
                count++;
            }
        }
        //printf("%d\n",count);
        if(count!=0)
        {
            for(j=1;j<=count;j++)
            {
                k=k*10+D-'0';
            }
            sum = sum + k;//这里将每次循环得到的值累加到sum上
            count = 0;//这里需要将count重新置为0
        }
    }
    printf("%d\n",sum);
    return 0;
} 
baidu_33690068
baidu_33690068 那我加你qq把
2 年多之前 回复
baidu_33690068
baidu_33690068 回复小灸舞: 好开心O(∩_∩)O刚才对照了你的代码终于找出了我的错误!!Thanks\(^o^)/~
2 年多之前 回复
qq423399099
qq423399099 回复你喔o: 好的,私信或者QQ都可以
2 年多之前 回复
baidu_33690068
baidu_33690068 回复小灸舞: 不对。。是string.h。。
2 年多之前 回复
baidu_33690068
baidu_33690068 回复小灸舞: 谢谢!!!运行正确!还有你忘记加那个#include<stdio.h>了。。以后还可以向你问问题吗/(ㄒoㄒ)/~~
2 年多之前 回复
qq423399099
qq423399099 楼主直接复制粘贴可以试下,我贴图贴不上来,说系统繁忙。。。
2 年多之前 回复
huixion
huixion   2016.03.26 14:15

循环后要对count清零

for(i=1;i<=2;i++)

scanf("%s",&A);
scanf("%c",&D);
temp=strlen(A);

........

最后:count=0;

baidu_33690068
baidu_33690068 额不好意思在下面。。。
2 年多之前 回复
baidu_33690068
baidu_33690068 #include<stdio.h> #include<string.h> int main(void) { int i,b,j,k,temp,count=0,sum=0; char A[12];char a[12]; char D; k=0; b=0; for(i=1;i<=2;i++) { scanf("%s",&A); scanf("%c",&D); temp=strlen(A); for(j=0;j<temp;j++) { if(D==A[j]) { count++; } } if(count!=0) { for(j=1;j<=count;j++) { sum=sum*10+D-'0'; } } count=0; } printf("%d\n",sum); return 0; }
2 年多之前 回复
baidu_33690068
baidu_33690068 O(∩_∩)O谢谢!可是我把代码改成了这样输出的sum为什么是0.。。/(ㄒoㄒ)/~~
2 年多之前 回复
baidu_33690068
baidu_33690068   2016.03.26 15:31

#include
#include
int main(void)
{
int i,b,j,k,temp,count=0,sum=0;
char A[12];char a[12];
char D;
k=0;
b=0;
for(i=1;i<=2;i++)
{
scanf("%s",&A);
scanf("%c",&D);
temp=strlen(A);
for(j=0;j<temp;j++)
{
if(D==A[j])
{
count++;
}
}

     if(count!=0)
     {

        for(j=1;j<=count;j++)
        {
            sum=sum*10+D-'0';

         }
     }
     count=0;
}

 printf("%d\n",sum);
 return 0;

}

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
PAT B1016 部分A+B
题目地址:https://www.patest.cn/contests/pat-b-practise/1016题目描述:正整数A的“DA(为1位整数)部分”定义为由A中所有DA组成的新整数PA。例如:给定A = 3862767,DA = 6,则A的“6部分”PA是66,因为A中有2个6。现给定A、DA、B、DB,请编写程序计算PA + PB。输入格式:输入在一行中依次给出A、DA、B、DB,中间以空
PAT乙级 1017. A除以B C语言
1017. A除以B (20)题目: 本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A = B * Q + R成立。 输入格式: 输入在1行中依次给出A和B,中间以1空格分隔。 输出格式: 在1行中依次输出Q和R,中间以1空格分隔。 输入样例: 123456789050987654321 7 输出样例: 17636684
[uva 12412]A Typical Homework(师兄帮帮忙)
不得不说,这一题有点6,主要有精度控制和计算平均数时不能除以0这些细节要注意,然而我是跪在了排名函数上,代码略凌乱,希望大家不要介意,就让这题作为我博客的开始吧.
PAT乙级:1011. A+B和C (C++)
题目不难,只是需要注意正整数范围,因为如果A和B都是挺大的int,那么C应该是long,这里我统一都用的long,更加直观地告诉你要警惕两数相加,数字更大的情况。#include <iostream> using namespace std;int main() { int T; cin>>T; int case_number=1; long A; long
PAT编程题:部分A+B (15)
题目描述 正整数A的“DA(为1位整数)部分”定义为由A中所有DA组成的新整数PA。例如:给定A = 3862767,DA = 6,则A的“6部分”PA是66,因为A中有2个6。 现给定A、DA、B、DB,请编写程序计算PA + PB。 输入描述: 输入在一行中依次给出A、DA、B、DB,中间以空格分隔,其中0 输出描述: 在一行中输出PA + PB的值。
PAT Basic 1017. A除以B (20)(C语言实现)
最新内容已发布在 我的Github Pages, CSDN内容暂时不更新(将来有计划更新), 请前往链接查看最新内容. 欢迎star 我的repo题目本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A = B * Q + R成立。输入格式:输入在1行中依次给出A和B,中间以1空格分隔。输出格式:在1行中依次输出Q和R,中间以1...
【PAT】(乙级)1011. A+B和C (15)
1011. A+B和C (15) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 HOU, Qiming 一、题目给定区间[-231, 231]内的3个整数A、B和C,请判断A+B是否大于C。输入格式:输入第1行给出正整数T(<=10),是测试用例的个数。随后给出T组测试用例,每组占一行,顺序给出A、B和C。整数间以空格分隔。输出格式
PAT练习-A除以B
题目描述 本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A = B * Q + R成立。 输入描述: 输入在1行中依次给出A和B,中间以1空格分隔。 输出描述: 在1行中依次输出Q和R,中间以1空格分隔。 输入例子: 123456789050987654321 7 输出例子: 176366841501410
PAT甲级 1001. A+B Format (20)--两种方法
题目链接:https://www.patest.cn/contests/pat-a-practise/1001 1001. A+B Format (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 C
【PAT】甲级1001——C语言实现
1001 A+B Format (20)(20 分)Calculate a + b and output the sum in standard format -- that is, the digits must be separated into groups of three by commas (unless there are less than four digits).InputEa...