• 经典程序摘录 沧海


     

    经典程序集

    1.求质数... 1

    素数... 1

    分解质因数... 1

    求其最大公约数和最小公倍数... 2

    实现字符串拷贝函数strcpy() 2

    实现内存拷贝函数memcpy() 2

     

    1.求质数

    ////E-mail:cangzhu@163.com

    #include "iostream.h"
    #include "stdio.h"

    void main()
    {
     int count=0;
     for(int i=100;i<1000;i++)
     {
      //
    偶数,就跳过,它肯定不是质数
      if(i%2==0)
       continue;
      //
    判断3579……i/2是否有i的因子
      int j=3;
      while(j<=i/2&&i%j!=0)
       j+=2;
      //
    若上述数都不是i的因子,则i是质数
      if(j>i/2)
      { 

    //每行输出 8 个数,每8个数输出一回车键
       if(count%8==0)
        cout<<endl;
       //
    输出质数
       cout<<i<<"  ";
       count++;
      }
     }
     cout<<endl;
    }

    素数

    题目:判断101-200之间有多少个素数,并输出所有素数。
    1.
    程序分析:判断素数的方法:用一个数分别去除2sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。       
    2.
    程序源代码:
    #include "math.h"
    main()
    {
     int m,i,k,h=0,leap=1;
     printf("\n");
     for(m=101;m<=200;m++)
      { k=sqrt(m+1);
       for(i=2;i<=k;i++)
         if(m%i==0)
          {leap=0;break;}
       if(leap) {printf("%-4d",m);h++;
            if(h%10==0)
            printf("\n");
            }
       leap=1;
      }
     printf("\nThe total is %d",h);
    }

    分解质因数

    题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5
    程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
    (1)
    如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
    (2)
    如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,
     重复执行第一步。
    (3)
    如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
    2.
    程序源代码:
    /* zheng int is divided yinshu*/
    main()
    {
    int n,i;
    printf("\nplease input a number:\n");
    scanf("%d",&n);
    printf("%d=",n);
    for(i=2;i<=n;i++)
     {
      while(n!=i)
      {
       if(n%i==0)
       { printf("%d*",i);
        n=n/i;
       }
       else
        break;
      }
    }
    printf("%d",n);}

    求其最大公约数和最小公倍数

    题目:输入两个正整数mn
    1.
    程序分析:利用辗除法。
    2.
    程序源代码:
    main()
    {
     int a,b,num1,num2,temp;
     printf("please input two numbers:\n");
     scanf("%d,%d",&num1,&num2);
     if(num1  { temp=num1;
      num1=num2; 
      num2=temp;
     }
    a=num1;b=num2;
    while(b!=0)/*
    利用辗除法,直到b0为止*/
     {
      temp=a%b;
      a=b;
      b=temp;
     }
    printf("gongyueshu:%d\n",a);
    printf("gongbeishu:%d\n",num1*num2/a);
    }

    题目:字符串排序
    1.
    程序分析:
    2.
    程序源代码:
    main()
    {
    char *str1[20],*str2[20],*str3[20];
    char swap();
    printf("please input three strings\n");
    scanf("%s",str1);
    scanf("%s",str2);
    scanf("%s",str3);
    if(strcmp(str1,str2)>0) swap(str1,str2);
    if(strcmp(str1,str3)>0) swap(str1,str3);
    if(strcmp(str2,str3)>0) swap(str2,str3);
    printf("after being sorted\n");
    printf("%s\n%s\n%s\n",str1,str2,str3);
    }
    char swap(p1,p2)
    char *p1,*p2;
    {
    char *p[20];
    strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);
    }

    实现字符串拷贝函数strcpy()

    #include <iostream>
    using namespace std;

    char* strcpy(char* dest, const char *src )
    {
    // char* pdest = static_cast<char*>(dest);
    // const char* psrc = static_cast<const  char*>(src);
    if((dest==NULL)||(src==NULL))
    throw"error";
    char* strdest = dest;
    while((*dest++ = *src++)!='\0');
    return strdest;
    }


    int main()
    {
     char* sdest = (char*)malloc(strlen(str));
     char str[] = "0123456789";
     strcpy( sdest, str);
     cout<< sdest<<endl;
     return 0;
     free(sdest);
    }

     

    实现内存拷贝函数memcpy()

    #include <iostream>

    using namespace std;

    void* memcpy(void * dest, const void *src, size_t count )
    {
     char* pdest = static_cast<char*>(dest);
     const char* psrc = static_cast<char*>(src);
     if(pdest>psrc && pdest<psrc+count)
     {
      for(size_t i=count-1; i!=1; --i)
       pdest[i] = psrc[i];
     }
     else
     {
      for(size_t i=0; i<count; ++i)
       pdest[i]=psrc[i];
     }
     return dest;
    }
    int main()
    {
     char src[]= "0123456789";
     memcpy( str+1; str+0; 9);
     cout<< str<<endl;
     return 0;
    }

     

    二、编写一函数实现子字符串查找
    char *strstr(char* str, char * substr)

     

    main()
    {
     char b[]="0123456789ABCDEF";
     int c[64],d,i=0,base=16;
     long n;
     scanf("%ld",&n);
     do{
       c[i]=   ;i++;n=n/base;
     }while(n!=0);
      for(--i;i>=0;--i)
      {d=c[i];printf("%c",b[d]);}
      getch();
    }
    int AnsiString::Pos(const AnsiString& subStr)
    {
     int len=subStr.Length();
     int p=0;
     for(int i=0;i<DataLen;i++)
     {
      if(i+1+len<=DataLen)
      {
       if(SubString(i+1,len)==subStr)
       {
        p=i+1;
        break;   
       }
      }
      else
      {
       break;
      }
     }
     return p;
    }

     

    AnsiString AnsiString::SubString(int index, int count)
    {
     index--;
     if(index+count>DataLen)
     {
      count=DataLen-index;
     }
     char* tmp=new char[count+1];
     memcpy(tmp,Data+index,count);
     tmp[count]=0;
     AnsiString Result=tmp;
     delete []tmp;
     return Result;
    }

    if((fp=fopen("A","r"))==NULL)

    专注于企业信息化,最近对股票数据分析较为感兴趣,可免费分享股票个股主力资金实时变化趋势分析工具,股票交流QQ群:457394862
  • 相关阅读:
    H7TOOL的LUA小程序教程第5期:串口开发,含Modbus(20220116)
    【BSP视频教程】STM32H7视频教程第1期:初识STM32H7准备工作,了解CortexM7内核以及MDK,IAR,Embedded Studio,STM32CubeIDE和VS Code简单比较
    ThreadX NetXDUO作为服务器接收100个客户端测试成功,分享工程和测试效果(20220116)
    【STM32H7】第11章 ThreadX NetXDUO之UDP客户端/服务器
    【STM32F429】第11章 ThreadX NetXDUO之UDP客户端/服务器
    【STM32H7】第10章 ThreadX NetXDUO UDP用户数据报协议基础知识
    【STM32F429】第10章 ThreadX NetXDUO UDP用户数据报协议基础知识
    ThreadX视频教程第2期:通俗易懂的介绍CortexM内核的OS特性,双堆栈,非特权级,PendSV,SVC,Systick等,争取人人都可以掌握
    《安富莱嵌入式周报》第248期:2022.01.102022.01.16
    【STM32F407】第11章 ThreadX NetXDUO之UDP客户端/服务器
  • 原文地址:https://www.cnblogs.com/omygod/p/742553.html
Copyright © 2020-2023  润新知