c程序设计中,程序无错,但不能执行

来源:百度知道 编辑:UC知道 时间:2024/06/22 02:37:58
#include<stdio.h>
void main()
{
int m,n,a,b,c,e;
scanf("%d,%d",&m,&n);
if(m<n)
{
m=n;
n=m;
}
a=m;
b=n;
c=m%n;
while(c!=0)
{
m=n;
n=c;
}
e=a*b/n;
printf("max=%d,min=%d\n",n,e)
}

if(m<n)
{
m=n;
n=m;
}
这一段错了。
改成这样:

int i;
if(m<n)
{
i=m;
m=n;
n=i;
}

高 实在是高...

#include<stdio.h>
void main()
{
int m,n,a,b,c,e,t;
scanf("%d,%d",&m,&n);
if(m<n)
{
t=n;
n=m;
m=t;//调换顺序的常用方法
}
a=m;
b=n;
c=m%nl
while(c!=0)
{
m=n;
n=c;
c=m%n;//加上这一句
}
e=a*b/n;
printf("max=%d,min=%d\n",n,e)
}

程序编译不错,只代表语法没错。下面一段时问题所在。
while(c!=0)
{
m=n;
n=c;
}
c的数值没变过,只要上面语句让C不等于0,程序就死在这里了。
--------------------------------------------------------------------
if(m<n)
{
m=n;
n=m;
}
这个语句的作用变成只要m<n后,m和n的值就都等于n的值。这段能运行,但是让你的程序变成BUG

程序有错!当m<n,对m和n的值进行交换时,应该用一个中间变量保存其中一个中间变量的值。
可以将:
f(m<n)
{
m=n;
n=m;
}
改为:
int temp;