常见的c语言程序

都是上课老师布置的作业
和一些网上看到的经典
程序,拿出来和大家
分享下,如有雷同
纯属欺骗,谢谢

后续还会更新
!!!!!!



1.1判别一个数是否为质数/素数(prime number)

一个大于1的自然数,除了1和它本身外,不能被其他自然数整除(除0以外)的数称之为素数,也叫质数。

 

#include <stdio.h>

int main()

{

   inti;

   intn;

   intflag=0;

   printf("inputnumber n:");

   scanf("%d",&n);

   for(i=2;i<=n/2;i++)

   {

      if(n%i==0)

      {

         flag=1;

         break;

      }

   }

   if(flag==0)

      printf("%dis a prime number/n",n);

   else

      printf("%dis not a prime number/n",n);

   return0;

}

 

 

 

 

1.2列出1-1000中的质数和个数

#include <stdio.h>

int main()

{

   inti;

   intj;

   int f;  *f是标记,标记这个数是不是质数,0为质数,1为负数*
int count=0;

  

for(i=2;i<1000;i++)

{

      f=0;   *每次都要初始为0*

      for(j=2;j<=i/2;j++)

      {

         if(i%j==0)

         {

            f=1;

            break;

         }

      }

      if(f==0)

      {   

           count++;

          printf("% d",i);

           if(count%6==0)    //将结果每6个一行打出来//

           printf(“\n”);

      } 

   }

   printf("\ncount=%d\n",count);

   return0;

}

 

 

 

 

 

 

 

 

 

 

 

2.1判别一个数是否为完数(perfectnumber)

一个数恰好等于它的因子之和,则称该数为完数,称完美数或完备数

 

#include<stdio.h>

intmain()

{

   int i;

   int n;

   int sum=0;

 

printf("please input a numbern:");

   scanf("%d",&n);

   for(i=1;i<=n/2;i++)

   {

      if(n%i==0)

      {

         sum+=i;

      }

   }

   if(sum==n)

      printf("%d is a perfectnumber\n",n);

   else

      printf("%d is not a perfectnumnber\n",n);

   return 0;

}

 

2.2列出1-1000的中完数和个数

#include<stdio.h>

intmain()

{

   int i;

   int j;

   int count=0;

   int sum=0;

 

   for(i=1;i<=1000;i++)

   {

      for(j=1;j<=i/2;j++)

      {

         if(i%j==0)

         {

            sum+=j;

         }

       }

      if(sum==i)

      {

         count++;

         printf("perfect number=%d\n",i);

      } 

      sum=0;

   }

   printf("count=%d\n",count);

   return 0;

}

 


 

3.1建三角形

*

* *

* **

* ** *

* ** * *

 

#include<stdio.h>

intmain()

{

   int i;

   int j;

   int rows;

 

   printf("please input number:\n");

   scanf("%d",&rows);

   for(i=1;i<=rows;i++)

   {

      for(j=1;j<=i;j++)

      {

         printf("*");

      }

      printf("\n");

   }

   return 0;

}

 

3.2打印倒三角形

* ** * *

* ** *

* **

* *

*

 

#include<stdio.h>

intmain()

{

   int i;

   int j;

   int rows;

 

   printf("please input number:\n");

   scanf("%d",&rows);

   for(i=1;i<=rows;i++)           *   for(i=rows;i>=1;i--)

   {

      for(j=5;j>=i;j--)              for(j=1;j<=i;j++)    *

      {

         printf("*");

      }

      printf("\n");

   }

   return 0;

}

 

3.3建数字三角形

1

1 2

1 23

1 23 4

1 23 4 5

 

#include<stdio.h>

intmain()

{

   int i;

   int j;

   int rows;

 

   printf("please input number:\n");

   scanf("%d",&rows);

   for(i=1;i<=rows;i++)

   {

      for(j=1;j<=i;j++)

      {

         printf("%d",j);

      }

      printf("\n");

   }

   return 0;

}

 

3.4用 * 打印金字塔

        *

      * * *

    * * * * *

  * * * * * * *

* * * * * * * * *

 

 

#include<stdio.h>

intmain()

{

   int i;

   int space;

   int rows;

   int k=0;

   printf("please input numbers:");

   scanf("%d",&rows);

   for(i = 1; i <= rows; i ++)      * for(i=rows;i>=1;i--)*(倒金字塔)

   {

      for(space = 1; space<= rows - i; space ++)

      {

         printf(" ");

      }

      while(k != 2 * i - 1)

      {

         printf("*");

         k++;

      }

      k=0;

      printf("\n");

   }

   return 0;

}

 

3.5打印倒金字塔

#include<stdio.h>

intmain()

{

   int i;

   int j;

   int space;

   int rows;

   printf("please input numbers:");

   scanf("%d",&rows);

   for(i = rows; i >= 1; i --)

   {

      for(space = 1; space <= rows - i; space++)

      {

         printf(" ");

      }

      for(j=i;j<2*i-1;j++)

      {

         printf("*");

      }

      for(j=0;j<i;j++)

      {

         printf("*");

      }

      printf("\n");

   }

   return 0;

}

 

 

 

 

 

 

 

 

 

 

 

 

1、计算Fibonacci数列

Fibonacci数列又称斐波那契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21。

 

#include<stdio.h>

intmain()

{

   int n;

   int count;

   int t1=0;

   int t2=1;

   int display=0;

   printf ("Enter number of terms:");

   scanf ("%d",&n);

   printf ("FibonacciSeries:%d+%d+",t1,t2); *先显示已有的两个数字*

   count=2;                       *第一个和第二个数字已经给出*

   while (count<n)

   {

      display=t1+t2;

      t1=t2;

      t2=display;

      count++;

      printf("%d+",display);

   }

   return 0;

}

 

4.2选择排序法

#include<stdio.h>

intmain()

{

   int i;

   int j;

   int k;

   int temp;

   int a[10];

  

   printf("please input 10 num:\n");

   for(i=0;i<10;i++)

      scanf("%d",&a[i]);

for(i=0;i<9;i++)

   {

      k=i;

      for(j=i+1;j<10;j++)

      {

         if(a[k]>a[j])

         {

            k=j;

         }

         if(k!=i)

         {

            temp=a[k];

            a[k]=a[i];

            a[i]=temp;

         }

      }

}

   printf("the pai xu jie guo:\n");

   for(i = 0; i < 10; i++)

      printf("% d",a[i]);

   return 0;

}

4.3冒泡排序法

#include<stdio.h>

intmain()

{

   int i;

   int j;

   int t;

   int a[10];

  

   printf("please input ten scores:");

   for(i=0;i<10;i++)

      scanf("%d",&a[i]);

    for(i=0;i<9;i++)

   {

      for(j=9;j>i;j--)

      {

         if(a[j]<a[j-1])

         {

            t=a[j];

            a[j]=a[j-1];

            a[j-1]=t;

         }

      }

   }

   printf("pai xu hou de jie guo:\n");

   for(i=0;i<10;i++)

      printf("% d",a[i]);

   return 0;

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5.1求最大公约数gcd(最大公因子、最大公因数)

方法之一:设两数为a、b(a>b),求a和b最大公约数(a,b)的步骤如下:用a除以b,得a÷b=q......r1(0≤r1)。若r1=0,则(a,b)=b;若r1≠0,则再用b除以r1,得b÷r1=q......r(0≤r2).若r2=0,则(a,b)=r1,若r2≠0,则继续用r1除以r2……如此下去,直到能整除为止。其最后一个为被除数的余数的除数即为(a, b)。

例如:a=25,b=15,a/b=1......10,b/10=1......5,10/5=2.......0,最后一个为被除数余数的除数就是5,5就是所求最大公约数。

 

#include<stdio.h>

intmain()

{

   int a;

   int b;

   int c;           余数

   int gcd;       

 

   printf("please ipunt two number:");

   scanf("%d %d",&a,&b);

   while(a%b!=0)        辗转相除

   {

      c=a%b;        

      a=b;

      b=c;

   }

   gcd=b;

   printf("gcd=%d\n",gcd);

 

   return 0;

}

 

6.将3行4列的矩阵转置

#include<stdio.h>

intmain()

{  

   int i;

   int j;

   inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};

   int b[4][3];

   for(i=0;i<3;i++)

   {

      for(j=0;j<4;j++)

      {

      b[j][i]=a[i][j];

      }

   }

   for(i=0;i<4;i++)

      {

         for(j=0;j<3;j++)

          {

             printf("% d",b[i][j]);

          } 

             printf("\n");  /每打出一行换一行/

      } 

   return 0;

}

 

 

 

 

 

 

7. 输入5个字符串,升序排列

#include<stdio.h>

#include<string.h>

intmain()

{

   char a[5][20];

   char temp[100];

   int i;

   int j;

// printf("please input string:\n"); //

   for(i=0;i<5;i++)

   {

      gets(a[i]);

   }

   for(i=0;i<4;i++)

   {

      for(j=0;j<4-i;j++)

      {

         if(strcmp(a[j],a[j+1])>0)

         {

            strcpy(temp,a[j+1]);

            strcpy(a[j+1],a[j]);

            strcpy(a[j],temp);

         }

      }    

   }

   printf("pai xu jie guo:\n");

   for(i=0;i<5;i++)

   {

      printf("%s\n",a[i]);

   }

   return 0;

}

 

8. 查找某个字符在一个字符串中的位置,假设字符串中的字符是有序的,如“adfgikmnprs”中查找g的位置。(折半查找)

 

#include<stdio.h>

#include<string.h>

intmain()

{

   char a[100];

   char c;

   int i;

   int high;

   int low=0;

   int mid;

  

   printf("please input string:\n");

   gets(a);

   high=strlen(a);

   printf("please input you wantstring:\n");

   c=getchar();

   for(i=0;;i++)

   {

      mid=(high+low)/2;

      if(a[mid]==c)

         break;

      if(a[mid]>c)

          high=mid;

      else

          low=mid;

   }

   printf("postion=%d\n",mid+1);

   return 0;

}

 

 

 

 

 

9.在一个字符串中删除指定字符,如“character”串中删除字符’a’;

#include<stdio.h>

#include<string.h>

intmain()

{

    int i;

   int j;

   char a[100];

   char del;

    int len;

   printf("please input string:\n");

   gets(a);

//  scanf("%s",&a);

   len=strlen(a);

   printf("please input detletestring:\n");

// scanf("%c",&del);

   del=getchar();

 

   for(i=0;i<len;i++)

// for(i=0;i!='\n';i++)

   {

      while(a[i]==del)

      {

         for(j=i;j<len;j++)

//       for(j=i;j!='\n';j++)

         {

            a[j]=a[j+1];

         }

 

      }

   }

   for(i=0;i<len;i++)

   printf("%c",a[i]);

// puts(a);

// printf("%s",a);

   return 0;

}

 

 

 

 

10.在一个字符串中插入指定字符,如“character”串中第3个字符位置插入字符’g’;

#include<stdio.h>

#include <string.h>

intmain()

{

   char a[100];

   char c;

   int pos;

   int i;

   int j;

   int len;

 

    printf("please input string:\n");

    gets(a);

   printf("please input you wangtstring:\n");

   c=getchar();

   printf("please input you wangtpos:\n");

   scanf("%d",&pos);

/* printf("please input you wangt pos andc:\n");

   scanf("%d%c",&pos,&c); */

   len=strlen(a);

   for(i=len;i>=pos-1;i--)

   {                          //把插入的位置后面的数往后移一位//

     a[i+1]=a[i];

   } 

   a[pos-1]=c;            //把输入的字符放在数组中pos-1这个位置//

    printf("%s",a);

//  puts(a);

   return 0;

}

 

 

 

 

 

 

 

 

11.编写一个模拟硬币程序,每投掷一次硬币,程序都要打印正面或者反面,计算正反面出现的次数并打印出结果

 

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

intmain()

{

   int i;

   int j;

    intcount1=0;

   int count2=0;

   srand(time(0));

   for(j=0;j<10;j++)

   {

      i=rand()%2;     rand()是取随机数

 

      if(i==0)

      {

         count1++;

      }

      else if(i==1)

      {

         count2++;

      }

   }

   printf("count1=%d,count2=%d",count1,count2);

 

   return 0;

}

 

 

 

 

 

12.求一元二次方程,ax2+bx+c=0的根,并考虑判别式的情况。

 

#include<stdio.h>

#include<math.h>

intmain()

{

   float a;

   float b;

   float c;

   float d;

   float x1;

   float x2;

 

   printf("please input 3 number:\n");

   scanf("%f %f%f",&a,&b,&c);

   d=b*b-4*a*c;

   if(d>=0)

   {

      x1=(-b+sqrt(d))/(2*a);

      x2=(-b-sqrt(d))/(2*a);

      printf("x1=%.2fx2=%.2f\n",x1,x2);

   }

   else

    printf("no shi gen");

   return 0;

}

 

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值