| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 795 人关注过本帖
标题:C基础习题,TC上可编译运行,无输出,求解
只看楼主 加入收藏
ffviiisqull
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-6-11
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:9 
C基础习题,TC上可编译运行,无输出,求解
谭浩强C 习题6.7
找1000以内“完数”,即因数和相加等于自身的数, 如6=1+2+3
我的程序部分如下
int a,s,y;    /*其中y为a的因数,s为a的因数和*/
for(a=1;a<1000;a++)
{
  for(y=1;y<=a/2;y++)    /*计算a的因数和*/
  if(a%y==0)s+=y;        
  if(s==a) /*判断是否为“完数”*/
  {
    printf("%d its factore are ",s);
    for(y=1;y<=a/2;y++) /*输出a的全部因数*/
    if(a%y==0)printf("%d ",y);
  }
}

该程序可运行,没有任何输出,求解
搜索更多相关主题的帖子: 习题 基础 求解 编译 输出 
2010-06-11 18:07
xuxu_c
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2010-6-11
收藏
得分:0 
printf("%d its factore are ",s);
后面加上getch();
2010-06-11 18:13
ffviiisqull
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-6-11
收藏
得分:0 
不行,无法解决

另外我想知道为什么要加上这一句?
2010-06-11 18:19
ffviiisqull
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-6-11
收藏
得分:0 
没人解答么。。。。
2010-06-11 19:05
myhnuhai
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:3
帖 子:425
专家分:1725
注 册:2010-3-17
收藏
得分:1 
给你一个我调用函数写的吧:
#include"stdio.h"
void main()
{
    int i,wanshu(int n);
    for(i=1;i<1000;i++)
            {
                   if(i==wanshu(i))
                 printf("%6d ",i);
            }
}
int wanshu(int n)
{
int sum=0,i;
for(i=1;i<n;i++)
  if(n%i==0)sum=sum+i;
return sum;
}

不要让肮脏的记忆,迷失了原本纯洁的心灵!
2010-06-11 19:12
Sheldon
Rank: 1
等 级:新手上路
帖 子:21
专家分:8
注 册:2010-6-2
收藏
得分:3 
for(y=1;y<=a/2;y++)    /*计算a的因数和*/
       s=0;//没有初始化
  if(a%y==0)s+=y;        
  if(s==a) /*判断是否为“完数”*/
2010-06-11 19:12
方廷
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:47
专家分:176
注 册:2010-6-9
收藏
得分:3 
//试试这个
#include<stdio.h>
main()
{
int a,s,y;    /*其中y为a的因数,s为a的因数和*/
for(a=1;a<1000;a++)
{
  for(y=1,s=0;y<=a/2;y++)    /*计算a的因数和*/
  if(a%y==0)s+=y;        
  if(s==a) /*判断是否为“完数”*/
  {
    printf("%d its factore are ",s);
    for(y=1;y<=a/2;y++) /*输出a的全部因数*/
    if(a%y==0)printf("%d ",y);
    printf("\n");
  }
}
}
2010-06-11 19:19
myhnuhai
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:3
帖 子:425
专家分:1725
注 册:2010-3-17
收藏
得分:3 
这是你的,我给你改了一下:
#include"stdio.h"
void main()
{
    int a,s,y;  
    for(a=1;a<1000;a++)
    {
        s=0;  //s要在这里初始化,因为判断几个数就要使用s变量,所以每次对一个数判断开始时要对s重新赋值为0,不然的话会出错!
      for(y=1;y<=a/2;y++)   
      if(a%y==0)s=s+y;        
      if(s==a)
        {
        printf("%d its factore are ",a);
        for(y=1;y<=a/2;y++)
        if(a%y==0)printf("%d ",y);
        printf("\n");
        }
    }

}

不要让肮脏的记忆,迷失了原本纯洁的心灵!
2010-06-11 19:29
ffviiisqull
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-6-11
收藏
得分:0 
谢谢谢谢,刚出去吃饭了,才回来,先谢再看
2010-06-11 20:03
ffviiisqull
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-6-11
收藏
得分:0 
已经解决,S没有初始化的问题
谢谢
2010-06-11 20:11
快速回复:C基础习题,TC上可编译运行,无输出,求解
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030436 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved