美文网首页
(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)基本算法

    三大类 1、交换排序算法 冒泡(数据量小)-> 快速2、插入 类排序3、选择 类排序 求和 1-1/2+1/3...

  • JVM垃圾回收(GC)整理总结学习

    摘要:基本回收算法 1. 引用计数(Reference Counting) 比较古老的回收算法。 基本回收算法 1...

  • 最“懒惰”的kNN分类算法

    1. K-近邻算法#### k-近邻算法(k Nearest Neighbor),是最基本的分类算法,其基本思想是...

  • GAN的基本概念

    一、 基本描述 1. 组成 1) 判别算法discriminative algorithms 判别算法根据输入数据...

  • K近邻算法

    1.算法原理 K近邻算法简称为KNN算法,属于监督学习中的一种分类算法,是最简单最基本的一种分类算法。算法基本原理...

  • 基于协同过滤的推荐算法

    1. 基本思想 协同过滤推荐算法是最经典的推荐算法,它的算法思想为物以类聚,人以群分,基本的协同过滤算法基于以下的...

  • 博览网:STL与泛型编程第四周笔记

    简书地址: 1、算法 基本的C++算法分为三类:排序算法、树算法、图算法 算法思想有三种:递推、分治、动态规划 以...

  • KMP 算法

    KMP 算法 1. 暴力匹配算法 在分析KMP算法前, 先看看暴力匹配算法是如何工作的.暴力匹配算法的基本思想是:...

  • 加密

    1: 对称密码算法 ---- AES摘要算法 分割线 2:摘要算法摘要算法,具有单向不可逆的基本性质,速度快。① ...

  • 数据结构与算法(一)

    算法 算法的基本概念 1.概念:算法是指一系列解决问题的清晰指令 2.两种基本要素:对数据对象的运算和操作,算法的...

网友评论

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

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