当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 9 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 问个菜菜的问题,看看是不是变量类型的问题
帖子发表于 : 2007-12-28 15:01 
头像

注册: 2007-05-06 2:01
帖子: 889
地址: 特麓村->浦北->五山->罗湖
送出感谢: 2
接收感谢: 0 次
代码:
#include<stdio.h>
long int fac(int n)
   {if (n==1) return 1L;
   else return n*fac(n-1);
   }
void main()
   {int i,m;
   printf("Please input a number:");
   scanf("%d",&m);
   for (i=1;i<=m;i=i+1)
      {
      printf("%d!=%d\n",i,fac(i));
      }
   }

为什么结果是这样的?是不是变量类型的问题


附件:
c.gif
c.gif [ 1.15 KiB | 被浏览 571 次 ]


_________________
Ubuntu 9.04 & Win Xp
------------------------------------------------------
Company: http://www.mazingtech.com
HomePage: http://www.arsui.com
页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2007-12-28 15:07 

注册: 2006-03-10 15:10
帖子: 3182
地址: xi'an China
送出感谢: 0 次
接收感谢: 2
代码:
#include<stdio.h>

long int fac(int n)
{
    if (n==1)
        return 1L;
    else
        return n*fac(n-1);
}
int main()
{
    int i,m;
    printf("Please input a number:");
    scanf("%d",&m);
    for (i=1;i<=m;i=i+1)
    {
        printf("%d!=%ld\n",i,fac(i));                 
    }
    return 0;
}


1主要是你的 printf中,long对应 %ld

题外话:
2.编译程序时要加 -Wall 选项
3.找本好点的书看,至少要main前面有个int的


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2007-12-28 15:34 
头像

注册: 2006-04-12 20:05
帖子: 8495
地址: 杭州
送出感谢: 0 次
接收感谢: 8
dbzhang800 写道:
代码:
#include<stdio.h>

long int fac(int n)
{
    if (n==1)
        return 1L;
    else
        return n*fac(n-1);
}
int main()
{
    int i,m;
    printf("Please input a number:");
    scanf("%d",&m);
    for (i=1;i<=m;i=i+1)
    {
        printf("%d!=%ld\n",i,fac(i));                 
    }
    return 0;
}


1主要是你的 printf中,long对应 %ld

题外话:
2.编译程序时要加 -Wall 选项
3.找本好点的书看,至少要main前面有个int的

赞~


_________________
关注我的blog: ε==3


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2007-12-28 15:48 
头像

注册: 2007-12-02 14:09
帖子: 705
送出感谢: 0 次
接收感谢: 0 次
%d的问题 自己看看print


_________________
悟以往之不鉴,知来者之可追
识迷途其未远 觉今是而昨非


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2007-12-28 22:58 
头像

注册: 2007-05-06 2:01
帖子: 889
地址: 特麓村->浦北->五山->罗湖
送出感谢: 2
接收感谢: 0 次
嘎嘎~
谢谢楼上诸位~


_________________
Ubuntu 9.04 & Win Xp
------------------------------------------------------
Company: http://www.mazingtech.com
HomePage: http://www.arsui.com


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2007-12-29 20:27 

注册: 2007-09-05 1:09
帖子: 156
地址: beijing
送出感谢: 0 次
接收感谢: 0 次
......................................................
代码:
#include<stdio.h>
long int fac(int n)
   {if (n==1) return 1L;
   else return n*fac(n-1);
   }
void main()
   {int i,m;
   printf("Please input a number:");
   scanf("%d",&m);
   for (i=1;i<=m;i=i+1)
      {
      printf("%d!=%d\n",i,fac(i));
      }
   }


朋友用scanf别忘记加if判断一下,最好形成习惯.再用errno.h里的 perror()输出报错.
再把0 -1 都定义成宏.从开始就养成这样的习惯.当代码量大了之后,你那种写法只会给你带来无穷无尽的噩梦.

这样写
代码:
if(!scanf()){
      perror("scanf()");
      exit(ERROR);
}


页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2007-12-30 21:41 
头像

注册: 2007-05-06 2:01
帖子: 889
地址: 特麓村->浦北->五山->罗湖
送出感谢: 2
接收感谢: 0 次
谢谢ls~,
代码:
#include<stdio.h>
#include<errno.h>

long int fac(int n)
{
    if (n==1)
        return 1L;
    else
        return n*fac(n-1);
}
int main()
{
    int i,m;
    printf("Please input a number:");
    scanf("%d",&m);
        if (!scanf()){
                perror("scanf()");
                exit(ERROR);
                }
    for (i=1;i<=m;i=i+1)
    {
        printf("%d!=%ld\n",i,fac(i));
    }
    return 0;
}

你是说这样?
编译不成功哇~


_________________
Ubuntu 9.04 & Win Xp
------------------------------------------------------
Company: http://www.mazingtech.com
HomePage: http://www.arsui.com


页首
 用户资料  
 
8 楼 
 文章标题 :
帖子发表于 : 2007-12-30 21:57 
头像

注册: 2006-12-07 17:32
帖子: 234
送出感谢: 0 次
接收感谢: 0 次
我学第一本C的书就是void main的。 :em25


_________________
十年磨一剑,霜刃未曾试。今日把示君,谁有不平事?


页首
 用户资料  
 
9 楼 
 文章标题 :
帖子发表于 : 2008-01-01 11:25 

注册: 2006-03-10 15:10
帖子: 3182
地址: xi'an China
送出感谢: 0 次
接收感谢: 2
arsui 写道:
谢谢ls~,
代码:
#include<stdio.h>
#include<errno.h>

long int fac(int n)
{
    if (n==1)
        return 1L;
    else
        return n*fac(n-1);
}
int main()
{
    int i,m;
    printf("Please input a number:");
[color=red]    scanf("%d",&m);
        if (!scanf()){
                perror("scanf()");
                exit(ERROR);
                }[/color]
    for (i=1;i<=m;i=i+1)
    {
        printf("%d!=%ld\n",i,fac(i));
    }
    return 0;
}

你是说这样?
编译不成功哇~

这样是不行的,他的意思是 每次用scanf的时候,都要检查它的返回值。

代码:
if(!scanf("%d",&m))
{
  printf("Error: -------");
  exit(1);
}


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 9 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译