首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 有关在linux下运行C的问题``高手来看看``菜鸟问 [已结贴,结贴人:yy164344329]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yy164344329
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-05-25 18:04:35 楼主
    #include <stdio.h>
    main()
    {double fun(int n);
    int n;
    scanf("%d",&n);
    printf("sum=%f",fun(n));
    }
    double fun(int n)
    {double sum=0.0;
    int i;
    for (i=1;i <=n;i++)
    sum+=1.0/i;
    return sum;
    }
    这程序在linux为什么会出现:
    administrator@administrator-desktop:~/桌面$ gcc -o 11 11.c
    11.c: 在函数‘main’中:
    11.c:14: 错误: expected ‘)’ before ‘sum’
    administrator@administrator-desktop:~/桌面$
    10  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • clhposs
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-25 18:06:541楼 得分:0
    VC编译正常UP
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yy164344329
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-25 18:34:532楼 得分:0
    不行吖`我在linux下不能
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • moonfeel
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-25 18:39:483楼 得分:0
    已用GCC编译,正常。

    [liup@localhost code]$ gcc -o 11 11.c
    [liup@localhost code]$ ./11
    5
    sum=2.283333[liup@localhost code]$
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yy164344329
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-25 18:44:474楼 得分:0
    但我不行吖`是不是我装少了东西?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • moonfeel
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-25 18:45:155楼 得分:0
    不知道你是不是用的最新GCC版本,最新版本的GCC要求 main()函数
    必须返回 int,即:

    #include <stdio.h>
    int main()
    {
        double fun(int n);
        int n;
        scanf("%d", &n);
        printf("sum=%f", fun(n));

        return 0;
    }
    double fun(int n)
    {
        double sum = 0.0;
        int i;
        for (i = 1; i <= n; i++)
            sum += 1.0 / i;
        return sum;
    }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • arong1234
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-25 18:49:426楼 得分:5
    也许是你代码不够严谨引起得不同版本的编译器行为不一样所致。注意代码一定要写规范了

    #include <stdio.h>
    main()  // 这里少个返回值类型声明
    {
      double fun(int n);
      int n;
      scanf("%d",&n);
      printf("sum=%f",fun(n));
    //这里少个返回值,应该加return 0;之类的代码
    }

    double fun(int n)
    {

      double sum=0.0; //注意:这里是一个可执行语句,扩展名为c就使用c编译器,因此此语句之后按照C规定不得定义新变量
      int i;  //invalid,把他移动到sum=0.0之前
      for (i=1;i <=n;i++)  //这里最好用大括号把循环体括起来。虽然你只有一个语句
    sum+=1.0/i;
      return sum;
    }


    引用 2 楼 yy164344329 的回复:
    不行吖`我在linux下不能


    因此你的代码要改成如下才对

    C/C++ code
    #include <stdio.h> double fun(int n);//函数内声明函数原型虽然不错,但是现在已经不怎么建议这么做了 int main() { int n; scanf("%d",&n); printf("sum=%f",fun(n)); return 0; } double fun(int n) { int i; double sum=0.0; for (i=1;i <=n;i++) { sum+=1.0/i; } return sum; }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • arong1234
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-25 18:51:047楼 得分:0
    最根本原因是:你使用的是.c文件扩展名,导致编译器使用C而不是C++编译,而C编译规定所有的变量定义必须在当前scope的开始,不能在任何可执行代码之后
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lala_benben
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-26 10:30:458楼 得分:0
    。。。没有返回值
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fallening
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-26 17:09:489楼 得分:0
    两个警告,写代码最好规范一点
    C/C++ code
    $ gcc -o s s.c -Wall s.c:3: warning: return type defaults to ‘int’ s.c: In function ‘main’: s.c:8: warning: control reaches end of non-void function $ cat s.c #include <stdio.h> main () { double fun (int n); int n; scanf ("%d", &n); printf ("sum=%f", fun (n)); } double fun (int n) { double sum = 0.0; int i; for (i = 1; i <= n; i++) sum += 1.0 / i; return sum; } $ ./s 4 sum=2.083333
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fallening
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-26 17:09:5510楼 得分:5
    两个警告,写代码最好规范一点
    C/C++ code
    $ gcc -o s s.c -Wall s.c:3: warning: return type defaults to ‘int’ s.c: In function ‘main’: s.c:8: warning: control reaches end of non-void function $ cat s.c #include <stdio.h> main () { double fun (int n); int n; scanf ("%d", &n); printf ("sum=%f", fun (n)); } double fun (int n) { double sum = 0.0; int i; for (i = 1; i <= n; i++) sum += 1.0 / i; return sum; } $ ./s 4 sum=2.083333
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fallening
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-26 17:10:0411楼 得分:0
    两个警告,写代码最好规范一点
    C/C++ code
    $ gcc -o s s.c -Wall s.c:3: warning: return type defaults to ‘int’ s.c: In function ‘main’: s.c:8: warning: control reaches end of non-void function $ cat s.c #include <stdio.h> main () { double fun (int n); int n; scanf ("%d", &n); printf ("sum=%f", fun (n)); } double fun (int n) { double sum = 0.0; int i; for (i = 1; i <= n; i++) sum += 1.0 / i; return sum; } $ ./s 4 sum=2.083333
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yy164344329
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-26 19:06:5212楼 得分:0
    谢了大家``
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved