zoukankan      html  css  js  c++  java
  • c++期末考

    1.

    谁不及格?

    Problem:A

    Time Limit:1000ms

    Memory Limit:65535K

    Description

    聪聪的班主任王老师最近有点忙,可是他又是一位非常细心的老师,每次考试成绩都有专门的东西来记录,学期结束的时候给每位学生算了加权之后,他都要“关心关心”成绩不好的学生,并在假期给他们补补功课。什么是成绩不好呢?在王老师眼里,成绩不好当然就是加权成绩不及格咯!如今王老师这么忙,正好看你成天写程序闲着没事儿,于是他想让聪明的你来帮他写个程序,把那些不及格的同学的名单打印给他。
    Input

    输入包含多组数据,每组输入一个数n(1<=n<=10),然后接下来输入n个同学的信息,每个同学的信息分3行,第一行姓名name(姓名长度不超过20个字母),第二行学号x,长度为10(例:2015215098),第三行学生的平均加权成绩。
    Output

    每组数据第一行输出一个数k,表示不及格学生的个数,然后接下来输出3*k行不及格学生信息,第一个k行输出不及格学生姓名(按输入顺序),第二个k行输出学生学号(按输入顺序),第三个k行输出学生成绩(按输入顺序)(保留2位小数)。若是没有同学不及格,那么输出“They are Great!!”。
    Sample Input

    2
    zhu dan
    2015213678
    79.99
    wang meng
    2015213902
    83.78
    1
    tiancai
    2015234930
    59.08
    Sample Output

    They are Great!!
    1
    tiancai
    2015234930
    59.08
    输出注意一下……

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    struct stu{
    char name[30];
    char xh[20];
    float ss;
    }st[11];
     
    int main()
    {
        int n,i,j,s[11],m;
        while (scanf("%d",&n)!=EOF)
        {
            m=0;
            getchar();
            for (i=1;i<=n;i++)
            {
                gets(st[i].name);
                scanf("%s%f",st[i].xh,&st[i].ss);
                getchar();
                if (st[i].ss<60)
                    {
                        s[++m]=i;
                    }
            }
            if (m==0)
            {
                printf("They are Great!!
    ");
                continue;
            }
            printf("%d
    ",m);
            for (i=1;i<=m;i++)
            {
                printf("%s
    ",st[s[i]].name);
            }
            for (i=1;i<=m;i++)
            {
                printf("%s
    ",st[s[i]].xh);
            }
            for (i=1;i<=m;i++)
            {
                printf("%.2f
    ",st[s[i]].ss);
            }
        }
        return 0;
    }

    2
    校庆的活动

    Problem:B

    Time Limit:1000ms

    Memory Limit:65536K

    Description

    在林大60年校庆时要设计1个平面,平面的设计要会几何知识.给出一些整数对,它们表示一些平面上的坐标点,给定一个点,求所有那些点到该点最短距离的点。结构为:第一个整数对为所给定的点,后面的整数对为所有其他的点。
    Input

    输入有多组,每组第1行是给定的点的坐标x和y,(0 &lt;= x,y &lt;= 100),第2行是n,接下来有n行(1 &lt;= n &lt;= 50),每行2个数,代表其它点的坐标。
    Output

    输出这n行坐标中离定点距离最近的点的坐标,输出到屏幕上并换行。
    Sample Input

    9 2
    5
    1 0
    1 1
    0 0
    1 2
    2 1
    Sample Output

    2 1
    这个题好多人没用结构体……倒是能写,结构体的专题怎么能不练习结构体呢

    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<iostream>
    using namespace std;
    typedef struct lhy{char s[100];char s1[20];float b;} L;
    int main()
    {
        int i,j,k,p,t;
        float x,y,d=99999999,x1,y1;
        L l[100];
        while(cin>>p>>t)
        {
            
            cin>>k;
            for(i=1;i<=k;i++)
            {
                cin>>x>>y;
                if(d>sqrt((p-x)*(p-x)+(y-t)*(y-t)))
                    d=sqrt((p-x)*(p-x)+(y-t)*(y-t)),x1=x,y1=y;
            }
            printf("%.0f %.0f
    ",x1,y1);
        }
        return 0;
    }

     

    3

    第4题

    Problem:C

    Time Limit:1000ms

    Memory Limit:65535K

    Description

    复数运算
    同学们在C语言中已经利用整数、实数和字符类型等标准数据类型编写一些程序了。那你们还记得在中学阶段学习过一种数据——复数吗?C语言中没有把这种数据设定为标准数据,老师也只在FORTRAN语言中见过。现在请你利用C语言定义复数这种类型的数据,并完成复数的加、减运算,提示复数类型的定义用结构体实现。题目也做了简单处理,只考虑结果都还是复数的情况,不必考虑虚部为零了。
    Input

    输入数据为多组,每组两行,每行两个实数(double),分别代表复数的实部和虚部。
    Output

    对于每组数据,输出这两个复数的和、差,实部虚部都分别保留两位小数。
    提示:1)如果两个复数分别为a+bi和c+di,那么它们的和是:(a+c)+(b+d)i;它们的差是:(a-c)+(b-d)i;
    2)除主函数外,分别编写三个函数,用于求两个复数的和,差、和结果的输出。例如,如果复数类型结构体定义为 CX,则求和函数为 CX cadd(CX x1,CX x2);,求差函数为 CX cminu(CX x1,CX x2);,输出结果函数为 void cprint(CX x);
    Sample Input

    1.2 2.3
    3.2 3.4
    3.4 2.2
    -7.5 -1.1
    Sample Output

    4.40+5.70i
    -2.00-1.10i
    -4.10+1.10i
    10.90+3.30i
    好像是c语言期末考试的考试题

    #include <stdio.h>
    #include <stdlib.h>
     
    struct comp
    {
        double real;
        double imag;
    };
     
    int main()
    {
        struct comp data[2];
        struct comp pluss;
        struct comp minuss;
        while(scanf("%lf%lf%lf%lf",&data[0].real,&data[0].imag,&data[1].real,&data[1].imag)!=EOF)
        {
            pluss.real=data[0].real+data[1].real;
            pluss.imag=data[0].imag+data[1].imag;
            if(pluss.imag<0)
                printf("%.2lf%.2lfi
    ",pluss.real,pluss.imag);
            else
                printf("%.2lf+%.2lfi
    ",pluss.real,pluss.imag);
            minuss.real=data[0].real-data[1].real;
            minuss.imag=data[0].imag-data[1].imag;
            if(minuss.imag<0)
                printf("%.2lf%.2lfi
    ",minuss.real,minuss.imag);
            else
                printf("%.2lf+%.2lfi
    ",minuss.real,minuss.imag);
        }
        return 0;
    }

    4
    优秀学生

    Problem:D

    Time Limit:1000ms

    Memory Limit:65535K

    Description

    读入学生的信息(最多不超过100个):学号(不超过八位)、姓名(不超过20个字符)、C语言成绩(用整数表示)。统计优秀学生的信息(成绩在90分以上,包括90分)及个数。(要求用结构体实现)
    Input

    输入数据有多组,每组为n个学生的信息;
    Output

    输出数据优秀学生的信息及个数。
    Sample Input

    5
    2015001
    ZhangSan
    90
    2015002
    LiMing
    80
    2015003
    WangHong
    70
    2015004
    ZhangXiao
    95
    2015005
    WangFang
    100
    3
    2015001
    ZhangSan
    60
    2015002
    LiMing
    80
    2015003
    WangHong
    85
    Sample Output

    2015001 ZhangSan 90
    2015004 ZhangXiao 95
    2015005 WangFang 100
    3
    0
    Hint

    按要求做答,否则无分!
    comment
    题目难度系数 :3分 难度适中;
    本题目考核知识点:
    1.结构体定义。
    2.结构体数据的输入和输出。
    3.结构体数组的使用。
    这个题是c语言补考的题

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
        struct student
    {
        int number;
        char name[20];
        int score;
    } student;
    int main()
    {  struct student stu[100];
       int n,i,sum;
       while(scanf("%d",&n)!=-1)
       {
           sum=0;
           getchar();
           for(i=0;i<n;i++)
           {
    scanf("%d%s%d",&stu[i].number,&stu[i].name,&stu[i].score);
               if(n>1)  getchar();
           }
            for(i=0;i<n;i++)
            if(stu[i].score>=90)
            {
                sum++;
    printf("%d %s %d
    ",stu[i].number,stu[i].name,stu[i].score);
            }
            printf("%d
    ",sum);
     
       }
     
        return 0;
    }

    5
    两圆的距离

    Problem:E

    Time Limit:1000ms

    Memory Limit:65535K

    Description

    有很多个圆,圆心的坐标都在X轴上,这些圆都不相交,请问最右边的圆距离y轴有多远?
    计算公式为:最右边的圆的圆心到(0,0)点的距离减去这个圆的半径。
    Input

    输入数据有多组,每组第1行为N代表圆的个数(2&lt;=N&lt;=10),然后有N行数据,每行2个实数x和r,分别代表圆的圆心横坐标和半径(0.0&lt;x,r&lt;50.0,因为圆心的纵坐标都为0,所以不给出纵坐标的值)。
    本题用结构体来实现
    struct yuan
    {
    double x;//圆心的X轴坐标
    double r;//半径
    } data[11];
    Output

    对于每组数据在一行内输出最右边的圆到Y轴的距离,结果保留2位小数。
    Sample Input

    3
    0 1
    2 0.5
    4 1
    Sample Output

    3.00
    这个也是补考题

    #include <stdio.h>
    #include <stdlib.h>
    struct yuan
    {
        double x;
        double r;
    }data[11];
    int main()
    {
      int n,i,t;
      double max;
      while(scanf("%d",&n)!=-1)
      {
          max=-9999.00;t=0;
          for(i=0;i<n;i++)
          {
              scanf("%lf%lf",&data[i].x,&data[i].r);
              if (max<data[i].x) {max=data[i].x;t=i;}
     
          }
          printf("%.2lf
    ",data[t].x-data[t].r);
     
          }
     
     
        return 0;
    }

     

    p.s.应该养成良好的习惯,结构体的定义在main函数外面,每次使用清空内容……

  • 相关阅读:
    第07组 Alpha冲刺(2/4)
    第07组 Alpha冲刺(1/4)
    团队项目-需求分析报告
    团队项目-选题报告
    1381 硬币游戏
    1381 硬币游戏
    1347 旋转字符串
    1344 走格子
    1305 Pairwise Sum and Divide
    1384 全排列
  • 原文地址:https://www.cnblogs.com/ilovetheworld/p/10135196.html
Copyright © 2011-2022 走看看