| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 949 人关注过本帖
标题:请帮我上0和负数时,为什么结果老是1???
只看楼主 加入收藏
defhvk
Rank: 2
等 级:论坛游民
帖 子:62
专家分:29
注 册:2011-4-8
结帖率:93.33%
收藏
 问题点数:0 回复次数:10 
请帮我上0和负数时,为什么结果老是1???
#include<stdio.h>
float x(int);
main()
{
   int a;
   printf("请输入一个数:");
   scanf("%d",&a);
   printf("\n%d!是:%f",a,x(a));
}

float x(b)
{
  float s=1,a=1;
  if (b<0)
      b=-b;
  if(b=0)
      s=0;
   while (a<=b)
   {
     s=s*a;
     a++;
   }
   return s;
}
2011-04-08 23:57
defhvk
Rank: 2
等 级:论坛游民
帖 子:62
专家分:29
注 册:2011-4-8
收藏
得分:0 
#include<stdio.h>
float x(int);
main()
{
   int a;
   printf("请输入一个数:");
   scanf("%d",&a);
   printf("\n%d!是:%f",a,x(a));
}

float x(b)
{
  float s=1,a=1;
  if (b< 0)
      b= -b;
  if(b==0)
      s=0;
   while (a<=b)
   {
     s=s*a;
     a++;
   }
   return s;
}
请帮忙看一下,为什么输入0和负数时,结果老是1??
2011-04-09 00:02
海之舟
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:43
专家分:150
注 册:2011-1-8
收藏
得分:0 
没有这回事啊.
2011-04-09 00:08
defhvk
Rank: 2
等 级:论坛游民
帖 子:62
专家分:29
注 册:2011-4-8
收藏
得分:0 
什么没有这回事?
2011-04-09 00:09
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:0 
按你的思路修改的。
程序代码:
#include<stdio.h>
int x(int b);
int main(void) {
   int a;
   printf("enter");
   scanf("%d",&a);
        if(a<=0) {
                printf ("Error!\n");
                return 1;
        }

   printf("\n%d!is%i\n",a,x(a));

        return 0;
}


int x(int b) {
  int s=1,a=1;
  while(a<=b) {
     s=s*a;
     a++;
   }
   return s;
}

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-04-09 00:10
海之舟
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:43
专家分:150
注 册:2011-1-8
收藏
得分:0 
我输入0时,显示结果是:0!是 0.000000
输入-9时,显示结果是:-9!是 362880.000000
结果何来1?
2011-04-09 00:24
bjl2010
Rank: 2
等 级:论坛游民
帖 子:23
专家分:27
注 册:2010-12-13
收藏
得分:0 
你是不是要 求一个正数的阶乘啊????
2011-04-09 12:04
罗伯特于
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-4-5
收藏
得分:0 
浮点型与整形之间的转换问题,你读入的a值为整形,而在调用函数中接受变量b为浮点型。愚见
2011-04-09 14:41
jackboos
Rank: 2
等 级:论坛游民
帖 子:21
专家分:37
注 册:2011-4-6
收藏
得分:0 
当主函数中a<0时 传给x()中的b b取反为正 正好x()中(a<=b)=1 所以s=s*a=1*1=1 然后输出S=1
当主函数a=0时 x()中b=0 取反b=0 a>b 不进行while循环 直接输出s=1
2011-04-09 15:17
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:0 
if(b=0)错了
float x(int b)
{
  float s=1,a=1;
  if (b<0)
      b=-b;
  else if(b==0)
      s=0;
   else {while (a<=b)
   {
     s=s*a;
     a++;
     
   }
   
}
   return s;
}
main()
{  int a;
   printf("请输入一个数:");
   scanf("%d",&a);
   printf("\n%d!是:%f",a,x(a));

getch();
}
2011-04-09 15:34
快速回复:请帮我上0和负数时,为什么结果老是1???
数据加载中...
 
   



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

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