美文网首页
(1)基本算法

(1)基本算法

作者: 笑笑学生 | 来源:发表于2016-08-19 22:36 被阅读30次

    三大类

    1、交换排序算法 冒泡(数据量小)-> 快速
    2、插入 类排序
    3、选择 类排序

    求和 1-1/2+1/3-1/4……+1/99-1/100

    int sign=1;
    float deno=2.0,sum=1.0,term;
    while(deno<=100)
    { 
       sign=-sign;
       term=sign/deno;
       sum=sum+term;
       deno=deno+1;  
    }
    

    数据解析 数据排列和位运算
    Fibonacci数列 斐波那契数列

    算法和通信
    五子棋(五子为胜,黑白棋 黑为先(三三、四四连)) 局域网的对战 (1、server和client两者的对战;2、多个client对战)

    五子棋 画棋盘->数据(根据不同信息设置不同大小类型)
    垂直 水平 斜方向(向左倾斜,向右倾斜)

    练习:

    1、回文查询 (123321) 读取一个txt
    回文 input 1 2 3 4 4 3 2 1
    12344321 abcddcba

    #include <stdio.h>
    #include "string.h" 
    
    void main(){
        int x,i;
        char str[100]={0};
        gets(str);
        x=strlen(str);
        //printf("%d",x);
        for(i=0;i<=x/2;i++){
            if(str[i]!=str[x-i-1]){
                break;
            }
            //printf("%d",i);
        }
        if(i>x/2)
            printf("yes");
        else
            printf("no");       
    }
    

    2、质数查询
    素数 奇数 偶数
    1、开根号 while
    2、

       for(i=2;i<n/2;++i)
       {
        if(n%i==0)
            {
    
            }
       }
    
    #include <stdio.h>
    #include "string.h" 
    
    void main(){
        int a=0,num=0,i;
        scanf("%d",&num);
        printf("%d",num);
        if(num>2){
            for(i=2;i<num;i++){
                if(num%i==0){
                    a++;
                }
            }
        }
        if(a==0)
            printf("yes");
        else
            printf("no");       
    }
    

    3、简单的计算器(加 减 乘 除)

    #include <stdio.h>
    #include "string.h" 
    
    void main(){
        float a,b,sum;
        char flag;
        char quit=1;
        while(quit!=0){
            printf("Please Enter");
            scanf("%f%c%f",&a,&flag,&b);
            switch(flag){
                case '+':
                    sum=a+b;
                    break;
                case '-':
                    sum=a-b;
                    break;
                case '*':
                    sum=a*b;
                    break;
                case '/':
                    sum=a/b;
                    break;
                default:
                        break;
            }
            printf("%f+%f=%f\n",a,b,sum);
            printf("Are You quit? Please Enter y/n");
            scanf("%d",&quit);
            printf("\n");
        }
    }
    

    4、用递归的方式实现字符的颠倒

    reverse()
    {
       char c;
       scanf("%c",&c);
       if(c!='\n')
       {
         reverse();
         printf("%c",c);
        }
    }
    int main(){
       reverse();
    
    }
    

    5、实现二进制和十进制的互相转换

    int decimal_binary()
    {
       int rem,i=1,binary=0;
       while(n!=0)
       {
          rem=n%2;
          n/=2;
          binary+=rem*i;
          i*=10;
        
        }
       return binary;
    }
    
    #include <stdio.h>
    int main()
    {
        int Type,a,b[10],i=0,c=0;
        printf("请输入转换类型,1:十进制转二进制;2:二进制转十进制\n");
        scanf("%d",&Type);
        printf("请输入原数据\n");
        scanf("%d",&a);
        switch(Type)
        {
        case 1:
            while(a!=0)
            {
                b[i]=a%2;
                a/=2;
                i++;
            }
            printf("二进制为:");
            i--;
            for(;i>=0;i--)
                printf("%d",b[i]);
            printf("\n");
            break;
        case 2:
            while(a!=0)
            {
                b[i]=a%10;
                a/=10;
                i++;
            }
            i--;
            for(;i>=0;i--)
                c=c*2+b[i];
            printf("十进制为:%d\n",c);
            break;
        }
    }
    

    6、数组 实现多维数组的两个矩阵的值相加
    二维数组

    #include <stdio.h>
    int main()
    {
        int i,j;
        int a[3][3],b[3][3],c[3][3];
        for(i=0;i<3;i++)
            for(j=0;j<3;j++)
                scanf("%d",&a[i][j]);
        for(i=0;i<3;i++)
            for(j=0;j<3;j++)
                scanf("%d",&b[i][j]);
        for(i=0;i<3;i++)
            for(j=0;j<3;j++)
                c[i][j]=a[i][j]+b[i][j];
        for(i=0;i<3;i++)
            for(j=0;j<3;j++)
                printf("c[%d][%d]=%d\n",i,j,c[i][j]);       
    }
    

    7、三天打鱼两天晒网 起始日期:1990.01.01 进行三天打鱼两天晒网,随机输入一个具体的天数 得到结果哪天具体做什么

    typedef struct date{
       int year;
       int month
       int day;
    }date;
    
    int Getdays(date *p)
    {
      月份
      int days=0;
      switch(p->month-1)
      {
         case 0:  days=0;break;
         case 1:  days=31;break;
         case 2:  days=31+28;break;
         case 3:  days=31+28+31;break
         case 4:
         case 5:
    
         
         case 11: days=31+28+31+30+31+30+31+31+30+31+30;break;
      }
      days=days+(p->day-1)+(p->year-1900)*365+(p->year-1988)/4-(p->year-1900)/100+(p->year-1600)/400
      
      年份 闰年特点:四年一闰 百年不闰 四百年再闰
      if((p->year%4==0)&&(p->year%100!=0)||(p->year%400==0)&&(p->month<=2))
      {
         days--;
         return days;
       }
    
      /*若恰好此年为闰年但月份小于2月,则多加了一天。
        if((p->year%4==0)&&(p->year%100!=0)||(p->year%400==0))
        if(p->month<=2)
      */
    }
    

    相关文章

      网友评论

          本文标题:(1)基本算法

          本文链接:https://www.haomeiwen.com/subject/ipabsttx.html