c语言出现debug error是什么引起的?
今天在写程序的时候出现了一个错误:debugerror我用的是c++6.0,后来把程序改了又改,但是还是出现debugerror警告。最后发现下面的一段程序也会出现这样的...
今天在写程序的时候出现了一个错误:debug error
我用的是c++ 6.0 ,后来把程序改了又改,但是还是出现debug error警告。
最后发现下面的一段程序也会出现这样的警告:
#include <stdio.h>
int main()
{
double s;
scanf("%lf", &s);
return 0;
}
我以为是自己的c++坏了,后来才c-free上运行是对的,但是把这个程序发给同学,然后他们在c++ 6.0 上运行也出现了同样的警告。都不知道怎么回事,非常的郁闷。 展开
我用的是c++ 6.0 ,后来把程序改了又改,但是还是出现debug error警告。
最后发现下面的一段程序也会出现这样的警告:
#include <stdio.h>
int main()
{
double s;
scanf("%lf", &s);
return 0;
}
我以为是自己的c++坏了,后来才c-free上运行是对的,但是把这个程序发给同学,然后他们在c++ 6.0 上运行也出现了同样的警告。都不知道怎么回事,非常的郁闷。 展开
3个回答
展开全部
这个必须错呀,无论输入的是几位数,你的那几个if都是要将的值变为0,是吧。多以到第五个if的时候条件s==0成立,所以这个if要将t的值变为5,所以左后switch开始的时候t==5恒成立,
犯这个错误的原因是
你对
if...else...语句嵌套理解的错误,
第一:你的程序格式及其不规范。
第二:if语句块
要用花括号
括起来{};
第三:你的程序有很多的重复语句,很浪费机器的资源,程序整体性能不高。
#include
#include
void
main()
{
int
n,s,t,a,b,c,d,e;
printf("请输入一个小于五位的数字n:\n");
scanf("%d",&n);
s=n/10;
if(s==0)
{
e=n;
t=1;
}
else
{
e=n%10;
d=s%10;
s=s/10;
if(s==0)
t=2;
else
{
c=s%10;
s=s/10;
if(s==0)
t=3;
else
{
b=s%10;
s=s/10;
if(s==0)
t=4;
else
{
a=s%10;
s=s/10;
if(s==0)
t=5;
else
t=6;
}
}
}
}
switch(t)
{
case
1:
printf("n为一位数字,每位数字为:%d",e);break;
case
2:
printf("n为二位数字,由高到低每位数字为:%d,%d\n",d,e);break;
case
3:
printf("n为三位数字,由高到低每位数字为:%d,%d,%d\n",c,d,e);break;
case
4:
printf("n为四位数字,由高到低每位数字为:%d,%d,%d,%d\n",b,c,d,e);break;
case
5:
printf("n为五位数字,由高到低每位数字为:%d,%d,%d,%d,%d\n",a,b,c,d,e);break;
default
:
printf("输入的数字超出范围!");
}
}
犯这个错误的原因是
你对
if...else...语句嵌套理解的错误,
第一:你的程序格式及其不规范。
第二:if语句块
要用花括号
括起来{};
第三:你的程序有很多的重复语句,很浪费机器的资源,程序整体性能不高。
#include
#include
void
main()
{
int
n,s,t,a,b,c,d,e;
printf("请输入一个小于五位的数字n:\n");
scanf("%d",&n);
s=n/10;
if(s==0)
{
e=n;
t=1;
}
else
{
e=n%10;
d=s%10;
s=s/10;
if(s==0)
t=2;
else
{
c=s%10;
s=s/10;
if(s==0)
t=3;
else
{
b=s%10;
s=s/10;
if(s==0)
t=4;
else
{
a=s%10;
s=s/10;
if(s==0)
t=5;
else
t=6;
}
}
}
}
switch(t)
{
case
1:
printf("n为一位数字,每位数字为:%d",e);break;
case
2:
printf("n为二位数字,由高到低每位数字为:%d,%d\n",d,e);break;
case
3:
printf("n为三位数字,由高到低每位数字为:%d,%d,%d\n",c,d,e);break;
case
4:
printf("n为四位数字,由高到低每位数字为:%d,%d,%d,%d\n",b,c,d,e);break;
case
5:
printf("n为五位数字,由高到低每位数字为:%d,%d,%d,%d,%d\n",a,b,c,d,e);break;
default
:
printf("输入的数字超出范围!");
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个确实好神奇哈,但是如果你加一个输出语句就不会出现这种情况了,然后再把那个输出语句注释了,再调试也不会出现警告了,我搜了下VC6.0的使用规则,没查到,希望楼下的来解决此问题。嘿嘿嘿嘿。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询