题目描述
数根可以通过把一个数的各个位上的数字加起来得到。如果得到的数是一位数,那么这个数就是数根。如果结果是两位数或者包括更多位的数字,那么再把这些数字加起来。如此进行下去,直到得到是一位数为止。比如,对于24来说,把2和4相加得到6,由于6是一位数,因此6是24的数根。再比如39,把3和9加起来得到12,由于12不是一位数,因此还得把1和2加起来,最后得到3,这是一个一位数,因此3是39的数根。
输入要求
输入包括一些正整数(小于101000),每个一行。输入的最后一行是0,表示输入的结束,这一行不用处理。
输出要求
对每个正整数,输出它的数根。每个结果占据一行。
假如输入
24
39
0
应当输出
6
3
我的代码:
#include<stdio.h>
int sg(int n)
{
int d=0;
while(n)
{
d=d+n%10;
n=n/10;
}
return d;
}
int main()
{
int n,a;
while(scanf("%d",&n)!=EOF)
{
if(n==0)break;
a=sg(n);
if(a>=10)
a=sg(a);
printf("%d\n",a);
}
return 0;
}
oj上错误原因:
测试文件:/test.out 结果:答案错误 =======原因====== 当参考答案输出: 6 -------时--------- 你的程序输出: -1 =================测试文件:/sample.out 结果:答案正确
c语言编程求纠错~~~
while(scanf("%d",&n)!=EOF){if(n==0)break;a=sg(n);if(a>=10)a=sg(a);printf("%d\\n",a);} 这个循环出错了,如果按你这个代码来执行的话,每次读入一个n的值,循环里都是只计算一次a的值,a的值要么是sg(n),要么是sg(a),然后继续读入新的n的值。要想满足“如果结果是两位...
用c语言求完全数,求纠错
printf("%d是完全数字!\\n",&sum); 改成printf("%d是完全数字!\\n",sum);输出不需要取地址符
求c语言代码纠错!!!
int binsearch(int list[],int searchnum,int left,int right);int main(int argc, char* argv[]) {int i,n,m;int list[MAX_SIZE];printf("Enter the number of number to generate:
求c语言代码纠错
int main(){ double x1,x2,a,b,c;printf("已知方程ax^2+bx+c=0,请输入a,b,c\\n");scanf("%lf%lf%lf",&a,&b,&c);printf("方程为ax^2+bx+c=0\\n"); \/\/有改动 if (b*b-4.0*a*c>=0){ x1=(-b+sqrt(b*b-4.0*a*c))\/(2.0*a); \/\/有改动 x2=(-b-...
C语言4个数值求平均值,求纠错
错误如下:主函数入口没有加int(int main())修改结果:include <stdio.h>int main() { int a, b, c, d; float e; scanf("%d %d %d %d", &a, &b, &c, &d); e = (a + b + c + d) \/ 4; printf("%f\\n", e);} ...
C语言 求纠错!!! 计算数值较大的a+b结果,
if x<y {a=x;b=y;}else {a=y;b=x;} z=0;while(a>=z){ C[z]+=A[x]+B[y]-96;C[z+1]=int(C[z]\/10);\/\/高一位数值取初值(进位设为初值,没有进位则为0初值)C[z]=C[z] mod 10;\/\/ 当前位数值;z++; x--;y--;} if C[b+1]<>0 b++; \/\/两数加...
C语言代码纠错。我这个运行结果和手算的不一样,请大神帮忙看看_百度...
scanf("%f%f%f",&Ui1,&Ui2,&Ui3,&Uo1,&Uo2,&Uo3);P=Lc*(Ui1+Ui2+Ui3-Uo1-Uo2-Uo3)\/(N*L);if(P<Pmin)printf("P=%f,该路段此时畅通",P);else if(P>Pmax)printf("P=%f,该路段此时堵塞",P);elseprintf("P=%f,该路段此时拥挤",P);}scanf那里 d要改成%f ...
C语言简单代码求纠错
include <stdio.h>#include <math.h> \/\/因为程序中用到了sqrt这个数学函数,所以需要包含进math.hmain(){ float a, b, c, x1, x2, m, p, q, delta; printf("Please enter the coefficient for the quadratic function:"); printf("a="); scanf("%f", &a); printf(...
用c语言编了个程序无法运行,求纠错.
把scanf("%d\\n",&n);改成scanf("%d",&n);。
c语言代码求纠错
1、你定义的max函数中定义的int型变量max的作用于只是该函数本身,所以在主程序中max(c,d)这一句的函数调用时没有任何意义的。2、printf("%d", max)这一句中的max是指什么呢?指的是max函数,还是你在max函数中定义的int型max变量,但是这两种不管是哪一种都是错误的。函数名和变量名不要重复。...