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把
一年多之前 回复
baidu_33690068
baidu_33690068 回复小灸舞: 好开心O(∩_∩)O刚才对照了你的代码终于找出了我的错误!!Thanks\(^o^)/~
一年多之前 回复
qq423399099
qq423399099 回复你喔o: 好的,私信或者QQ都可以
一年多之前 回复
baidu_33690068
baidu_33690068 回复小灸舞: 不对。。是string.h。。
一年多之前 回复
baidu_33690068
baidu_33690068 回复小灸舞: 谢谢!!!运行正确!还有你忘记加那个#include<stdio.h>了。。以后还可以向你问问题吗/(ㄒoㄒ)/~~
一年多之前 回复
qq423399099
qq423399099 楼主直接复制粘贴可以试下,我贴图贴不上来,说系统繁忙。。。
一年多之前 回复
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 额不好意思在下面。。。
一年多之前 回复
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; }
一年多之前 回复
baidu_33690068
baidu_33690068 O(∩_∩)O谢谢!可是我把代码改成了这样输出的sum为什么是0.。。/(ㄒoㄒ)/~~
一年多之前 回复
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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!