天天看点

C和指针第四章编程练习题小结1

//      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