想问一下 这个while循环求完数的程序错哪儿了?为什么只输出1呢。 急,在线等 = =

作者&投稿:沙苗 (若有异议请与网页底部的电邮联系)
用MATLAB的while循环求1-500内的完数,这个程序错在哪里了?请大神指教!~

是说完全数吧,
说几个你的代码里面的问题,
那个j<=i/2的判断是干嘛的,这里是要找小于i的因数,判断应该是 j<i;
那个s应该没次循环都要置零,你写在循环的外面是错的;
那个j=j+1的位置应该在循环的末尾,而不是在开头,要不然比如i=6,那么j=5也会进入循环,但是又加一就变成6了,和i相等了,同时前面的j=0换成j=1.
发一下我修改后的截图(代码就自己看着改吧,就不复制了)

while(t!=0)
{
t/10;//这里错了,你这样写t的值是不会变的。
digit++;
}
应该是t=t/10;或者t/=10.

#include <stdio.h>
int main()
{
    int a=0,b=1,sum=0;
    while(sum<1000) 
    {
        if(sum%b==0)
        {
            a+=b;
        }
        b++;
        if(a==sum)
        {
            printf("%d",sum);
        }
        sum++;
       }
}

你的程序想要实现什么功能?

之所以只输出一次1,是因为除了sum=0的时候,sum总是比b小1.sum%b总是不等于0,所以a一直是1,而sum一直在增加。所以a一直无法等于sum,也就一直不会输出了




成华区13736974329: 想问一下 这个while循环求完数的程序错哪儿了?为什么只输出1呢. 急,在线等 = = -
油彦女金: #include int main() { int a=0,b=1,sum=0; while(sum { if(sum%b==0) { a+=b; } b++; if(a==sum) { printf("%d",sum); } sum++; } }你的程序想要实现什么功能?之所以只输出一次1,是因为除了sum=0的时候,sum总是比b小1.sum%b总是不等于0,所以a一直是1,而sum一直在增加.所以a一直无法等于sum,也就一直不会输出了

成华区13736974329: 怎么通过while 或者for循环实现1000以内的完数?求详解. -
油彦女金: #include<iostream> using namespace std; int main() {int n=1000; int r=0,j,i; for(i=1;i<=n;i++) {r=0; for(j=1;j<i;j++) {if(i%j==0){r=r+j;}} if(r==i) {cout<<i<<endl;}} return 0; }

成华区13736974329: while 循环求完数 请问哪里有错? -
油彦女金: n++位置不正确. #include<stdio.h> void main() { int n=100; while (n<1000) { int i=1,s=0; while (i<n) { if(n%i==0) { s=s+i; } i++; } if (s==n) printf("%d\n",n); n++; } }

成华区13736974329: 用MATLAB的while循环求1 - 500内的完数,这个程序错在哪里了?请大神指教! -
油彦女金: 是说完全数吧,说几个你的代码里面的问题,那个j<=i/2的判断是干嘛的,这里是要找小于i的因数,判断应该是 j<i;那个s应该没次循环都要置零,你写在循环的外面是错的;那个j=j+1的位置应该在循环的末尾,而不是在开头,要不然比如i=6,那么j=5也会进入循环,但是又加一就变成6了,和i相等了,同时前面的j=0换成j=1.发一下我修改后的截图(代码就自己看着改吧,就不复制了)

成华区13736974329: JAVA 请教各位帮我做个while循环的题 -
油彦女金: public class Main { public static void main(String[] args) { int num[]={1,1,3,4,8,9,13}; int i=0,sum=0; while (i<num.length) sum+=num[i]; System.out.println(sum); } }******************************************************************* public class Main { public ...

成华区13736974329: 求运算结果(while语句循环) -
油彦女金: #include "stdio.h" main( ) { int x=0,y=0; while(x<5&&++y) {y--;x++;}//楼主这边是不是少了个大括号 啊 printf("%d,%d",y,x);} 输出结果是 0 5

成华区13736974329: 用while语句和if语句 表示1000内的完数 -
油彦女金: public class Test { public static void main(String[] args) { int num = 2; while (numint temp = 1; int sum = 0; while (tempif (num % temp == 0) { sum += temp; } temp++; } if(sum == num){ System.out.println(num); } num++; } } }

成华区13736974329: 用while循环求1 - 100的和并输出结果 -
油彦女金: 好像没有写java的,我给补充下吧. public class He { public static viod main(String [] args) { int a = 1,b=0; while(a<=100) { b=a+b; a++; } System.out.println("1-100的合是:"+b); } }采纳哦

成华区13736974329: 编写一个程序,要求使用while循环语句计算下面数字 -
油彦女金: int i=2; int sum=0; while(i编写一个程序,要求使用while循环语句计算下面数字

成华区13736974329: 关于一个c语言的问题,用while循环计算1 - 2+3 - 4+5 - 6+7 - 8...n -
油彦女金: a没有定2113义,并且你5261计算的是1+2+3+.... 不需要用到a,修改4102如下:1653 while (b < n) { b++; //使用三元运算符回,如果b是偶数,答则-b;否则+b sum += b % 2 == 0 ? -b : b; }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网