Task05 基于结构体的日期转换,比较大小,数字排序

一、日期转换

具体任务:2020年有366天,将2020年1月1日作为计数起点,即计数1,2020年12月31日作为计数终点,即计数366。计数1代表“2020年1月1日-星期三”,计数10代表“2020年1月10日-星期五”。通过键盘输入一个1~366之间的值,包括1和366,将其转换为年、月、日、星期,并输出到控制台窗口。
代码

#include <stdio.h>
#include <stdlib.h>

typedef struct  //声明结构体:定义一个新的数据类型:“typedef struct {结构体元素}要定义的数据类型”
{
    short month, day, week; //结构体的元素

}StructDateVal;//要定义的数据类型:结构体类型(Struct表性质:结构体,Date表含义:日期,Val表形容词后缀:的)

static StructDateVal Date(int tick);//声明结构体函数:static+数据类型+函数名(变量的数据类型+变量),static表一般函数故变量tick前是一般数据类型整型

int main(void)//主函数
{
    int tick = 0;//定义变量
    StructDateVal a;

    printf("请输入 1~366之间的任一数字\n");
    scanf_s("%d", &tick);

    a = Date(tick);//调用函数

    printf("2020-%02d-%02d-星期%d\n", a.month, a.day, a.week);//输出变量:函数返回的结构体变量.结构体中的某元素

    system("pause");

    return 0;
}


static StructDateVal Date(int tick)//赋予结构体函数,具体每个元素的函数下面一一列举,列举完后统一return(结构体变量)
{
    StructDateVal a;//定义一个结构体变量:结构体类型+变量名

    if (tick > 0 && tick <= 31)//列举月函数
    {
        a.month = 1;
    }
    else
    {
        if (tick > 31 && tick <= 60)
        {
            a.month = 2;
        }
        else
        {
            if (tick > 60 && tick <= 91)
            {
                a.month = 3;
            }
            else
            {
                if (tick > 91 && tick <= 121)
                {
                    a.month = 4;
                }
                else
                {
                    if (tick > 121 && tick <= 152)
                    {
                        a.month = 5;
                    }
                    else
                    {
                        if (tick > 152 && tick <= 182)
                        {
                            a.month = 6;
                        }
                        else
                        {
                            if (tick > 182 && tick <= 213)
                            {
                                a.month = 7;
                            }
                            else
                            {
                                if (tick > 213 && tick <= 244)
                                {
                                    a.month = 8;
                                }
                                else
                                {
                                    if (tick > 244 && tick <= 274)
                                    {
                                        a.month = 9;
                                    }
                                    else
                                    {
                                        if (tick > 274 && tick <= 305)
                                        {
                                            a.month = 10;
                                        }
                                        else
                                        {
                                            if (tick > 305 && tick <= 335)
                                            {
                                                a.month = 11;
                                            }
                                            else
                                            {
                                                if (tick > 335 && tick <= 366)
                                                {
                                                    a.month = 12;
                                                }
                                                else
                                                {
                                                    printf("找不到对应月份\n");
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }


    if (tick > 0 && tick <= 31)//列举日函数
    {
        a.day = tick;
    }
    else
    {
        if (tick > 31 && tick <= 60)
        {
            a.day = tick - 31;
        }
        else
        {
            if (tick > 60 && tick <= 91)
            {
                a.day = tick - 60;
            }
            else
            {
                if (tick > 91 && tick <= 121)
                {
                    a.day = tick - 91;
                }
                else
                {
                    if (tick > 121 && tick <= 152)
                    {
                        a.day = tick - 121;
                    }
                    else
                    {
                        if (tick > 152 && tick <= 182)
                        {
                            a.day = tick - 152;
                        }
                        else
                        {
                            if (tick > 182 && tick <= 213)
                            {
                                a.day = tick - 182;
                            }
                            else
                            {
                                if (tick > 213 && tick <= 244)
                                {
                                    a.day = tick - 213;
                                }
                                else
                                {
                                    if (tick > 244 && tick <= 274)
                                    {
                                        a.day = tick - 244;
                                    }
                                    else
                                    {
                                        if (tick > 274 && tick <= 305)
                                        {
                                            a.day = tick - 274;
                                        }
                                        else
                                        {
                                            if (tick > 305 && tick <= 335)
                                            {
                                                a.day = tick - 305;
                                            }
                                            else
                                            {
                                                if (tick > 335 && tick <= 366)
                                                {
                                                    a.day = tick - 335;
                                                }
                                                else
                                                {
                                                    printf("找不到相应日期\n");
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }


    a.week = (tick % 7) + 2;//列举周函数
    if (a.week > 7)
    {
        a.week = a.week - 7;
    }
    else
    {
        a.week = (tick % 7) + 2;
    }

    return(a); //列举完后统一:return(结构体变量)
}

二、比较大小

具体任务:通过键盘输入2个数,判断大小,并输出结果到控制台窗口。
代码

#include <stdio.h>
#include<stdlib.h>

typedef struct   //声明结构体
{
    int a,b;     //结构体的元素

}StructNumberVal; //结构体类型

int main(void)
{
	int a,b;
	StructNumberVal nu;

	printf("请输入一个数字\n");
	scanf_s("%d", &nu.a);
	printf("请再输入一个数字\n");
	scanf_s("%d", &nu.b);
	if (nu.a > nu.b)
	{
		printf("%d > %d\n", nu.a, nu.b);
	}
	else
	{
		printf("%d < %d\n", nu.a, nu.b);
	}
	system("pause");

	return 0;
}

三、冒泡排序

具体任务:通过键盘输入10个数,判断大小,并输出结果到控制台窗口。

代码

#include <stdio.h>
#include <stdlib.h>

typedef struct   //声明结构体
{
	double a[10]; //结构体的元素

}StructOrderVal; //结构体类型(不用定义数组:只有一种数据类型相当于元素只有一个)

int main()
{
	StructOrderVal xu;
	double a[10];
	int i, j;
	double t;
	
	printf("请输入10个数\n");
	for (i = 0; i <= 9; i++)//给输入的每个i定义上数组里的变量
		scanf_s("%lf", &xu.a[i]);//是字母l不是数字1!
	for (j = 0; j <= 8; j++)//
		for (i = 0; i <= 8 - j; i++)//第一轮比完后最大a9的在最后面,所以再次比较时范围缩小至前8个,以此类推缩小范围循环比较
			if (xu.a[i] > xu.a[i + 1])//可以只出现if,此逻辑是为了两两相邻的比,两者互换实现大的放后面
			{
				t = xu.a[i];
				xu.a[i] = xu.a[i + 1];
				xu.a[i + 1] = t;
			}
	printf("排序结果:\n");
	for (i = 0; i <= 9; i++)
		printf("%lf\t",xu.a[i]);
	printf("\n");

	return 0;
}

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值