// while(((a-b)>0.0001) || ((b-a)>0.0001) )
while(a!=b )
因为浮点本身的精度问题,可以有后面的程序代替前面的程序
void main()
{
intpci = 0;
intn;
inti;
for(n=2;n<100;n++)
{
//for(i=2;i<n;i++)
for(i=3;i<n;i+=2)
{
// if( n%i == 0) pci++;
if(n%i == 0) break;
}
// if (pci == 0) printf("%d\n",n);
// pci = 0;
if(i>=n)
{
printf("%d\n",n);
}
}
}
1到100内的质数程序
参考答案的外层循环次数用 i += 2;比自己的循环次数少了近一半。
此外自己用了一个pci来记录可以被整除的次数,因为自己思考时,用break跳出后,不知道如何分辨是程序执行完了跳出还是break跳出的。所以用PCI记录,当大于0,说明不是质数,但是要循环很多次,执行时间很长很长。
而参考答案用了 if(i>=n)因为循环完毕都没有找到被整除的数,那么i的值必然会大于n
不过自己至少独立写出了程序并能得到正确的结果!
输入三角形的三边,判断是否是三角形,是个什么样的三角形
关键:
1:三边输入
for(i=0;i<3;i++)
{
scanf("%d",&a[i]);
}
2:判断是否是三角形
将三边排序,然后判断最短的边是否大于其他两边之差。
排序程序
void rank ( int *a,int n) //将数据从小到大排列
{
inti,j,temp; //a为数组名。n为数组个数
for(i=0;i<n;i++) {
for(j=i;j<n;j++)
{
if(a[i] > a[j+1] )
{
temp= a[i];
a[i]= a[j+1];
a[j+1]= temp;
}
}
}
}
如果定义了int a[3]; 排序应当调用函数应当是rank( a ,3)
自己在写程序的时候 if语句写错了。写成
if( a[j] > a[j+1] )
{
temp= a[j];
a[j] = a[j+1];
a[j+1]= temp;
}
这样就无法找出最小的数据,比如 77 69 66则会输出 69 66 77