【C语言】基础刷题训练4(含全面分析和代码改进示例)

news2024/11/26 1:29:49

系列文章目录

提示:该系列文章暂未全部完成,暂时欠缺系列文章目录,见谅
基础刷题训练4(含全面分析和代码改进示例)


文章目录

  • 系列文章目录
  • 前言
  • 题目链接(有需要的请自行链接做题)
  • T1:
    • 思路1:
    • 思路2:
    • T1总结:
  • T2:
    • 思路1:
    • 思路2:
    • 思路3:
    • T2总结:
  • T3:
    • 思路1:
    • T3总结:
  • T4:
    • 思路1:
    • T4总结:
  • T5:
    • 思路1:
    • T5总结:
  • T6:
    • 思路1:
    • 思路2:
    • 思路3:
    • T6总结:
  • T7:
    • 思路1:
    • T7总结:
  • T8:
    • 思路1:
    • T8总结
  • T9:
    • 思路1:
    • 思路2:
  • 所有代码展示:
  • 结语:


前言

本章刷题博客主要面向基础性题目,包含的主要知识点包括分支循环,数组的使用,循环嵌套等等…比较重点的内容有冒泡排序和库函数qsort的使用。


题目链接(有需要的请自行链接做题)

  1. 时间转换 题号:BC30 链接:https://www.nowcoder.com/practice/
    c4ae7bcac7f9491b8be82ee516a94899?tpId=290&tqId=39818&ru=/exam/oj
  2. 总成绩和平均分计算 题号:(⽆) 链接:https://www.nowcoder.com/
    questionTerminal/0fa5132c156b434da4347ad051c4be22
  3. KIKI和酸奶 题号:BC35 链接:https://www.nowcoder.com/practice/c
    7721f3a1b1a47a783974453e82cadbb?tpId=290&tqId=39823&ru=/exam/oj
  4. 发布会信息 题号:(⽆)链接:https://www.nowcoder.com/questi
    onTerminal/20e59d0f388448c68f581b9d3ca66049
  5. 输出学⽣信息 题号:(⽆)链接:https://www.nowcoder.com/que
    stionTerminal/8e94458049eb4e838f711bbd1be0045e
  6. 计算平均成绩 题号:(⽆) 链接:https://www.nowcoder.com/que
    stionTerminal/30a28eb88c3f4e87be1a5b397ddd6fe2
  7. 进制A+B 题号:BC20 链接:https://www.nowcoder.com/practice/6
    187581174ac48278ca3bccf8d534897?tpId=290&tqId=39808&ru=/exam/oj
  8. ⽹购 题号:BC63 链接:https://www.nowcoder.com/practice/5d7d
    fd405e5f4e4fbfdff6862c46b751?tpId=290&tqId=39851&ru=/exam/oj
  9. 争夺前五名 题号:BC120 链接:https://www.nowcoder.com/practi
    ce/cd052308a1c44a88ad00255f312c3e14?tpId=290&tqId=39908&ru=/exam/oj

T1:

在这里插入图片描述

思路1:

用循环的方式先处理小时再处理分钟再处理秒
代码展示:

//T1:way1
void T1_way1(void)
{
	//三个变量,分别用来表示秒,分钟,小时
	int s = 0;
	int m = 0;
	int h = 0;
	scanf("%d", &s);

	//处理分钟:
	while (s >= 60)
	{
		s -= 60;
		m++;
	}
	//处理小时:
	while (m >= 60)
	{
		m -= 60;
		h++;
	}

	printf("%d %d %d", h, m, s);
}
int main()
{
	T1_way1();
	return 0;
}

思路2:

用/和%的方式依次对小时分钟和秒进行处理

//T1:way2
void T1_way2(void)
{
	//创建三个变量,分别表示秒,分钟,小时
	int s = 0;
	int m = 0;
	int h = 0;
	scanf("%d", &s);

	//计算
	h = s / 60 / 60;
	m = s / 60 % 60;
	s = s % 60;

	//打印
	printf("%d %d %d", h, m, s);

}
int main()
{
	//T1_way1();
	T1_way2();
	return 0;
}

T1总结:

我感觉上面两种方法都是先处理小时再处理分钟最后处理秒的一个思路,只不过感觉第一种用循环比较容易想到,第二种的话是对/和%比较深入的理解才有所想法。

T2:

在这里插入图片描述

思路1:

创建三个变量,然后打印平均值
需要注意的是:相除要得到浮点数结果,除号的两个操作数至少有一个是浮点类型的值才行。

void T2_way1(void)
{
	//创建三个变量,用来存储该学生的每科成绩
	double a, b, c;
	scanf("%lf %lf %lf", &a, &b, &c);

	//打印
	printf("%.2lf %.2lf", a + b + c, (a + b + c) / 3.0);

}

int main()
{
	//T1_way1();
	//T1_way2();
	T2_way1();
	return 0;
}

思路2:

利用数组进行存储数值,然后求平均值
用数组的好处是:可以处理大量数值,如果输入300科的成绩也可以进行处理

void T2_way2(void)
{
	//存储
	double arr[3] = { 0 };

	//输入
	scanf("%lf %lf %lf", &arr[0], &arr[1], &arr[2]);

	//计算
	double sum = arr[0] + arr[1] + arr[2];
	double average = sum / 3.0;
	
	//输出
	printf("%.2lf %.2lf\n", sum, average);
}

int main()
{
	//T1_way1();
	//T1_way2();
	//T2_way1();
	T2_way2();
	return 0;
}

思路3:

一边输入,一边计算
这种思路的好处是节省内存空间,提升效率

void T2_way3(void)
{
	double sum = 0.0;
	double a = 0;

	//输入+计算
	int i = 0;
	for (i = 0; i < 3; i++)
	{
		scanf("%lf", &a);
		sum += a;
	}

	//输出结果
	printf("%.2lf %.2lf\n", sum, sum / 3.0);

}

int main()
{
	//T1_way1();
	//T1_way2();
	//T2_way1();
	//T2_way2();
	T2_way3();

	return 0;
}

T2总结:

我认为way3是最优的,因为我们这道题不需要存储数据浪费空间的,一边输入一边计算可以节省效率和内存空间,一举两得。

T3:

在这里插入图片描述

思路1:

void T3_way1(void)
{
	int n, h, m;
	while (scanf("%d %d %d", &n, &h, &m) != EOF)
	{
		//通常情况:
		n = n - m/h;
		//如果时间有剩余,那么肯定又开了一瓶
		if (m % h)
		{
			n--;
		}
		printf("%d\n", n);
	}
}

int main()
{
	//T1_way1();
	//T1_way2();
	//T2_way1();
	//T2_way2();
	//T2_way3();
	T3_way1();
	return 0;
}

T3总结:

我感觉这个题目主要就是考了一下if的用法吧,没什么值得说的点,其实还有一种思路,跟way1大同小异,也就不说了。
值得注意的是多组输入这个东西,类似于一个模板,就是while(scanf()!=EOF)基本类似于这种东西的一个模板,需要简单提一下。

T4:

在这里插入图片描述

思路1:

直接打印就行了

void T4_way1(void)
{
	printf("I lost my cellphone!\n");
}
int main()
{
	//T1_way1();
	//T1_way2();
	//T2_way1();
	//T2_way2();
	//T2_way3();
	//T3_way1();
	T4_way1();
	return 0;
}

T4总结:

这个题目没什么好说的都会。。。
需要注意的是在OJ上做题,尤其这种打印的,直接复制就行了,自己打字打半天还容易打错。。。

T5:

在这里插入图片描述

思路1:

直接打印

void T5_way1(void)
{
	printf("Name    Age    Gender\n");
	printf("---------------------\n");
	printf("Jack    18     man\n");
}

int main()
{
	//T1_way1();
	//T1_way2();
	//T2_way1();
	//T2_way2();
	//T2_way3();
	//T3_way1();
	//T4_way1();
	T5_way1();
	return 0;
}

T5总结:

这种打印的题目没啥可以做的,唯一需要掌握的是,打印时候要学会复制。

T6:

在这里插入图片描述

思路1:

五个变量,存储求值
这种代码吧,也没什么问题,总感觉就是怪怪的简单

void T6_way1(void)
{
	int a, b, c, d, e;
	scanf("%d %d %d %d %d", &a, &b, &c, &d, &e);
	printf("%.1f\n", (a + b + c + d + e) / 5.0);
}

int main()
{
	//T1_way1();
	//T1_way2();
	//T2_way1();
	//T2_way2();
	//T2_way3();
	//T3_way1();
	//T4_way1();
	//T5_way1();
	T6_way1();
	return 0;
}

思路2:

利用数组进行存储求值

void T6_way2(void)
{
	int arr[5] = { 0 };

	//输入
	int i = 0;
	for (i = 0; i < 5; i++)
	{
		scanf("%d", &arr[i]);
	}

	//求和
	int sum = 0;
	for (i = 0; i < 5; i++)
	{
		sum += arr[i];
	}

	//输出
	printf("%.1lf", sum / 5.0);
}

int main()
{
	//T1_way1();
	//T1_way2();
	//T2_way1();
	//T2_way2();
	//T2_way3();
	//T3_way1();
	//T4_way1();
	//T5_way1();
	//T6_way1();
	T6_way2();
	return 0;
}

思路3:

一边输入一边求值,效率内存最高

void T6_way3(void)
{
	//创建变量
	int i = 0;
	int sum = 0;
	int num = 0;
	
	//输入+求值
	for (i = 0; i < 5; i++)
	{
		scanf("%d", &num);
		sum += num;
	}

	//输出
	printf("%.1lf\n", sum / 5.0);
}
int main()
{
	//T1_way1();
	//T1_way2();
	//T2_way1();
	//T2_way2();
	//T2_way3();
	//T3_way1();
	//T4_way1();
	//T5_way1();
	//T6_way1();
	//T6_way2();
	T6_way3();
	return 0;
}

T6总结:

其实这个题目跟T2基本上是一样的,注意要结合数组,一边输入一边计算来进行求值。

T7:

在这里插入图片描述

思路1:

void T7_way1(void)
{
	int a, b;
	//在C语言当中,%x是一个十六进制占位符,%o是一个八进制占位符
	scanf("%x %o", &a, &b);
	printf("%d\n", a + b);
}

int main()
{
	//T1_way1();
	//T1_way2();
	//T2_way1();
	//T2_way2();
	//T2_way3();
	//T3_way1();
	//T4_way1();
	//T5_way1();
	//T6_way1();
	//T6_way2();
	//T6_way3();
	T7_way1();
	return 0;
}

T7总结:

这个题目主要是给大家补充一下知识点,%x是十六进制数字的占位符,%o是八进制数字的占位符。
注意,不同进制的数字只是表示方法的不同而已。

T8:

在这里插入图片描述

思路1:

void T8_way1(void)
{
	//表示多少钱
	double a;
	int m, d, flag;

	scanf("%lf %d %d %d", &a, &m, &d, &flag);

	if (m == 11 && d == 11)
	{
		a *= 0.7;
	}
	if (m == 12 && d == 12)
	{
		a *= 0.8;
	}
	if (flag == 1)
	{
		a -= 50;
	}
	if (a >= 0)
		printf("%.2lf\n", a);
	else
		printf("0\n");

}

int main()
{
	//T1_way1();
	//T1_way2();
	//T2_way1();
	//T2_way2();
	//T2_way3();
	//T3_way1();
	//T4_way1();
	//T5_way1();
	//T6_way1();
	//T6_way2();
	//T6_way3();
	//T7_way1();
	T8_way1();
	return 0;
}

T8总结

我感觉这个题目就是训练if的使用的,理好逻辑没啥大问题

T9:

在这里插入图片描述

思路1:

利用冒泡排序

void T9_way1(void)
{
	//输入
	int n = 0;
	scanf("%d", &n);
	int arr[50] = { 0 };
	int i = 0;
	for (i = 0; i < n; i++)
	{
		scanf("%d", &arr[i]);
	}

	//冒泡排序
	int j = 0;
	for (i = 0; i < n; i++)
	{
		for (j = 0; j < n - 1; j++)
		{
			if (arr[j] < arr[j + 1])
			{
				int t = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = t;
			}
		}
	}
	//输出
	for (i = 0; i < 5; i++)
	{
		printf("%d ", arr[i]);
	}
}


int main()
{
	//T1_way1();
	//T1_way2();
	//T2_way1();
	//T2_way2();
	//T2_way3();
	//T3_way1();
	//T4_way1();
	//T5_way1();
	//T6_way1();
	//T6_way2();
	//T6_way3();
	//T7_way1();
	//T8_way1();
	T9_way1();
	return 0;
}

思路2:

利用qsort函数进行排序

int cmp_int(const void* e1, const void* e2)
{
	return *(int*)e2 - *(int*)e1;
}

void T9_way2(void)
{
	//输入
	int n = 0;
	scanf("%d", &n);
	int arr[50] = { 0 };
	int i = 0;
	for (i = 0; i < n; i++)
	{
		scanf("%d", &arr[i]);
	}

	//qsort排序
	qsort(arr, n, sizeof(int), cmp_int);

	//输出
	for (i = 0; i < 5; i++)
	{
		printf("%d ", arr[i]);
	}
}

int main()
{
	//T1_way1();
	//T1_way2();
	//T2_way1();
	//T2_way2();
	//T2_way3();
	//T3_way1();
	//T4_way1();
	//T5_way1();
	//T6_way1();
	//T6_way2();
	//T6_way3();
	//T7_way1();
	//T8_way1();
	//T9_way1();
	T9_way2();
	return 0;
}

所有代码展示:

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

//T1:way1
void T1_way1(void)
{
	//三个变量,分别用来表示秒,分钟,小时
	int s = 0;
	int m = 0;
	int h = 0;
	scanf("%d", &s);

	//处理分钟:
	while (s >= 60)
	{
		s -= 60;
		m++;
	}
	//处理小时:
	while (m >= 60)
	{
		m -= 60;
		h++;
	}

	printf("%d %d %d", h, m, s);
}

//T1:way2
void T1_way2(void)
{
	//创建三个变量,分别表示秒,分钟,小时
	int s = 0;
	int m = 0;
	int h = 0;
	scanf("%d", &s);

	//计算
	h = s / 60 / 60;
	m = s / 60 % 60;
	s = s % 60;

	//打印
	printf("%d %d %d", h, m, s);

}

void T2_way1(void)
{
	//创建三个变量,用来存储该学生的每科成绩
	double a, b, c;
	scanf("%lf %lf %lf", &a, &b, &c);

	//打印
	printf("%.2lf %.2lf", a + b + c, (a + b + c) / 3.0);

}


void T2_way2(void)
{
	//存储
	double arr[3] = { 0 };

	//输入
	scanf("%lf %lf %lf", &arr[0], &arr[1], &arr[2]);

	//计算
	double sum = arr[0] + arr[1] + arr[2];
	double average = sum / 3.0;
	
	//输出
	printf("%.2lf %.2lf\n", sum, average);
}


void T2_way3(void)
{
	double sum = 0.0;
	double a = 0;

	//输入+计算
	int i = 0;
	for (i = 0; i < 3; i++)
	{
		scanf("%lf", &a);
		sum += a;
	}

	//输出结果
	printf("%.2lf %.2lf\n", sum, sum / 3.0);

}


void T3_way1(void)
{
	int n, h, m;
	while (scanf("%d %d %d", &n, &h, &m) != EOF)
	{
		//通常情况:
		n = n - m/h;
		//如果时间有剩余,那么肯定又开了一瓶
		if (m % h)
		{
			n--;
		}
		printf("%d\n", n);
	}
}


void T4_way1(void)
{
	printf("I lost my cellphone!\n");
}


void T5_way1(void)
{
	printf("Name    Age    Gender\n");
	printf("---------------------\n");
	printf("Jack    18     man\n");
}


void T6_way1(void)
{
	int a, b, c, d, e;
	scanf("%d %d %d %d %d", &a, &b, &c, &d, &e);
	printf("%.1f\n", (a + b + c + d + e) / 5.0);
}


void T6_way2(void)
{
	int arr[5] = { 0 };

	//输入
	int i = 0;
	for (i = 0; i < 5; i++)
	{
		scanf("%d", &arr[i]);
	}

	//求和
	int sum = 0;
	for (i = 0; i < 5; i++)
	{
		sum += arr[i];
	}

	//输出
	printf("%.1lf", sum / 5.0);
}

void T6_way3(void)
{
	//创建变量
	int i = 0;
	int sum = 0;
	int num = 0;
	
	//输入+求值
	for (i = 0; i < 5; i++)
	{
		scanf("%d", &num);
		sum += num;
	}

	//输出
	printf("%.1lf\n", sum / 5.0);
}

void T7_way1(void)
{
	int a, b;
	//在C语言当中,%x是一个十六进制占位符,%o是一个八进制占位符
	scanf("%x %o", &a, &b);
	printf("%d\n", a + b);
}

void T8_way1(void)
{
	//表示多少钱
	double a;
	int m, d, flag;

	scanf("%lf %d %d %d", &a, &m, &d, &flag);

	if (m == 11 && d == 11)
	{
		a *= 0.7;
	}
	if (m == 12 && d == 12)
	{
		a *= 0.8;
	}
	if (flag == 1)
	{
		a -= 50;
	}
	if (a >= 0)
		printf("%.2lf\n", a);
	else
		printf("0\n");

}


void T9_way1(void)
{
	//输入
	int n = 0;
	scanf("%d", &n);
	int arr[50] = { 0 };
	int i = 0;
	for (i = 0; i < n; i++)
	{
		scanf("%d", &arr[i]);
	}

	//冒泡排序
	int j = 0;
	for (i = 0; i < n; i++)
	{
		for (j = 0; j < n - 1; j++)
		{
			if (arr[j] < arr[j + 1])
			{
				int t = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = t;
			}
		}
	}
	//输出
	for (i = 0; i < 5; i++)
	{
		printf("%d ", arr[i]);
	}
}


int cmp_int(const void* e1, const void* e2)
{
	return *(int*)e2 - *(int*)e1;
}

void T9_way2(void)
{
	//输入
	int n = 0;
	scanf("%d", &n);
	int arr[50] = { 0 };
	int i = 0;
	for (i = 0; i < n; i++)
	{
		scanf("%d", &arr[i]);
	}

	//qsort排序
	qsort(arr, n, sizeof(int), cmp_int);

	//输出
	for (i = 0; i < 5; i++)
	{
		printf("%d ", arr[i]);
	}
}

int main()
{
	//T1_way1();
	//T1_way2();
	//T2_way1();
	//T2_way2();
	//T2_way3();
	//T3_way1();
	//T4_way1();
	//T5_way1();
	//T6_way1();
	//T6_way2();
	//T6_way3();
	//T7_way1();
	//T8_way1();
	//T9_way1();
	T9_way2();
	return 0;
}

结语:

感觉这种简单题目自己做一遍是最好的,为了方便我写代码时候直接放一个main函数去了。
多练习多练习,哈哈。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1319488.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Java SSM框架实现课程思政元素收集系统项目【项目源码+论文说明】

基于java的SSM框架实现课程思政元素收集系统演示 摘要 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐渐被人们所认…

git教程(基于vscoede)

Git&#xff08;读音为/gɪt/&#xff09;是一个开源的分布式版本控制系统&#xff0c;可以有效、高速地处理从很小到非常大的项目版本管理。也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。 1.打开vscode&#xff0c;创建文件夹gittest&am…

keithley 吉时利6221源表

特点 优势 10 14 Ω 输出阻抗 提供广泛的输出阻抗&#xff0c;确保负载中有稳定的电流源。 65000 点源内存 允许直接从电流源执行全面的测试电流扫描。 输出 0.1V 至 105V 的恒流电压&#xff0c;10mV 步长 防止潜在损坏对过电压敏感的设备。 源交流电源范围为 4pA 至…

FFmpeg转码流程和常见概念

视频格式&#xff1a;mkv&#xff0c;flv&#xff0c;mov&#xff0c;wmv&#xff0c;avi&#xff0c;mp4&#xff0c;m3u8&#xff0c;ts等等 FFmpeg的转码工具&#xff0c;它的处理流程是这样的&#xff1a; 从输入源获得原始的音视频数据&#xff0c;解封装得到压缩封装的音…

iOS应用如何通过广告变现?有哪些变现优势?

2021年&#xff0c;在ios 14.5发布后&#xff0c;移动应用生态正式进入「后 IDFA 时代」&#xff0c;收集用户数据的方式发生了变化&#xff0c;这让通过定向广告变现变得比以往更加困难&#xff0c;且苹果还禁止对安装应用提供奖励。即便如此&#xff0c;iOS的“吸金”能力只增…

优质全套SpringMVC教程

三、SpringMVC 在SSM整合中&#xff0c;MyBatis担任的角色是持久层框架&#xff0c;它能帮我们访问数据库&#xff0c;操作数据库 Spring能利用它的两大核心IOC、AOP整合框架 1、SpringMVC简介 1.1、什么是MVC MVC是一种软件架构的思想&#xff08;不是设计模式-思想就是我们…

java 角色访问控制管理系统Myeclipse开发mysql数据库MVC结构serlvet编程计算机网页项目

一、源码特点 java 角色访问控制管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统采用serlvetdaobean&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发 开发工具myeclipse8.5 mysql5…

java8实战 lambda表达式和函数式接口(上)

前言&#xff1a; 本博客对java8实战第三章的总结&#xff0c;也是上一篇博客行为化参数的延续&#xff0c;介绍一下函数式接口 Lambda表达式 lambda的表达式的结构由&#xff1a;参数&#xff0c;箭头&#xff0c;主体构成。 lambda示例 函数式接口&#xff1a; 先看上一篇…

Ubuntu-报错

Hadoop-Eclipse-java&#xff1a;耽误进度的几个报错 错误1&#xff1a;桥接模式与NAT模式相互切换后导致两种模式都不能访问互联网&#xff08;1&#xff09;具体错误&#xff1a;&#xff08;2&#xff09;错误原因&#xff1a;&#xff08;3&#xff09;解决方案&#xff1a…

Java_Arrays类

一、Arrays类 接下来学习的类叫做Arrays&#xff0c;其实Arrays并不是重点&#xff0c;但是我们通过Arrays这个类的学习有助于我们理解下一个知识点Lambda的学习。所以我们这里先学习Arrays&#xff0c;再通过Arrays来学习Lamdba这样学习会更丝滑一些_. 1.1 Arrays基本使用 …

【Linux】初识命令行

为什么使用命令行&#xff1f; 大多数的计算机用户只是熟悉图形用户界面(GUI)&#xff0c;采用图形方式显示的用户操作界面。命令行界面(CLI)是一种通过文本输入来与计算机进行交互的方式&#xff0c;用来和计算机进行交流沟通的非常有效的方式&#xff0c;正像人类社会使用文…

jetpack compose 学习(2)

jetpack compose 学习(1) 学会了如何创建一个compose项目,并成功run了起来 今天学习run起来的界面配置 找启动界面,当然是先找到界面的配置文件: androidManifest.xml 这个文件,然后通过启动项找到主界面, 第二步 按住ctrl 鼠标指向MainActivity 即可跳转主界面 进入后的界面…

HarmonyOS--基础组件Button

Button组件 可以包含单个子组件。 Button(label?: ResourceStr, options?: { type?: ButtonType, stateEffect?: boolean }) 1&#xff1a;文字按钮 Button(‘点击’) 2&#xff1a;自定义按钮,嵌套其它组件 Button() {Image(https://) }.type(ButtonType.Circle)

优质全套Spring全套教程

hello&#xff0c;我是小索奇&#xff0c;这里把Spring全套笔记分享出来哈&#xff0c;便于大家查看~一起加油 Spring 1、Spring简介 1.1、Spring概述 官网地址&#xff1a;Spring | Home Spring 是最受欢迎的企业级 Java 应用程序开发框架&#xff0c;数以百万的来自世界各…

为什么要使用表单?

目录 1.与服务器端的数据交互 2. 表单验证 3. 无需JavaScript支持 4. 语义化 表单元素的局限性 1. 样式限制 2. 客户端验证的局限性 总结: HTML使用表单是为了在Web页面中收集和提交用户输入的数据。表单可以包含多个表单元素&#xff0c;如文本框、下拉列表、单选框和…

开源 LLM 微调训练指南:如何打造属于自己的 LLM 模型

一、介绍 今天我们来聊一聊关于LLM的微调训练&#xff0c;LLM应该算是目前当之无愧的最有影响力的AI技术。尽管它只是一个语言模型&#xff0c;但它具备理解和生成人类语言的能力&#xff0c;非常厉害&#xff01;它可以革新各个行业&#xff0c;包括自然语言处理、机器翻译、…

【ZYNQ学习】PL第一课

这节课讲什么&#xff1f; 这节课的名字本来是想写为LED&#xff0c;但这一课里除了LED也有按键&#xff0c;又想换为GPIO控制&#xff0c;但关于PL的GPIO控制&#xff0c;不应该这么草率和简单&#xff0c;而且这一课有很多和ZYNQ或者PL关联性不强的东西要说。 所以我写了删删…

mmpose 使用笔记

目录 自己整理的可以跑通的代码&#xff1a; 图片demo&#xff1a; 检测加关键点 自己整理的可以跑通的代码&#xff1a; 最强姿态模型 mmpose 使用实例-CSDN博客 图片demo&#xff1a; python demo/image_demo.py \tests/data/coco/000000000785.jpg \configs/body_2d_k…

探索人工智能中的AI作画:创意、技术与未来趋势

导言 AI作画是人工智能领域中一个备受关注的前沿应用&#xff0c;它将传统艺术与先进技术相结合&#xff0c;创造出令人惊艳的艺术品。本文将深入探讨AI作画的创意过程、技术原理以及未来可能的发展趋势。 1. AI作画的创意过程 艺术风格迁移&#xff1a; AI作画通过学…

es6学习(一):变量声明的方式对比:var,let,const

前言 在let和const出现之前,js可以使用var为变量命令,如果是函数也可以用function命名,甚至你可以直接不用任何关键字命名 var a 1function fn() { }b 2console.log(a)console.log(fn)console.log(b) 结果如下 var的特性 1.window环境下,var在最外层定义的变量会直接赋值给…