c语言中中getch()函数为何不起作用?
为了穷尽10个8之间只用加减剩除,而不用括号连接,所得的结果。因为我要在其中搜索某些结果,比如80,64,743,998等能不能被构造出来。我编制了如下程序,虽然可以得出...
为了穷尽10个8之间只用加减剩除,而不用括号连接,所得的结果。因为我要在其中搜索某些结果,比如80,64,743,998等能不能被构造出来。我编制了如下程序,虽然可以得出所有的组合结果,但是即使我我在最后加一个getch();程序运行一会儿也会直接结束。以前我用getch()都能挺,怎么这儿没挺呢。难道是这儿的计算量太大了吗?????
程序如下:
#include<stdio.h>
void main()
{
float b[10],sum=0;
int i,p,m,a[10],c[10];
a[0]=1;b[0]=8;
for(a[1]=1;a[1]<=4;a[1]++)
for(a[2]=1;a[2]<=4;a[2]++)
for(a[3]=1;a[3]<=4;a[3]++)
for(a[4]=1;a[4]<=4;a[4]++)
for(a[5]=1;a[5]<=4;a[5]++)
for(a[6]=1;a[6]<=4;a[6]++)
for(a[7]=1;a[7]<=4;a[7]++)
for(a[8]=1;a[8]<=4;a[8]++)
for(a[9]=1;a[9]<=4;a[9]++)
{ for(i=0;i<=9;i++)c[i]=a[i];
for(i=1;i<=9;i++)
{if(a[i]==1||a[i]==3)b[i]=8;
else if(a[i]==2){b[i]=-8;a[i]=1;}
else {b[i]=1/8.0; a[i]=3;}
}
for(i=0;i<=9;i++)
{ m=i;
while(a[i]==3)i++;
for(p=m;p<i;p++)
{b[m-1]=b[m-1]*b[p];
b[p]=0;
}
}
for(i=0;i<=9;i++)
sum=b[i]+sum;
printf("%0.1f",sum);
for(i=0;i<=9;i++)a[i]=c[i];
sum=0;
}
getch();
}
感激不尽呀!解决加分.... 加conio.h我试了,效果一样。主要的循环不在while中,while只是求对应一组符号的和值。说下算法的思路:用a[10]记录各个8的符号,用1 2 3 4 代表加减剩除。外面的很多个for就是给每一个a[i]赋值。再根据a[]确定b[] 如果a[i]是符号或者除号将b[i]确定为-8 1/8 相应的a[i]该为正号和剩号,a[i]为加剩 则b[i]为8 a[i]不变 这样a[i]中只有正号和剩号 然后搜索剩号 把有剩号连接的b[i]中最小的b[i]为他们的和 而其他用0代替 (如b1*b2*b3 则b1=b1*b2*b3 b2=0 b3=0) 最后把b[0]到b[9]加起来就求出 一组a[]所确定的结果。然后外层改变a[] 进入继续判断...... 顶起来! 展开
程序如下:
#include<stdio.h>
void main()
{
float b[10],sum=0;
int i,p,m,a[10],c[10];
a[0]=1;b[0]=8;
for(a[1]=1;a[1]<=4;a[1]++)
for(a[2]=1;a[2]<=4;a[2]++)
for(a[3]=1;a[3]<=4;a[3]++)
for(a[4]=1;a[4]<=4;a[4]++)
for(a[5]=1;a[5]<=4;a[5]++)
for(a[6]=1;a[6]<=4;a[6]++)
for(a[7]=1;a[7]<=4;a[7]++)
for(a[8]=1;a[8]<=4;a[8]++)
for(a[9]=1;a[9]<=4;a[9]++)
{ for(i=0;i<=9;i++)c[i]=a[i];
for(i=1;i<=9;i++)
{if(a[i]==1||a[i]==3)b[i]=8;
else if(a[i]==2){b[i]=-8;a[i]=1;}
else {b[i]=1/8.0; a[i]=3;}
}
for(i=0;i<=9;i++)
{ m=i;
while(a[i]==3)i++;
for(p=m;p<i;p++)
{b[m-1]=b[m-1]*b[p];
b[p]=0;
}
}
for(i=0;i<=9;i++)
sum=b[i]+sum;
printf("%0.1f",sum);
for(i=0;i<=9;i++)a[i]=c[i];
sum=0;
}
getch();
}
感激不尽呀!解决加分.... 加conio.h我试了,效果一样。主要的循环不在while中,while只是求对应一组符号的和值。说下算法的思路:用a[10]记录各个8的符号,用1 2 3 4 代表加减剩除。外面的很多个for就是给每一个a[i]赋值。再根据a[]确定b[] 如果a[i]是符号或者除号将b[i]确定为-8 1/8 相应的a[i]该为正号和剩号,a[i]为加剩 则b[i]为8 a[i]不变 这样a[i]中只有正号和剩号 然后搜索剩号 把有剩号连接的b[i]中最小的b[i]为他们的和 而其他用0代替 (如b1*b2*b3 则b1=b1*b2*b3 b2=0 b3=0) 最后把b[0]到b[9]加起来就求出 一组a[]所确定的结果。然后外层改变a[] 进入继续判断...... 顶起来! 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询