| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1337 人关注过本帖
标题:麻烦大神帮忙看看bug出在哪里,怎么答案就是不对!
只看楼主 加入收藏
ajdzzy
Rank: 2
等 级:论坛游民
帖 子:9
专家分:10
注 册:2016-1-7
结帖率:0
收藏
已结贴  问题点数:10 回复次数:5 
麻烦大神帮忙看看bug出在哪里,怎么答案就是不对!
#include<stdio.h>

void in(int m,int n){
    int result ;
    for(int i=1;i<m;i++){
      m*= i;
    result = m;
    }
 
    for(int i=1;i<n;i++){
       n*=i;
    result =result/n;
    }
    int k=m-n;
    for(int i=1;i<k;i++){
   
    k*=i;
    result=result/k;
    }
   
  printf("%d",result);

}  

void main(){
printf("============================================================================\n");
printf("欢迎使用阶乘计算器!\n友情提示:您输入第一个数字一定要大于第二个数字!例如: 5  3\n");
printf("============================================================================\n");
          int x,y;
  printf("请输入两个的数字:\n");
  scanf("%d,%d",&x,&y);
 
 if(x>y){
     in(x,y);
 }else{
     printf("您的操作有误,请重新输入!");
     }
 






  
}
搜索更多相关主题的帖子: 计算器 include result 
2016-03-22 22:11
屋顶
Rank: 1
等 级:新手上路
帖 子:174
专家分:7
注 册:2016-2-27
收藏
得分:4 
回复 楼主 ajdzzy
是不是因为你主函数里scanf("%d,%d",&x,&y);中两个读取数据格式中间用的逗号中文逗号的原因,新手胡乱说的,说的不对别介意

[此贴子已经被作者于2016-3-22 23:27编辑过]

2016-03-22 23:18
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:4 
有可能是逗号的原因,不过楼主如果问类似的问题,请把你编译时候提醒的错误信息贴出来,这样大家很容易帮你分析
没有细看你的逻辑算法上有没有问题,说下你的语法方面建议改的吧;
1:不知道你的编译器支持不支持你这样定义i;for(int i=1;;){} 好像记得有书上这样写的不过有的编译器不支持,会报错
2:你的scanf的两个%d中间的逗号确认是英文输入法下的逗号吗?
3:你的main函数类型void,这个有的编译器会报警告的吧,最好用int吧,虽然你的main没有返回值
4:最后建议你在main最后提示输入错误的时候能够有语句执行,让程序回到scanf处,不然输入错误会结束运行,需要再次打开
5:不过你确定你的算法是阶乘的吗。。。

[此贴子已经被作者于2016-3-23 12:53编辑过]

2016-03-23 12:37
koma仔
Rank: 1
来 自:"><a>s</a
等 级:新手上路
帖 子:15
专家分:8
注 册:2015-3-9
收藏
得分:4 
#include<stdio.h>
void in(int m, int n){
    int result;
    for (int i = 1; i<m; i++){
        m *= i;
        result = m;
    }

    for (int i = 1; i<n; i++){
        n *= i;
        result = result / n;
    }
    int k = m - n;
    for (int i = 1; i<k; i++){

        k *= i;
        result = result / k;
    }

    printf("%d", result);

}

void main()
{
    printf("============================================================================\n");
    printf("欢迎使用阶乘计算器!\n友情提示:您输入第一个数字一定要大于第二个数字!例如: 5  3\n");
    printf("============================================================================\n");
    int x, y;
    printf("请输入两个的数字:\n");
    scanf_s("%d %d", &x, &y);

    if (x > y)
    {
        in(x, y);
    }
    else
    {
        printf("您的操作有误,请重新输入!");
    }
}

debugger by vs2013 debug

修改的地方有  
1.scanf -> scanf_s
2.%d 中间的 , 存在 也是正确的只不过输入的时候  要这样: 5,3
3.主函数最后少一个 :}
4.建议代码要规范点别人才能赏心悦目的去看你代码,希望您能明白   
2016-03-23 13:30
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:0 
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main( )
{   int i;
    int a;                //变量a用来存储计算哪一个数字的阶乘
    int jc;                 //变量jc用来存储阶乘的结果  
    char ag='y';         //用来选择是否再次运行计算  
    while(ag)
         {
            i=1;
            jc=1;   
            system("cls");   
            fflush(stdin);
            printf("输入要计算阶乘的数字,Enter确认\n\n");
            scanf("%d",&a);
            while(i<=a)
                {
                    jc=jc*i;
                    i++;
                }
            printf("%d的阶乘是%d\n\n",a,jc);
            printf("输入'Y'Enter再次计算或其他任意键Enter后退出\n\n");
            fflush(stdin);
            scanf("%c",&ag);
               if(toupper(ag)!='Y')
               break;
         }
     return 0;
}


[此贴子已经被作者于2016-3-23 13:43编辑过]

2016-03-23 13:37
ajdzzy
Rank: 2
等 级:论坛游民
帖 子:9
专家分:10
注 册:2016-1-7
收藏
得分:0 
在vs2010中编译你给我改的代码还是出现同样的问题,,,,不知道是怎么回事!很感谢你给的建议,谢谢你哈!
2016-03-23 17:20
快速回复:麻烦大神帮忙看看bug出在哪里,怎么答案就是不对!
数据加载中...
 
   



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

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