我不是C或其他新手,我只是做了几次练习......
for (i=0;i<no_1;i++)
{
if (no_1%i==0)
{
number_1=i;
}
此程序旨在显示两个输入数字的最高公因数。问题是,我的代码在用户输入第二个数字后不断停止,我得到此选项以向Microsoft发送错误报告(我正在使用Windows XP)
我已经删除了所有代码,并意识到导致程序停止的是模数运算符,但老实说我不明白为什么。我尝试在程序中单独使用模运算符,我测试10%2==0
。这工作得很好。因此,通过演绎,我的问题必须是因为我使用的数字是用户输入的变量。但那为什么它仍然不起作用?我错过了一些黄金法则吗?
答案 0 :(得分:4)
答案 1 :(得分:0)
将您的代码更改为:
int main()
{
int no_1,no_2,number_1=0,number_2=0,i,j;
printf("Enter a number: ");
scanf("%d",&no_1);
printf("\nEnter another number: ");
scanf("%d",&no_2);
for (i=1;i<no_1;i++)
{
if (no_1%i==0)
{
number_1=i;
}
}
for ( j=1;j<no_2;j++)
{
if (no_2%j==0)
{
number_2=j;
}
}
if (number_1==number_2)
printf("The HCF is %d",number_1);
else
printf("The HCF is 1");
return 0;
}
这种情况正在发生,因为您从0
启动了计数器,导致除以零错误。对1
loop.
启动计数器