一、日期转换
具体任务: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>
int main(void)
{
int tick = 0;
short month, day;
int week1 = 0;
enum week
{
Sunday, Monday, Tuesday, Wednesday, Thusday, Friday, Saturday
};
//枚举定义星期,默认其变量对应数字为0,1,2...,刚好在求余数后与switch语句结合能用上。
printf("今天是2020年1月1日-星期三\n");
printf("请输入一个值\n");
scanf_s("%d", &tick);
if (tick <= 31)
{
month = 1;
day = tick;
}
else if ((tick > 31) & (tick <= 60))
{
month = 2;
day = tick - 31;
}
else if ((tick > 60) & (tick <= 91))
{
month = 3;
day = tick - 60;
}
else if ((tick > 91) & (tick <= 121))
{
month = 4;
day = tick - 91;
}
else if ((tick > 121) & (tick <= 152))
{
month = 5;
day = tick - 121;
}
else if ((tick > 152) & (tick <= 182))
{
month = 6;
day = tick - 152;
}
else if ((tick > 182) & (tick <= 213))
{
month = 7;
day = tick - 182;
}
else if ((tick > 213) & (tick <= 244))
{
month = 8;
day = tick - 213;
}
else if ((tick > 244) & (tick <= 274))
{
month = 9;
day = tick - 244;
}
else if ((tick > 274) & (tick <= 305))
{
month = 10;
day = tick - 274;
}
else if ((tick > 305) & (tick <= 335))
{
month = 11;
day = tick - 305;
}
else if ((tick > 335) & (tick <= 366))
{
month = 12;
day = tick - 335;
}
week1 = (tick % 7) + 2;
if (week1 > 7)
{
week1 = week1 - 7;
}
else
{
week1 = (tick % 7) + 2;
}
switch (week1)
{
case Sunday:
printf("2020年%d月%d日-星期日", month, day);
break;
case Monday:
printf("2020年%d月%d日-星期一", month, day);
break;
case Tuesday:
printf("2020年%d月%d日-星期二", month, day);
break;
case Wednesday:
printf("2020年%d月%d日-星期三", month, day);
break;
case Thusday:
printf("2020年%d月%d日-星期四", month, day);
break;
case Friday:
printf("2020年%d月%d日-星期五", month, day);
break;
case Saturday:
printf("2020年%d月%d日-星期六", month, day);
break;
}
system("pause");
return 0;
}
二、比较大小
具体任务:通过键盘输入2个数,判断大小,并输出结果到控制台窗口。
代码:
#include <stdio.h>
#include <stdlib.h>
typedef enum //定义枚举(较大较小变量)
{
Max=0, Min
}EnumCompare;
static int compare(int a, int b, unsigned char type); //声明比较函数(数据类型+变量,枚举定义变量:unsigned char type
int main(void)
{
int a, b; //定义变量内存
int Max=0; //一定要先给一个初始值,否则会出现未初始化内存
int Min=1;
printf("请输入一个数字\n");
scanf_s("%d", &a);
printf("请再输入一个数字\n");
scanf_s("%d", &b);
Max = compare(a, b, Max); //调用函数
Min = compare(a, b, Min);
system("pause");
return 0;
}
static int compare(int a, int b, unsigned char type)//阐述比较函数
{
switch (type)//枚举的值
{
case Max:
if (a > b)
printf("%d>%d\n", a, b);
else
printf("两个数字相等\n");
break;
case Min:
if (a < b)
printf("%d<%d\n", a, b);
else
printf("两个数字相等\n");
break;
}
return 0;
}
三、冒泡排序
具体任务:通过键盘输入10个数,判断大小,并输出结果到控制台窗口。
代码:
#include <stdio.h>
#include <stdlib.h>
typedef enum //实在想不出来枚举值对应什么变量/函数,可以让他变成枚举值对应每个部分
{
Compare = 0,
Input,
Output,
}Enumplan;
static void paixu(int a[], unsigned char type);//声明函数
int main()
{
int a[10]{ 0 };
printf("请输入10个数:\n");
paixu(a, Input); //此形式对应着声明时的函数形式
paixu(a, Compare);
printf("排序结果为:\n");
paixu(a, Output);
return 0;
}
static void paixu(int a[], unsigned char type) //赋予排序函数,后面不要加分号啊啊啊啊
{
switch (type)
{
case Compare:
int i,j, t;//i已经定义过了,所以只需要定义剩下的就好
for (j = 0; j <= 8; j++)//一个循环内两两比较,要比较的趟数(10个数,比较9次,从0开始,比较到8)
for (i = 0; i <= 8 - j; i++)//要缩小范围循环比较的次数
if (a[i] > a[i + 1])
{
t = a[i];
a[i] = a[i + 1];
a[i + 1] = t;
}
break;
case Input:
for (i = 0; i < 10; i++);
{
scanf_s("%d", &a[i]);
}
break;
case Output:
for ( i = 0; i < 10; i++);
{
printf("%d\t", &a[i]);
}
break;
}
}