2015年考研885编程题

第一题:

#include <stdio.h>
#include <math.h>
#define N 20
int fun(int n){
    if(n==1||n==2) return 1;
    else return fun(n-1)+fun(n-2); 
}
int main(){
    int i,j;
    FILE *fp=fopen("fab.txt","w+");
    int s,sum=0;
    for(i=1;i<N;i++){
        s=fun(i);
        sum+=s;
        fprintf(fp,"%d
",s);
    }
    printf("前20项之和%d
",sum);
    fclose(fp);
    return 0;
}

第二题:

有个疑问车牌一定是四位数的吗?

#include <stdio.h>
#include <math.h>
int main(){
    int i,j,k,a[10]={0},t;
    for(i=1000;;i++){
        j=i;t=0;k=sqrt(i); 
        while(j!=0){
            a[t++]=j%10;
            j/=10;
        }
        if(a[0]==a[1]&&a[t-1]==a[t-2]&&k*k==i){
            printf("车牌号是%d
",i);
        }
    }
    return 0;
}
#include <stdio.h>
#include <math.h>
int main(){
    int i,j,k,a[4]={0},t;
    for(i=1000;i<10000;i++){
        j=i;t=0;k=sqrt(i); 
        while(j!=0){
            a[t++]=j%10;
            j/=10;
        }
        if(a[0]==a[1]&&a[3]==a[2]&&k*k==i){
            printf("车牌号是%d
",i);
        }
    }
    return 0;
}

第三题:

#include <stdio.h>
#include <math.h>
struct Date{
    int y;
    int m;
    int d;
}time1;
int isYear(int year){
    if(year<1000||year>9999){
        return 0;//年的格式不对 
    }else if((year%4==0&&year%100!=0)||(year%400==0)){
        return 1;//表示是闰年 
    }else return 2;//表示不是闰年 
}
int checkMon(int month){
    if(month<1||month>12) return 0;//月份的格式不对
    else return 1; 
}
int checkDay(){
    int Tadays[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    if(isYear(time1.y)==1)//是闰年
         Tadays[2]=29;
    else if(isYear(time1.y)==2)//不是闰年
         Tadays[2]=28;
    if(time1.d<=Tadays[time1.m]) return 1;//天数正常
    else return 0;//天数不正常 
} 
void EndDate(int days);
int main(){
    printf("please input date
");
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    time1.y=a;time1.m=b;time1.d=c;
    if(isYear(time1.y)==0||checkMon(time1.m)==0||checkDay()==0){
        printf("日期格式错误:
");
        return 0;
    }else{
        printf("please input days
");
        int days;
        scanf("%d",&days);
        EndDate(days);
        printf("%4d/%02d/%02d之后%d天的日期是%d/%02d/%02d",a,b,c,
        days,time1.y,time1.m,time1.d);
    }
    return 0;
}
//输入开始的日期和加上的天数返回最后日期 
void EndDate(int days){
    int Mdays[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    int i,j,k;
    for(i=1;i<=days;i++){
       if(isYear(time1.y)==1)//是闰年
         Mdays[2]=29;
       else if(isYear(time1.y)==2)//不是闰年
         Mdays[2]=28;
        time1.d=time1.d%Mdays[time1.m]+1;
        if(time1.d==1){
            time1.m=time1.m+1;
        }
        if(time1.m>12){
            time1.y=time1.y+1;
            time1.m=time1.m%12;
        }
    }
}

  收录于《考研计算机885复习》

原文地址:https://www.cnblogs.com/byczyz/p/13789759.html