宝码良聚

 感谢眼视光七年制2013级林川琦同学提供博客名,对其他参加征名活动的同学(徐明娜、李天坤、曲文镛)一并表示感谢

 

 CODE1016

#include<stdio.h> 
int main(){ 
    int y,m; 
    scanf("%d %d",&y,&m);
    if(m==1||m==3||m==5||m==7||m==8||m==10||m==12) printf("31\n"); 
    else if(m==4||m==6||m==9||m==11) printf("30\n");
    else if(y%4==0&&y%100!=0||y%400==0) printf("29\n");
    else printf("28\n");
    return 0; 
} 

 

 

#include<stdio.h>
int main(){
    int y,m,a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    scanf("%d%d",&y,&m);
    printf("%d\n",a[m]+(m==2 && (y%4==0 && y%100!=0 || y %400==0)));
    return 0;
}

 

素数判断

#include<math.h>
int Prime(int a){
    for(int i=2;i<=sqrt(a);i++)
        if(a%i==0)return 0;
    return 1;
}

 

求组合数
公式:C(n,m)=C(n-1,m-1)+C(n-1,m)

#include<stdio.h>
int comb(int n,int m){
    if(n==m || m==0)return 1;
    if(m==1)return n;
    return comb(n-1,m-1)+comb(n-1,m);
}
int main(){
    printf("%d\n",comb(5,2));
    return 0;
}

 

 

 

 

 

 

CODE1151 回形阵

#include <stdio.h>
int main(){
    int n,i,j,k,a[30][30];
    scanf("%d",&n);
    for(k=n;k>=0;k--){
        for(i=n-k;i<=n+k;i++)
            for(j=n-k;j<=n+k;j++)a[i][j]=k;
    }
    for(i=0;i<=2*n;i++){
        for(j=0;j<=2*n;j++)printf(" %d",a[i][j]);
        printf("\n");
    }
     
    return 0;
}

 

 

CODE1238

#include<stdio.h>
#include<string.h>
int main(){
    char ss[1001]=" ",s[1000];
    int i,num=0;
    gets(s);
    strcat(ss,s);
    for(i=1;i<strlen(ss);i++)
        if(ss[i]!=' ' && ss[i-1]==' ')num++;
    printf("%d\n",num);
    return 0;
}

 

 CODE1199

 【解法1】

#include<stdio.h>
#include<string.h>
int main(){
    char w[1000][20],s[20],c;
    int d,i,n=0,x1,x2;
    while(scanf("%s",s)){
        strcpy(w[n],s); n++;
        if(s[strlen(s)-1]=='.')break;
    }
    w[n-1][strlen(w[n-1])-1]='\0';
    scanf("%s",s);
    //for(i=0;i<n;i++)puts(w[i]);
    for(x2=0,i=0;i<n;i++)x2+=strlen(w[i]);
    for(i=0;i<n;i++)
        if(strcmp(w[i],s)==0)break;
    if(i<n)printf("%d\n",i+1);//found
    else printf("%d\n",x2);
    return 0;
}

 

 【解法2】

#include<stdio.h>
#include<string.h>
int main(){
    char w[1000][20],s[20],c;
    int d,i,n=0,x1,x2;
    while(scanf("%s%c",s,&c)){
        strcpy(w[n],s); n++;
        if(c=='\n')break;
    }
    w[n-1][strlen(w[n-1])-1]='\0';
    scanf("%s",s);
    //for(i=0;i<n;i++)puts(w[i]);
    for(x2=0,i=0;i<n;i++)x2+=strlen(w[i]);
    for(i=0;i<n;i++)
        if(strcmp(w[i],s)==0)break;
    if(i<n)printf("%d\n",i+1);//found
    else printf("%d\n",x2);
    return 0;
}





选择法排序

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void sort(int a[],int n){
    int i,j,k,t,m;
    for(i=0;i<n-1;i++){
        m=a[i];
        for(j=k=i;j<n;j++)
            if(a[j]<m){m=a[j];k=j;}
        t=a[i],a[i]=a[k],a[k]=t;
    }
}
        
int main(){
    int i,a[10];
    srand((unsigned) time(NULL));
    for(i=0;i<10;i++)a[i]=rand()%100+1;
    for(i=0;i<9;i++)printf("%d ",a[i]);
    printf("%d\n",a[9]);
    sort(a,10);
    for(i=0;i<9;i++)printf("%d ",a[i]);
    printf("%d\n",a[9]);
    return 0;
}

 

 阶乘函数应用

#include<stdio.h>
int fact(int n){
    int s=1,i;
    for(i=2;i<=n;i++)s=s*i;
    return s;
}
int main(){
    int a;
    scanf("%d",&a);
    printf("%d\n",fact(a));
    return 0;
}

 

 

 Fabonacii数列函数写法

#include<stdio.h>
int fab(int n){
    if(n==1 || n==2)return 1;
    return fab(n-1)+fab(n-2);
}
int main(){
    int n;
    scanf("%d",&n);
    printf("%d\n",fab(n));
    return 0;
}

 

jz1051【基础】约瑟夫问题

//我见过的最优雅的一段关于约瑟夫问题的代码,来自网络

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

 

 //再小小改进

 

#include<stdio.h>
int main(){
    int m,n,a[15]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},j=0,t,s=0;
    scanf("%d%d",&m,&n);
    t=m;
    for(;;){
        s+=a[j];
        if(s==n){
            printf("%d\n",j+1);
            t--;
            if(t==0)return 0;
            s=0;
            a[j]=0;
        }
        j=(j+1)%m;
    }
}

 

 

jz1048 【基础】求序列中所有递增或递减子序列的个数并输出子序列

#include<stdio.h>
int main(){
    int a[20],x[20],n=0,i,j;
    for(i=0;i<10;i++)scanf("%d",&a[i]);
    x[n]=0; n++;
    for(i=1;i<=8;i++)
        if((a[i]-a[i-1])*(a[i]-a[i+1])>0){
            x[n]=i;n++;
        }
    x[n]=9;
    printf("%d\n",n);
//    for(i=0;i<=n;i++)printf("%d ",x[i]);
    for(i=0;i<n;i++){
        for(j=x[i];j<=x[i+1]-1;j++)printf("%d ",a[j]);
        printf("%d\n",a[x[i+1]]);
    }
    return 0;
}

 





posted @ 2013-11-25 15:14  yan72013  阅读(879)  评论(0)    收藏  举报