- 习题文章题解均在博客英雄哪里出来可以找到,博主在这里记录自己的刷题过程及解题报告,想刷题可以找英雄哥,人特比特别好,如果你有毅力并且坚持下去跟着他你会有想不到的提升。加油兄弟们。写这个题解也是想通过csdn这个平台监督自己,进而获得提升,希望自己坚持下去,加油啊!!!
- c语言100例:《C语言入门100例》_英雄哪里出来-CSDN博客
- 算法100例:《算法零基础100讲》_英雄哪里出来-CSDN博客
今天做一下总结,感觉现在我做啥题都很吃力,自己一个题想很久都没有思路,有了思路还是实现不了,但是看了别人的代码自己懂了之后能实现出来,我是接收知识比较慢的那种人,不能抱怨,只能低下头继续写代码,这时候沉住气,千万别和人家厉害的比,自己做好自己的,别比进度,加油啊,相信自己。
《算法零基础100讲》(第6讲) 日期算法_英雄哪里出来-CSDN博客
力扣:1154. 一年中的第几天 - 力扣(LeetCode) (leetcode-cn.com)
先说一下这个题的解题思路:
题目条件是给你年/月/日,让你算一下这一天是这一年的第几天,我们肯定会想到把这个月的前几个月(也就是1月到本月的前一个月(不包括本月))加上,在加上天数就是我们所要求解的,但是尤其不要忘记还要判断这一年是闰年还是平年,它们的2月份天数不一样,闰年是29天,平年是28天。这样的思路就差不多了,还有一点就是由于力扣本身给我们的接口,输入的年月份是字符串,所以我们就要把字符串里的年月日转化成数字。
//判断闰年or平年//(1)
bool is_leap_year(int year){
if(year %4 ==0 && year % 100 !=0 || year % 400==0)
{
return true;
}
return false;
}
//提取字符串中的年月日//(2)
int StroInt(char*str,int len){
int i = 0;
int sum=0;
for(i=0;i
(1):判断闰年还是平年
所以就是能被4整除并且不能被100整除或者能被400整除的数字;
(2):利用ASCII码值进行将字符串转化成数字,当然也可以用atoi函数
(3):创建一个数组表示每个月有多少天,其中第一个设置为0天是为了防止在后面累加天数的时候溢出;
(4):提取年份(也就是从第一个到第四个)
(5):提取月份(也就是从第5个到第7个(这里也就是从第五个开始往后两个))
(6):提取年份(也就是从第8个到第10个 (这里也就是从第8个开始往后两个))
(7):这时累加天数将下标为0时初始化为0与上面创建数组相照应。
(8):2月份如果是闰年就为29天否则平年28天。
(9):从一月开始一直到本月的前一月进行累加天数
(10):将本月的前一月累加的天数再加上本月的第几天最后就是答案了。
【第52题】qsort 结构体 应用 | 对二维空间中的点进行排序_英雄哪里出来-CSDN博客
#include#include //定义一个结构体 struct Point { int x, y;//x坐标 y坐标 }pt[10001]; int cmp(const struct Point* pa, const struct Point* pb) { if (pa->x == pb->x){ return pa->y - pb->y; } return pa->x - pb->x; } void input(int n) { int i = 0; for (i = 0; i < n; i++) { scanf("%d %d", &pt[i].x, &pt[i].y); } } void output(int n) { int i = 0; for (i = 0; i < n; i++) { printf("%d %dn", pt[i].x, pt[i].y); } } int main() { int n; while (scanf("%d", &n) != EOF) { //输入函数 input(n); //qsort函数实现 qsort(&pt, n, sizeof(pt[0]), cmp); //输出函数 output(n); } return 0; }
上一题进阶排序结构体字符串
typedef struct student
{
char name[20];
}Stu;
int cmp(const void* pa, const void* pb)
{
return strcmp(((Stu*)pa)->name, ((Stu*)pb)->name);
}
void print(Stu s[],int sz)
{
int i = 0;
for (i = 0; i < sz; i++) {
printf("%s ", s[i].name);
}
}
int main()
{
Stu s[3] = { {"wangermazi"},{ "zhaolaowu"},{"gulaosan"} };
int sz = sizeof(s) / sizeof(s[0]);
qsort(s, sz, sizeof(s[0]), cmp);
print(s,sz);
return 0;
}
【第53题】二维数组的应用 | 求二维数组每一行的最大值_英雄哪里出来-CSDN博客_c语言求二维数组每行最大值
#define maxn 110 int a[maxn][maxn]; #includevoid input(int m, int n, int a[][maxn]) { int i, j; for (i = 0; i < m; ++i) { for (j = 0; j < n; ++j) { scanf("%d", &a[i][j]); } } } void output(int m, int n, int a[][maxn]) { int i, j; for (i = 0; i < m; ++i) { for (j = 0; j < n; ++j) { printf("%d ", a[i][j]); } printf("n"); } } renew_a(int m, int n, int a[maxn][maxn]) { int i, j,max; for (i = 0; i < m; ++i) { max = a[i][0]; for (j = 1; j < n; ++j) { if (a[i][j] > max) { max = a[i][j]; } } a[i][0] = max; } } int main() { int n = 0; int m = 0; while (scanf("%d %d", &m, &n) != EOF) { //输入函数 input(m, n,a); //排序 renew_a(m,n,a); //输出函数 output(m, n, a); } return 0; }
这个题主要是renew_a这个函数;
先把二维数组的每一行的第一个元素当做这一行中最大的元素,然后依次枚举这一行的所有元素找到最大的那个元素,跳出for循环将其放在第一个。



