zoukankan      html  css  js  c++  java
  • c学习第3天

    今天学习了结构体。诶呀,结构体丫丫的。

    struct stu{

    int age;

    char name[20];

    float score;

    };

    今天的作业呵呵,对我来说还可以吧。不是那么难。

    //1、定义一个结构体变量(包含年月日),计算该日在本年中为第几天?要求写一个days函数。参数是此结构体类型的变量,返回值是整数。

    //2、模拟n个人参加选举的过程,四个候选人ABCD。若选举某人直接输入其编号,最后按获得票数从高到低排序并输出候选人编号和票数。

     

    //3、某班5个学生,3门课,编写3个函数实现以下功能:

    //1)求各门课的平均分

    //2)找出三门都不及格的学生,输出其全部信息

    //3)找出3门课平均分在80-90之间的学生,输出其信息。

    耿哥要求呢,要每一个题都要创建一个.h和.c文件。下面就开始了第一题

    第一题呢:

    创建.h和.c文件。

    .h代码:

    //
    //  Days_calc.h
    //  homework4
    //
    //  Created by 尹亚坤 on 13-10-23.
    //  Copyright (c) 2013年 蓝鸥科技. All rights reserved.
    //
    
    #ifndef homework4_Days_calc_h
    #define homework4_Days_calc_h
    //1、定义一个结构体变量(包含年月日),计算该日在本年中为第几天?要求写一个days函数。参数是此结构体类型的变量,返回值是整数。
    //2、模拟n个人参加选举的过程,四个候选人A、B、C、D。若选举某人直接输入其编号,最后按获得票数从高到低排序并输出候选人编号和票数。
    
    //3、某班5个学生,3门课,编写3个函数实现以下功能:
    //(1)求各门课的平均分
    //(2)找出三门都不及格的学生,输出其全部信息
    //(3)找出3门课平均分在80-90之间的学生,输出其信息。
    
    typedef struct ymd{
        int year;
        int month;
        int day;
    }YMD;
    
    int IsRunian(int year);
    int calc_days(YMD);
    #endif

    .c文件中各个函数的实现如下:

    //
    //  Days_calc.c
    //  homework4
    //
    //  Created by 尹亚坤 on 13-10-23.
    //  Copyright (c) 2013年 蓝鸥科技. All rights reserved.
    //
    
    #include <stdio.h>
    #include "Days_calc.h"
    int calc_days(YMD ymd)
    {
        int year1= ymd.year;
        int month1=ymd.month;
        int day1=ymd.day;
        int days=0;
        if (1==IsRunian(year1))//如果是润年的话,走在这里面的程序.
        {
            
            int Rmounths[]={31,29,31,30,31,30,31,31,30,31,30,31};
            if (month1==1)
            {
                days=day1;
                
            }
            else
            {
                for (int i=0; i<month1-1; i++) {
                    days=days+ Rmounths[i]+day1;
                }
            }
            
        }
        else//不是润年走在else里的程序.
        {
            int Mounths[]={31,28,31,30,31,30,31,31,30,31,30,31};
            
            if (month1==1)
            {
                days=day1;
                
            }
            else
            {
                for (int i=0; i<month1-1; i++) {
                    days=days+ Mounths[i]+day1;
                }
            }
        }
        
       // printf("该日期是改年的第%d天",days);
        return days;
    }
    
    int IsRunian(int year)
    {
        //普通年能被4整除且不能被100整除的为闰年。(如2004年就是闰年,1901年不是闰年)
        //②、世纪年能被400整除的是闰年。(如2000年是闰年,1900年不是闰年)
        if(year%4==0&&year%100!=0)
        {
            return 1;
        }
        else if (year%100==0&&year%400==0)
        {
            return 1;
        }
        else
        {
            return 2;
        }
        
    }

    下面是第二题丫:

    //模拟n个人参加选举的过程,四个候选人ABCD。若选举某人直接输入其编号,最后按获得票数从高到低排序并输出候选人编号和票数。

    .h文件中代码:

    #ifndef homework4_Election_h
    #define homework4_Election_h
    //2、模拟n个人参加选举的过程,四个候选人A、B、C、D。若选举某人直接输入其编号,最后按获得票数从高到低排序并输出候选人编号和票数。
    typedef struct candidates{
        char name;
        int get_num;
    }candidaor;
    void calc_candidates(candidaor [],int len);
    
    #endif

    .c代码

    #include <stdio.h>
    #include "Election.h"
    void calc_candidates(candidaor cand[],int len)
    {
        candidaor temp;
        for (int i=0; i<len; i++) {
            for (int j=len-1; j>i; j--) {
                if (cand[j-1].get_num>cand[j].get_num) {
                    temp=cand[j-1];
                    cand[j-1]=cand[j];
                    cand[j]=temp;
                }
            }
        }
        
       // return temp.name;
    }

    好了,最后一题了

    .h代码:

    #ifndef homework4_calc_score_h
    #define homework4_calc_score_h
    //3、某班5个学生,3门课,编写3个函数实现以下功能:
    //(1)求各门课的平均分
    //(2)找出三门都不及格的学生,输出其全部信息
    //(3)找出3门课平均分在80-90之间的学生,输出其信息。
    
    typedef struct stu{
        int grade_course1;
        int grade_course2;
        int grade_course3;
        char name[20];
    }Student;
    void avg_grade(Student [],int len);//求各门课程的平均成绩
    void tooless_greade(Student[],int len);//找出三门都不及格的学生,输出其全部信息
    void print_good_info(Student[],int len);//找出3门课平均分在80-90之间的学生,输出其信息。
    
    
    #endif

    .c代码为:

    #include <stdio.h>
    #include "calc_score.h"
    void avg_grade(Student stus[],int len)//求各门课程的平均成绩
    {
        int sum,sum1,sum2;
        float avg,avg1,avg2;
        sum=0;
        sum1=0;
        sum2=0;
            for (int i=0; i<len; i++)
            {
                sum+=stus[i].grade_course1;
                sum1+=stus[i].grade_course2;
                sum2+=stus[i].grade_course3;
            }
        avg=(sum+0.0)/len;
        avg1=(sum1+0.0)/len;
        avg2=(sum2+0.0)/len;
        printf("avg_grade1=%f
    ",avg);
         printf("avg_grade2=%f
    ",avg1);
         printf("avg_grade3=%f
    ",avg2);
    }
    
    void tooless_greade(Student studs1[],int len)//找出三门都不及格的学生,输出其全部信息
    {
        for (int i=0; i<5; i++) {
            if (studs1[i].grade_course1<60&&studs1[i].grade_course2<60&&studs1[i].grade_course3<60) {
                printf("%s的三门成绩都小于60分,三门成绩为:%d,%d,%d
    ",studs1[i].name,studs1[i].grade_course1,studs1[i].grade_course2,studs1[i].grade_course3);
            }
        }
    }
    
    void print_good_info(Student students[],int len)//找出3门课平均分在80-90之间的学生,输出其信息。
    {
        for (int i=0; i<len; i++) {
            int sum_3=0;
            float avg_3=0;
            sum_3= students[i].grade_course1+students[i].grade_course2+students[i].grade_course3;
            avg_3=(sum_3+0.0)/3;
            if (avg_3>80.0&&avg_3<90.0) {
                printf("%s的三门成绩在80到90之间。
    ",students[i].name);
            }
        }
    }

    好了三个题的代码都贴上了,下面到主函数中来运行吧。(这些都是自己写的,可能有的写的不怎么好,方法不是最好的。在这里写下来就是加深记忆。)

    #include <stdio.h>
    #include "Days_calc.h"
    #include "Election.h"
    #include "calc_score.h"
    int main(int argc, const char * argv[])
    {
    
        // /////////////第一题
      
        YMD ymd1={2010,2,3};
        printf("是今年的第%d天。
    ", calc_days(ymd1));
        ////////////////第二题
        candidaor cans[]={{'A',78},{'B',67},{'C',90},{'D',100}};
        calc_candidates(cans,4);
        for (int i=0; i<4; i++) {
            printf("%c:%d
    ",cans[i].name,cans[i].get_num);
        }
        
        Student stus[5]={{51,47,29,"zhangsan1"},{52,88,49,"zhangsan2"},{87,97,79,"zhangsan3"},{26,77,39,"zhangsan4"},{36,77,39,"zhangsan5"}};
        avg_grade(stus,5);
        tooless_greade(stus,5);
        
        print_good_info(stus,5);
        return 0;
    }

    最后给自己一个运行图:

    算了吧,到现在还不会截图呢。

    运行结果为:

    是今年的第34天。

    B:67

    A:78

    C:90

    D:100

    avg_grade1=50.400002

    avg_grade2=77.199997

    avg_grade3=47.000000

    zhangsan1的三门成绩都小于60分,三门成绩为:51,47,29

    zhangsan3的三门成绩在8090之间。

    Program ended with exit code: 0

     

    好了,今天到这里,明天继续,明天可能会有更好的方法来解决今天的题目。

  • 相关阅读:
    REDUCING THE SEARCH SPACE FOR HYPERPARAMETER OPTIMIZATION USING GROUP SPARSITY阅读笔记
    缓存穿透、缓存击穿、缓存雪崩区别和解决方案
    Jenkins中构建时提示:Couldn't find any revision to build. Verify the repository and branch config
    Docker中使用Dockerfile定制化jar启动时:at sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264)
    Docker中部署mysql后SpringBoot连接时提示表不存在(修改表名忽略大小写)
    js使用y-seal实现印章功能
    手写js原生方法总结(简版)
    P5666
    CF653G
    P4649
  • 原文地址:https://www.cnblogs.com/yinyakun/p/3384984.html
Copyright © 2011-2022 走看看