一、日期转换
具体任务: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;
}