zoukankan      html  css  js  c++  java
  • 2016年885考研真题编程题

    第一题:

    #include <stdio.h>
    #include <math.h>
    FILE *in=fopen("Coefficent.txt","r+");
    FILE *out=fopen("result.txt","w+");
    void deal(int a,int b,int c);
    void deal(int a,int b,int c,double x);
    void deal(int a,int b,int c,double x1,double x2);
    int main(){
        int a,b,c,a1,b1,c1;
        double x1,x2,disc;
        while((fscanf(in,"%d%d%d",&a1,&b1,&c1))!=EOF){
            a=a1;b=b1;c=c1;
            if((a!=0)&&(b!=0)){//ax*x+b*x+c或者a*x*x+b*x形式 
                disc=b*b-4*a*c;
                if(disc>0){
                    x1=(-b-sqrt(disc))/(2*a);
                    x2=(-b+sqrt(disc))/(2*a);
                    deal(a,b,c,x1,x2);
                }else if(disc==0){
                    x1=-b/(2*a);
                    deal(a,b,c,x1); 
                }else{
                    deal(a,b,c);
                } 
            }else if((a==0)&&(b!=0)){
                deal(a,b,c,-c/b);
            }else if((a!=0)&&(b==0)){
                if(a>0){
                    deal(a,b,c,sqrt(a/c),-sqrt(a/c));
                }else{
                    deal(a,b,c);
                }
            }else if((a==0)&&(b==0)){
                if(c==0){
                    deal(a,b,c); 
                }else{
                    deal(a,b,c);
                }
            }
        }
        fclose(in);
        fclose(out);
        return 0;
    }
    void deal(int a,int b,int c){
        if(a==0&&b==0&&c==0){
           printf("a=%d	b=%d	c=%d时方程无穷解
    ",a,b,c);    
        }else
         printf("a=%d	b=%d	c=%d时方程无实数解
    ",a,b,c); 
    }
    void deal(int a,int b,int c,double x){
        printf("a=%d	b=%d	c=%d时方程具有单解x=%lf
    ",a,b,c,x);
        fprintf(out,"%d	%d	%d	%lf
    ",a,b,c,x);
    }
    void deal(int a,int b,int c,double x1,double x2){
        printf("a=%d	b=%d	c=%d时方程具有双解x1=%lf	x2=%lf
    ",a,b,c,x1,x2);
        fprintf(out,"%d	%d	%d	%lf	%lf
    ",a,b,c,x1,x2);
    }

    第二题:

    #include <stdio.h>
    #include <math.h>
    #define N 30
    struct student{
        int no;//学号
        char name[20];//姓名
        double score[5];//分数
        double sum;//总分
        int rank;//排名 
    }stu[N],temp,kem;
    int main(){
        int i,j,k;
        double sum;
        for(i=0;i<N;i++){
            printf("请输入第%d个学生的信息:
    ",i+1);
            scanf("%d%s",&stu[i].no,stu[i].name); 
            sum=0;
            for(j=0;j<5;j++){
                scanf("%lf",&stu[i].score[j]);
                sum+=stu[i].score[j];
            }
            stu[i].sum=sum; 
        }//信息初始化
        //进行排序
        for(i=0;i<N-1;i++){
            kem=stu[i];k=i;
            for(j=i+1;j<N;j++){
               if(kem.sum<stu[j].sum){
                 k=j;
                 kem=stu[j];
              }
            }
            temp=stu[i];
            stu[i]=kem;
            stu[k]=temp;
        }//完成排序
        //对学生进行名次确定.考虑并列的情况;
        int rank=1;
        for(i=0;i<N;i++){
            if(i==0){ 
               stu[i].rank=rank;
               rank++;
           }else{
                if(stu[i].sum==stu[i-1].sum){
                    stu[i].rank=stu[i-1].rank;
                    rank++; 
                }else{
                    stu[i].rank=rank;
                    rank++;
                }
            }
        }//完成名次确定 
        printf("按总分成绩排序信息:
    ");
        printf("学号	姓名	数学	语文	物理	化学	英语	总分	名次
    ");
        for(i=0;i<N;i++){
            printf("%d	%s	",stu[i].no,stu[i].name);
            for(j=0;j<5;j++){
                printf("%6.3lf	",stu[i].score[j]);
            }
            printf("%lf	%d
    ",stu[i].sum,stu[i].rank);
        }
        //关注前10名有单科成绩低于80分的情况
        printf("前10名有单科成绩低于80分的情况
    ");
        printf("学号	姓名	数学	语文	物理	化学	英语	总分	名次
    ");
        for(i=0;stu[i].rank<=10;i++){
            for(j=0;j<5;j++){
                if(stu[i].score[j]<80) break;
            }
            if(j<5){
               printf("%d	%s	",stu[i].no,stu[i].name);
               for(j=0;j<5;j++){
                 printf("%6.3lf	",stu[i].score[j]);
               }
               printf("%lf	%d
    ",stu[i].sum,stu[i].rank);
            }     
        } 
        return 0;
    } 

    测试数据:

    2001 liu 85 85 85 76 100
    2002 bao 90 90 90 90 90
    2003 wang 100 100 100 100 70
    2004 chen 70 100 80 90 60
    2005 hu 100 50 100 90 100
    2006 xu 70 90 90 90 90
    2007 hua 10 10 10 10 10
    2008 ma 20 20 20 20 20
    2009 luo 30 30 30 30 30
    2010 l1 40 40 40 40 40
    2011 l2 50 50 50 50 50
    2012 l3 60 60 60 60 60
    2013 l4 70 70 70 70 70
    2014 l5 80 80 80 80 80
    2015 l6 90 90 90 90 90
    2016 l7 40 40 40 40 40
    2017 l8 50 50 50 50 50
    2019 l9 60 60 60 60 60
    2020 l10 70 70 70 70 70
    2021 l11 80 80 80 80 80
    2022 l12 90 90 90 90 90
    2023 l13 40 40 40 40 40
    2024 l14 50 50 50 50 50
    2025 l15 60 60 60 60 60
    2026 l41 70 70 70 70 70
    2027 l51 80 80 80 80 80
    2028 l61 90 90 90 90 90
    2029 l52 80 80 80 80 80
    2030 l62 90 90 90 90 90
    2031 l62 90 90 90 90 90

    结果:

    第三题:

    #include <stdio.h>
    #include <math.h>
    int fun(int n,int k){
        if(n==k||k==0) return 1;
        else return fun(n-1,k-1)+fun(n-1,k);
    }
    int main(){
        int n,k;
        scanf("%d%d",&n,&k);
        int s=fun(n,k);
        printf("n=%d,k=%d时s=%d
    ",n,k,s);
        return 0;
    }

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

  • 相关阅读:
    Java实现 LeetCode 537 复数乘法(关于数学唯一的水题)
    Java实现 LeetCode 537 复数乘法(关于数学唯一的水题)
    Java实现 LeetCode 535 TinyURL 的加密与解密(位运算加密)
    Java实现 LeetCode 535 TinyURL 的加密与解密(位运算加密)
    如何在 Linux 中统计一个进程的线程数
    linux下查看线程数的几种方法
    深入理解linux系统下proc文件系统内容
    嵌入式 如何定位死循环或高CPU使用率(linux)
    Linux 下查看线程信息
    Linux netstat命令详解
  • 原文地址:https://www.cnblogs.com/byczyz/p/13783439.html
Copyright © 2011-2022 走看看