为什么输不出完数哇 问题在code里面

img


检查了好几遍,就是输不出完数的值来哪里错了呢?问题在图片上 谢谢

改动处见注释,供参考:

#include <stdio.h>
int main()
{
    int n, i, iSum;
    printf("1000以内的完数有:");  // 修改
    for (n = 1; n <= 1000; n++) {
        for (i = 1,iSum = 0; i <= n / 2; i++) { // 修改 iSum = 0 ,每个 n 需iSum复位归零
            if (n % i == 0)
                iSum += i;
        }
        if (iSum == n)
            printf("%d ", iSum);
    }
    return 0;
}

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7710209
  • 这篇博客你也可以参考下:codeup|输入3个字符串,按从小到大的顺序输出。要求使用指针的方法进行处理。
  • 除此之外, 这篇博客: 如何输入未知长度字符(三种方法总结)中的 code 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 属于一个字符串,其中以空格隔开。
    方法1

    int num=0;
    char ans[100][100];
    while(scanf("%s",ans[num])!= EOF){
    	num++
    }
    

    方法2

    tring s[81];
    int num=0; 
    while(cin >> s[num]){
       num++;
    }
    //如果是cin>>s[num++],最后一个字符没输入的时候,Num会++,
    

    方法3
    c++竟然没有 split函数,这也太 。。。不方便了。

    #include <string.h>
    #include <stdio.h>
    #include <iostream>
    int main(){
      char s[1000] ;
      getline(cin,s);
      const char *sep = ",*"; //可按多個字符來分割
      char *p;
      p = strtok(s, sep);
      while(p){
        printf("%s ", p);
        p = strtok(NULL, sep);
      }
      printf("\n");
      return 0;
    }
    //輸出: a b c d