c语言程序纠错,这个是算阶乘的程序

c语言程序纠错,这个是算阶乘的程序,第1张

在写这个算法前,你需要先明白一个问题:

int 指的是signed int(有符号),其范围指的是:-2147483648~+2147483647。

unsigned int (无符号) , 其范围为0~4294967295 。

22的阶乘是 一个有23位的数,无论是signed int 还是 unsigned int 都不能表示,

double 的数据类型取值范围如下:

1、负值取值范围为 -179769313486231570E+308 到 -494065645841246544E-324;

2、正值取值范围为 494065645841246544E-324 到 179769313486231570E+308

有上可以,无论是有符号的double,还是无符号的double,都足以表示22的阶乘,

所以,此时你应该将fact定义成double(有符号,无符号都可以)。

如果以上回答对你有帮助, 请采纳一下, 谢谢。

#include<iostream>

#include<windowsh>

#include<conioh>

#include<timeh>

#include<fstream>

using namespace std;

int main()

{

    cout<<"请输入坐标:";

    int key,cx=0,cy=0;

    char ka=0,kb=0,kc=0,kd=0,n=0;

    cout<<"x:";

    while(1)

    {

        if(kbhit())//如果按下键,值为true

        {

            key=getch();

            if((key>47)||(key<58))//按下数字键

            {

                if(!ka)

                {

                    ka=static_cast<char>(key);

                    cout<<ka;

                }//ka为按下的数字键值

                else if((!kb)&&(n==0))//已按回车则跳过kb

                {

                    kb=static_cast<char>(key);

                    cx=ka10+kb-528;//自动计算(528=4811='0'11)

                    cout<<kb<<" y:";//kb已满则自动空格

                    n=1;

                }

                else if(!kc)

                {

                    kc=static_cast<char>(key);

                    cout<<kc;

                }

                else if(!kd)

                {

                    kd=static_cast<char>(key);

                    cy=kc10+kd-528;

                    cout<<kd;

                    n=2;

                }

                else break;

            }

            else if(key==8)//退格键

            {

                if(kd)//kd不为空

                {

                    kd=0;

                }

                else if(kc)

                {

                    kc=0;

                }

                else if(kb)

                {

                    kb=0;

                }

                else if(ka)

                {

                    ka=0;

                }

            }

            else if((key==32)||(key==161)||(key==13))//空格、全角空格及回车

            {

                if(n==2)//输入完成后再次回车

                {

                    break;

                }

                if((ka)&&(!n)&&(!kb))//ka不为空且未按回车且kb为空(若kb已满则已自动空格)

                {

                    cx=ka-'0';//第一个坐标为个位数

                    cout<<" y:";

                    n=1;

                }

                else if((kc)&&(n==1)&&(!kd))

                {

                    cy=kc-'0';

                    break;

                }//完成输入

            }//空格的if

        }//按键的if

    }//循环结束

    cout<<endl<<cx<<" "<<cy<<endl;

    cout<<"game over"<<endl;

    getch();

    return 0;

}#include <iostream>

#include <conioh>

using namespace std;

int main()

{

    cout<<"请输入坐标:"<<endl;

    int cx=0,cy=0;

    

    cout<<"x:";

    cin>>cx;

    cout<<"y:";

    cin>>cy;

// 进一步对数据进行处理 

    cout<<endl<<cx<<" "<<cy<<endl;

    cout<<"game over"<<endl;

    getch();

    

    

    return 0;

}

错误有两个:

1、if条件判断语句中不能使用break关键字,该关键字只能用在循环控制中,如for、while,或者switch中,此处,break可以改为return 0;

2、函数void NextDay(int &a,int &b,int &c)的定义中间,在函数的形参中已经定义了三个变量,在函数体内再次定义它们,会导致重复定义,报错,此处,无需定义。

改后的源代码:

#include<iostream>

#include<stdioh>

#include<conioh>

using namespace std;

void NextDay(int &a,int &b,int &c);

int main()

{

int x,y,z;

char ch;

scanf("%d%d%d",&x,&y,&z);

NextDay(x,y,z);

printf("%d%d%d\n",x,y,z);

x=x,y=y,z=z;

ch=getch();

if(ch=='#')

{

printf("\n");

return 0;

}

else

{

NextDay(x,y,z);

printf("%d%d%d\n",x,y,z);

}

return 0;

}

void NextDay(int &a,int &b,int &c)

{

//int a,b,c;

if (b==1||b==3||b==5||b==7||b==8||b==10||b==12&&c<31 )

c++ ;

else if (b==12&&c==31)

{

c=1;

b=1;

a++;

}

else if (b==1||b==3||b==5||b==7||b==8||b==10&&c==31 )

{

c=1;

b++;

}

else if (b==4||b==6||b==9||b==11&&c<30 )

c++ ;

else if (b==4||b==6||b==9||b==11&&c==30)

{

c=1;

b++;

}

else if (b==2)

{

if (((int)a%4==0&&(int)a%100!=0)||((int)a%400==0) &&(c<=28) )

c++;

else if (c==29)

{

c=1;

b++;

}

else

{

if (c<=27)

c++;

else if (c==28)

{

c=1;

b++;

}

}

}

}

以上就是关于c语言程序纠错,这个是算阶乘的程序全部的内容,包括:c语言程序纠错,这个是算阶乘的程序、C++程序纠错、c++程序纠错等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10079329.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存