
c语言问题!!!!!!
编写程序,求所有的四位奇数中各位数字之和为13的倍数的数的个数。答案1.#include<stdio.h>voidmain(){inta,b,c,d,x,n=0;for(...
编写程序,求所有的四位奇数中各位数字之和为13的倍数的数的个数。
答案1.
#include <stdio.h>
void main( )
{ int a,b,c,d,x,n=0;
for(x=1000;x<=9999;x++)
{ a=x/1000;
b=(x%1000)/100;
c=(x%100)/10;
d=x%10;
if(x%2==1 && (a+b+c+d)%13==0)
n++;
}
printf("n=%d\n",n);
}
答案2.
#include <stdio.h>
void main()
{
int j,i,s=0,t=0,m;
for(i=1001;i<=9999;i=i+2)
{ m=i;
for(j=1;j<=4;j++)
s+=m%10,m=m/10;
if(s%13==0)
t++;
}
printf("%d\n",t);
}
答案1是老师的,有342个,答案2是我的,有350个,不知道是老师错了,还是我错了,还请指点下!!!!感激不尽!!!!! 展开
答案1.
#include <stdio.h>
void main( )
{ int a,b,c,d,x,n=0;
for(x=1000;x<=9999;x++)
{ a=x/1000;
b=(x%1000)/100;
c=(x%100)/10;
d=x%10;
if(x%2==1 && (a+b+c+d)%13==0)
n++;
}
printf("n=%d\n",n);
}
答案2.
#include <stdio.h>
void main()
{
int j,i,s=0,t=0,m;
for(i=1001;i<=9999;i=i+2)
{ m=i;
for(j=1;j<=4;j++)
s+=m%10,m=m/10;
if(s%13==0)
t++;
}
printf("%d\n",t);
}
答案1是老师的,有342个,答案2是我的,有350个,不知道是老师错了,还是我错了,还请指点下!!!!感激不尽!!!!! 展开
展开全部
你老师的是对的,你的算法问题在于每次内循环时没有初始化s
#include <stdio.h>
void main()
{
int j,i,s=0,t=0,m;
for(i=1001;i<=9999;i=i+2)
{ m=i;
s=0; //每次初始化s
for(j=1;j<=4;j++)
s+=m%10,m=m/10;
if(s%13==0)
t++;
}
printf("%d\n",t);
}
这样结果也是342
#include <stdio.h>
void main()
{
int j,i,s=0,t=0,m;
for(i=1001;i<=9999;i=i+2)
{ m=i;
s=0; //每次初始化s
for(j=1;j<=4;j++)
s+=m%10,m=m/10;
if(s%13==0)
t++;
}
printf("%d\n",t);
}
这样结果也是342
展开全部
#include <stdio.h>
void main()
{
int j,i,s=0,t=0,m;
for(i=1001;i<=9999;i=i+2)
{ m=i;
for(j=1;j<=4;j++)
{
s+=m%10;
m=m/10;
}
if(s%13==0)
t++;
s=0; //将s清0,为下次计算做准备。
}
printf("%d\n",t);
}
/**************在vc++6.0下编译运行成功***************************/
/**************运行结果为342***************************/
void main()
{
int j,i,s=0,t=0,m;
for(i=1001;i<=9999;i=i+2)
{ m=i;
for(j=1;j<=4;j++)
{
s+=m%10;
m=m/10;
}
if(s%13==0)
t++;
s=0; //将s清0,为下次计算做准备。
}
printf("%d\n",t);
}
/**************在vc++6.0下编译运行成功***************************/
/**************运行结果为342***************************/
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
答案2.
#include <stdio.h>
void main()
{
int j,i,s,t=0,m;
for(i=1001;i<=9999;i=i+2)
{ m=i;
for(j=1;j<=4;j++)
s=0;
s+=m%10;
m=m/10;
if(s%13==0)
t++;
}
printf("%d\n",t);
}
这样你试试,应该没有问题吧。
#include <stdio.h>
void main()
{
int j,i,s,t=0,m;
for(i=1001;i<=9999;i=i+2)
{ m=i;
for(j=1;j<=4;j++)
s=0;
s+=m%10;
m=m/10;
if(s%13==0)
t++;
}
printf("%d\n",t);
}
这样你试试,应该没有问题吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
s+=m%10,m=m/10;
这里用个逗号,有问题啊!
这里用个逗号,有问题啊!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
if(s%13==0)
t++;
s=0
t++;
s=0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你老师写的应该没有错,你的代码写得很不规范,应该是内嵌的for语句出了问题,最好这么写:
for(j=1; j<=4; j++)
{
s+=m%10;
m=m/10;
}
for(j=1; j<=4; j++)
{
s+=m%10;
m=m/10;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询