| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1017 人关注过本帖, 1 人收藏
标题:初学者的问题,愿大家帮帮忙!这个为何输不出结果
只看楼主 加入收藏
gball
Rank: 3Rank: 3
等 级:禁止发言
帖 子:56
专家分:192
注 册:2011-9-23
收藏
得分:3 
提示: 作者被禁止或删除 内容自动屏蔽

在网吧通宵泡论坛发贴子,挣齐所有大学学费,详情请点击:   http://www.vikkk.tk/
2011-10-23 16:14
我是菜鸟是我
Rank: 2
等 级:论坛游民
帖 子:49
专家分:94
注 册:2011-3-21
收藏
得分:3 
fc()函数前加的是返回值类型  前面加了void就是说返回值是空  貌似就是说没有返回值了吧   什么都不加  好像是默认类型 即 int型   我也记得不太清楚了
2011-10-23 16:25
爱闹的娃
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:265
专家分:975
注 册:2011-10-23
收藏
得分:0 
回复 2楼 吴军旗
主要是实现1的k次方+2的k次方+3的k次方.....一直加
2011-10-23 17:09
爱闹的娃
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:265
专家分:975
注 册:2011-10-23
收藏
得分:0 
回复 12楼 我是菜鸟是我
我修改了一下,将void改为int,但是在调试阶段不出现值,编译没有错误提示,主要想实现1的k次方+2的k次方+3的k次方.....以此循环下去..........是不是我的程序有问题
2011-10-23 17:57
爱闹的娃
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:265
专家分:975
注 册:2011-10-23
收藏
得分:0 
#include "stdio.h"
int fc(int n,int k)
{ int j,i,s;
  for(j=1;j<=n;j++)
     { s=0;
       for(i=1;i<=k;i++)
       { j*=j;}
       s+=j;
   }
 return s;
}
void main()
{  int y,a,b;
   scanf("%d%d",&a,&b);
   y=fc(a,b);
   printf("%d",y);
}
经过大家的纠正,我自己又修改了一下,发现结果不正确,比如1的平方+2的平方+3的平方,运行的结果是16,但是真实的结果是14啊!大家帮忙看看这程序能不能实现1^2+2^2+3^2+4^2+....+n^2
2011-10-23 18:52
随风飘荡
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:208
专家分:598
注 册:2011-9-9
收藏
得分:3 
呵呵,你的代码格式好乱....这个是我的, 同是初学者哦~

程序代码:
#include <stdio.h>
int fc (int ,int );

int main(void)
{
    int a,b,y;

    printf("输入终止值:");
    scanf("%d", &a);
    printf("输入n次幂:");
    scanf("%d", &b);

    y = fc(a,b);
    printf("最终结果: %d\n",y);

    return 0;
}

int fc (int na,int nb)
{
    int i,j;
    int temp;
    int save = 0;

    for (i=1; i<=na; ++i)
    {
        temp = i;     //循环到 n ,用于保存临时值,而不是修改i的值
        for (j=1; j<nb; ++j)  //n次方
        {
            temp = temp * i;  //这里可不能是temp * temp 哦,因为这样假设计算的是2的立方的话就会变成 2 * 2 = 4, 4 * 4 = 16,而不是 2 * 2 = 4, 4 * 2 = 8

        }
        save = save + temp;  //保存
    }
    return save;
}



[ 本帖最后由 随风飘荡 于 2011-10-23 20:08 编辑 ]
2011-10-23 19:47
随风飘荡
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:208
专家分:598
注 册:2011-9-9
收藏
得分:0 
至于你这个
程序代码:
int fc(int n,int k)
{ int j,i,s;
  for(j=1;j<=n;j++)
   {  
       s=0;           //由于你每次都执行了归零操作,s将无法保存一直下来的数
       for(i=1;i<=k;i++) //假设输入的是2 这样会循环两次的,因为 2<=2才会停止,所以这样算的是两次j*j 所以结果就是j*j*j 。(不知道怎么表达了,呵呵 看看就好)
       { j*=j;}     //这样会直接对for循环里面的j进行运算,第一次是 1 * 1=1 , 1 * 1 = 1所以没影响, 第二次就是 2 * 2 =4, 4 * 4 = 16并且由于16<=n 成立所以跳出循环
       s+=j;        
   }
return s;        //所以最终返回的就是4 * 4 的值
}
void main()
{  int y,a,b;
   scanf("%d%d",&a,&b);
   y=fc(a,b);
   printf("%d",y);
} 



[ 本帖最后由 随风飘荡 于 2011-10-23 20:47 编辑 ]
2011-10-23 19:57
yj269172025
Rank: 2
等 级:论坛游民
帖 子:41
专家分:81
注 册:2011-9-29
收藏
得分:3 
你的那个fc()函数的返回值为空(void),当然y = fc(a, b);的y得不到想要的值哦,就不用看fc内部函数了
float fc(int n,int k)定义然后在去改改看吧!
2011-10-23 20:51
快速回复:初学者的问题,愿大家帮帮忙!这个为何输不出结果
数据加载中...
 
   



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

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