(1)基本算法

2016-08-19  本文已影响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)
  */
}
上一篇 下一篇

猜你喜欢

热点阅读