求帮忙看一下最大公约数
#include <stdio.h>int main()
{
int m,n,t,i,a;
printf("输入两个整数m,n:");
scanf("%d %d",&m,&n);
while(i!=0)
{
m%n==i;
t=n;
a=i;
n=a;
m=t;
}
printf("最大公约数为:%d",t);
return 0;
} 指点一下为啥while死循环了 运行的时候输入完数字就没反应了 谢谢!
本帖最后由 jackz007 于 2019-11-4 01:58 编辑
循环变量 i 没有赋初值,而且,在整个循环过程中,i 的值始终没给改变,如何能不死循环?
试试我修改的代码:
#include <stdio.h>
int main(void)
{
int m , n , t ;
printf("输入两个整数 m , n : ") ;
scanf("%d%d", & m , & n) ;
if(m > 0 && n > 0) for(; n > 0 ; t = m % n , m = n , n = t) ;
else m = 0 ;
if (m > 1) printf("最大公约数为 : %d\n" , m) ;
else printf("m , n 没有最大公约数\n") ;
} 本帖最后由 bin554385863 于 2019-11-4 03:51 编辑
#include <stdio.h>
int main()
{
int m,n,t,i,a;
printf("输入两个整数m,n:");
scanf("%d %d",&m,&n);
while(i!=0)——>i没有初始化,当然会陷入死循环
{
m%n==i;
t=n;
a=i;
n=a;
m=t;
#include <stdio.h>
int main(int argc, char const *argv[])
{
int m = 1, n = 1, res = 0, count = 0;
printf("请输入计算的次数\n");
scanf("%d", &count);
while (count != 0)
{
printf("请输入要计算的两个数\n");
scanf("%d%d", &m, &n);
if ((n && m) != 0)
{
int t = m < n ? m : n; //最大公约数必然小于较小的数
for (size_t i = t; i >= 1; i--)
{
if ((m % i == 0) && (n % i == 0))
{
res = i;
break;
}
}
}
else
{
printf("无效数字0, 请重新输入\n\n");
continue;
}
printf("[%d]和[%d]的最大公约数是(%d)\n\n", m, n, res);
count--;
res = 0;
}
return 0;
}
---------------------------------------------------------------------------------------------------
PS E:\Users\admin\Documents\VScode> & 'c:\Users\admin\.vscode\extensions\ms-vscode.cpptools-0.26.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-ouganha0.xjx' '--stdout=Microsoft-MIEngine-Out-3d2cknc2.gdv' '--stderr=Microsoft-MIEngine-Error-o4fgkqzu.uva' '--pid=Microsoft-MIEngine-Pid-pnioebrm.avr' '--dbgExe=D:\MinGW\bin\gdb.exe' '--interpreter=mi'
请输入计算的次数
3
请输入要计算的两个数
32 0
无效数字0, 请重新输入
请输入要计算的两个数
23 25
和的最大公约数是(1)
请输入要计算的两个数
120 564
和的最大公约数是(12)
请输入要计算的两个数
999 555
和的最大公约数是(111)
PS E:\Users\admin\Documents\VScode> jackz007 发表于 2019-11-4 00:19
循环变量 i 没有赋初值,而且,在整个循环过程中,i 的值始终没给改变,如何能不死循环?
试 ...
谢谢! c语言种,定义变量不赋初始值,系统会给一个默认值(内存空间地址),你可以debuger看一下,对你理解有一定帮助。 heboy18 发表于 2019-11-4 09:34
c语言种,定义变量不赋初始值,系统会给一个默认值(内存空间地址),你可以debuger看一下,对你理解有一定 ...
“系统会给一个默认值”
这句应该改成这样比较合适
系统会给一个随机值
人造人 发表于 2019-11-4 12:29
“系统会给一个默认值”
这句应该改成这样比较合适
表达错误,谢谢指正 heboy18 发表于 2019-11-4 09:34
c语言种,定义变量不赋初始值,系统会给一个默认值(内存空间地址),你可以debuger看一下,对你理解有一定 ...
好的 谢谢! 人造人 发表于 2019-11-4 12:29
“系统会给一个默认值”
这句应该改成这样比较合适
{:10_297:}
页:
[1]