A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© claud0623 中级黑马   /  2014-7-10 23:16  /  2313 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 claud0623 于 2014-7-13 15:36 编辑

刚敲了一个关于阶乘求和的代码,编译时出现一个错误,怎么检查都不知道错误出现在哪里,还望大神前来相救啊,附上源码:
  1. /*
  2. 题目:
  3. 编写一个函数int pieAdd(int n),计算1!+2!+3!++n!的值(n>=1)。
  4. 比如pieAdd(3)的返回值是1! + 2! + 3! = 1 + 1*2 + 1*2*3 = 9
  5. */
  6. #include <stdio.h>
  7. int pieAdd(int n);
  8. int main
  9. {   
  10.     int n=0;
  11.     while(n<=0)
  12.     {
  13.         printf("请输入一个正整数:\n");
  14.         scanf("%d",&n);
  15.     }
  16.     int result=pieAdd(n);
  17.     printf("总和为:%d",result);
  18.     return 0;
  19. }
  20. int pieAdd(int n)
  21. {
  22.     int sum=0;
  23.     for(int i=1;i<=n;i++)//多少个阶乘
  24.     {
  25.         int temp=1;
  26.         for(int j=1;j<=i;j++)//每行多少个数相乘
  27.         {
  28.             temp*=j;//每个阶乘的值
  29.         }
  30.         sum+=temp;//阶乘总和
  31.         
  32.     }
  33.     return sum;
  34. }

复制代码
编译时出现的错误如下:
阶乘之和.c:9: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
我看了一下,第九行只有一个大括号,不知错误在哪里。

7 个回复

倒序浏览
楼主,我郁闷哦!你main函数没有写小括号!main()
回复 使用道具 举报
每个方法都有参数的,main函数也不例外的,#include <stdio.h> int pieAdd(int n); int main() {    这样改,加小括号就行啦!!!
回复 使用道具 举报
从写了一个,你看看
  1.     #include "stdafx.h"  
  2.     #include <stdio.h>  
  3.       
  4.     int getmul(int n){//递归求阶乘  
  5.        int sum;  
  6.        int temp = 1;  
  7.        if(n<=0){   
  8.             printf("输入的数据错误,不能小于0!\n");  
  9.             return -1;  
  10.         }else{  
  11.               if(n ==1 ){ sum = 1; return sum;}  
  12.                else {  
  13.                    sum =n * getmul(n-1);   
  14.                    return sum;  
  15.               }  
  16.          }  
  17.     }  
  18.       
  19.     int getSum(int n){//递归求和  
  20.           int sum;  
  21.           if(n==0){  
  22.                sum =0;  
  23.           }else{  
  24.                sum = getmul(n) + getSum(n-1);  
  25.          }  
  26.           return sum;  
  27.     }  
  28.       
  29.     void print(int n){//打印  
  30.        for(int i=1; i <=n; i ++){  
  31.           if(i==n) printf("%d!=",i);  
  32.           else printf("%d!+",i);  
  33.        }  
  34.     }  
  35.       
  36.     int main(int argc, char* argv[])  
  37.     {  
  38.        int a = 10;//此为求1到10的阶乘只和  
  39.        print(a);  
  40.        printf("%d\n",getSum(a));//调用  
  41.        return 0;  
  42.     }  


复制代码
回复 使用道具 举报
huangqiwa 发表于 2014-7-11 00:00
楼主,我郁闷哦!你main函数没有写小括号!main()

谢谢,没想到犯了这么个低级错误。
回复 使用道具 举报
第九行找不到的话,就往上面找,那就是main后面缺少()了。
回复 使用道具 举报
火拳 中级黑马 2014-7-20 11:01:59
7#
看了你的代码我心里的包袱放下了,原来,还有比我马虎的人,我好激动,可能是因为每次打开项目,main方法都是自动生成的,所以呢,不会写或者是忘记写,可以理解,但是,以后最好不要犯这样的错了,掉面子啊

点评

来黑马,悲哀的不是马虎,而是明知道自己马虎却不敢直视自己的错误,还找借口。阻碍一个人前进的障碍不是安于现状,而是从他人身上寻求慰藉。  发表于 2014-7-20 19:11
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马