C语言刷题日记(附详解)(2)

news2024/9/21 22:45:43

一、有理数加法

输入格式:

输入在一行中按照a1/b1 a2/b2的格式给出两个分数形式的有理数,其中分子和分母全是整形范围内的正整数。

输出格式:

在一行中按照a/b的格式输出两个有理数的和。注意必须是该有理数的最简分数形式,若分母为1,则只输出分子。

输入:1/6 1/4
输出:5/12
输入:4/9 5/9
输出:1

思路提示:此题算是较为常规的算法题,如果没有思路,不妨拿出笔和纸,在草纸上按照正常分数相加运算的过程编写代码~(需要注意如何判断分子分母相等时不需要输出‘/’)

答案

#include<stdio.h>
int main()
{
	int a1 = 0, a2 = 0;
	int b1 = 0, b2 = 0;
	scanf("%d/%d %d/%d", &a1, &a2, &b1, &b2);
	int num1 = a1 * b2 + b1 * a2;
	int num2 = a2 * b2;
	int num = 0;
	int min = 0;
	int i = 0;
	min = (num1 < num2) ? num1 : num2;
	for (i = 2; i <= min; i++)
	{
		if (num1 % i == 0 && num2 % i == 0)
		{
			num = i;//最大公约数
		}
	}
	if (num != 0)
	{
		num1 /= num;
		num2 /= num;
	}
	if (num2 == 1)
		printf("%d", num1);
	else
		printf("%d/%d", num1 , num2);
	return 0;
}

题解:主要的思路其实就是按照正常运算分数加法来一步步往下走,我们定义两个整形变量num1和num2,分别用来存放得到的分子和分母,然后我们寻找到分子和分母谁更小,用设定最小值为for循环的极限范围,只要num1和num2能同时被i整除,那么i就是两者的公约数。直到for循环完最后一次我们就能找到最大公约数,而后将分子分母同时除以最大公约数,便能得到两者约分后的的最终值。最后只需要判断一下,分别设置输出格式就好了~

二、龟兔赛跑

乌龟每分钟可以前进3米,兔子每分钟前进9米;兔子每跑10分钟回头看一下乌龟,若发现自己超过乌龟,就在路边休息,每次休息30分钟,否则继续跑10分钟;乌龟一直跑,不休息。假定乌龟与兔子在同一起点同一时刻开始起跑,请问T分钟后乌龟和兔子谁跑得快

输入格式:

输入一个时间T(分钟)

输出格式:

乌龟赢输出@_@,兔子赢输出^_^,平局则输出-_-,后跟一空格,再输出胜利者跑完的距离。

输入:173
输出:@_@ 519

思路提示:最开始提交的版本,我当数学应用题来做了,我是分别按照不同时间分别判断兔子和乌龟谁领先,谁落后,然后发现是有规律的,竟然“误打误撞”的就做出来了~

大概思路可以看这个表格:

比赛时间(分钟)兔子(距离)乌龟(距离)
1090>30
2090(休息)>60
3090=90
4090<120
45(容易忽略)135=135
50180>150
60180(休息)=180
70180<210
80180<240
90270=270

当时间从0流逝到90时刻时,正好两者又回到了同一起跑线,此为一次循环,当输入的时间比90大时,我们可以不断经历此循环,每次循环使时间减少90,并且乌龟和兔子运动的距离都增加270直到时间小于90,停止循环,然后通过此表格按照时间计算两者的距离并比较。

答案1

int main()
{
	int minute = 0;
	int rabrun = 0;
	int turrun = 0;
	scanf("%d", &minute);
	while (minute > 90)
	{
		minute -= 90;
		rabrun += 270;
		turrun += 270;
	}
	if (minute % 30 == 0 || minute == 45)
		printf("-_- %d", turrun + minute * 3);
	else if (minute > 0 && minute < 30)
	{
		if (minute < 10)
			printf("^_^ %d", rabrun + minute * 9);
		else
			printf("^_^ %d", rabrun + 90);
	}
	else if (minute > 30 && minute < 45)
		printf("@_@ %d", turrun + minute * 3);
	else if (minute > 45 && minute < 60)
	{
		if (minute < 50)
			printf("^_^ %d", rabrun + minute * 9);
		else
			printf("^_^ %d", rabrun + 180);
	}
	else if (minute > 60 && minute < 90)
		printf("@_@ %d", turrun + minute * 3);
	return 0;
}

此种方法我感觉还是比较好理解的,但提交之后我觉得这个代码是否过于麻烦了?因为这好像只是我在算,而并不是计算机在算...于是我又尝试使用题目给的条件,编写一个较为简单的答案。

思路提示:使用循环的方式代表流逝的时间,创建整型变量time,time++代表时间流逝一分钟,而每流逝一分钟,乌龟的路程+3,兔子的路程+9,并且利用if语句中添加各种限制条件,使得函数实现兔子十分钟看一次乌龟,不休息的时候才能看,领先乌龟时休息的功能。最后时间time等于输入的时间时跳出循环,最后对比乌龟与兔子的路程并按照对应方式输出就好啦~

答案2

int main()
{
    int T;//规定时间
    int time = 0;//记录过程时间
    int rabrun = 0;//兔子距离
    int turrun = 0;//乌龟距离
    int rabstill = 0;//兔子休息的时间
    scanf("%d", &T);
    while (time++ != T)
    {
        if (rabstill == 0)
            rabrun += 9;
        turrun += 3;
        if (rabstill != 0)
            rabstill--;                                        //1.十分钟看一次乌龟
        if (time % 10 == 0 && rabstill == 0 && rabrun > turrun)//2.不休息时才看 
        {                                                      //3.领先乌龟                          
                rabstill += 30;                                //运行:兔子休息30分钟
        }
    }
    if (rabrun > turrun)
    {
        printf("^_^ %d", rabrun);
    }
    else if (rabrun == turrun)
    {
        printf("-_- %d", turrun);
    }
    else
    {
        printf("@_@ %d", turrun);
    }
    return 0;
}

题解分别定义四个整型变量,代表流逝的时间time,兔子休息的时间rabstill,兔子奔跑的距离rabrun,乌龟奔跑的距离turrun。首先对兔子休息的时间是否为0,再决定兔子此时是否奔跑。而后使用if语句给上三个条件,分别实现十分钟看一次乌龟,不休息时才看,领先乌龟,的三种条件兔子才休息30分钟。而当休息时间>0时,时间每流逝1分钟,休息时间也减少1分钟,直到休息时间归零时,重新进行奔跑,回头的动作,时间结束后分别判断双方奔跑距离,并输出赢家~

三、说反话-加强版

输入一句英文,要求编写的程序实现将英文所有的单词逆序输出。

输入格式:

测试输入包含一个测试用例,在一行内给出总长度不超过500000的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用若干个空格分开

输出格式:

每个测试用例的输出占一行,输出倒序后的句子,并且保证单词间只有1个空格

输入:hello i     like  you
输出:you like i hello

思路提示:之前我们练习过将一段字符串逆序输出,对于字符串逆序输出我们采用的是定义两个整型变量left,right分别代表最左端和最右端,left向右移动,right向左移动,同时分别使str[left]和str[right]进行交换,最后得到逆序的字符串。那么这种逆序方法是否能够用到解决这道题当中呢???

答案1(比较繁琐,可以直接看后面的改进版)

#include<stdio.h>
#include<string.h>
int main()
{
	char str[500100];
	fgets(str, 500100, stdin);
	int i = 0;
	int j = 0;
	int num = 0;
	int sz = strlen(str) - 1;
	int left = 0;
	int right = sz - 1;
	int danci = 0;
	while (left <= right)
	{
		char tmp = str[left];
		str[left] = str[right];
		str[right] = tmp;
		left++;
		right--;
	}
	for (i = 0; i <= sz; i++)
	{
		if (str[i] != ' ')
		{
			num++; danci++;
		}
		if (str[i] == ' ' || i == sz)
		{
			for (j = i - 1; j > i - num - 1; j--)
			{
				printf("%c", str[j]);
			}
			if (str[i + 1] != ' ' && i != sz && danci > 0)
				printf(" ");
			else if (i == sz)
				printf("\n");
			num = 0;
		}
	}
	return 0;
}

主要的思路就是将字符串逆序,然后再从头到尾遍历,遇到一个非空格的字符就记作此单词的长度并num++,当遇到空格时利用num循环输出此单词,而后num清零。其中需要注意:每个测试用例的输出占一行,故最后需要输出一个换行\n

答案2(简化版):其实...当我用字符串逆序方法做完之后才发现,其实好像也并不一定需要逆序字符串,只需要将从前往后遍历改成从后向前遍历就好了,只不过理解起来可能稍微麻烦,但确实是一种非常简单的,代码量很少的方法。

#include<stdio.h>
#include<string.h>
int main()
{
	char str[500100];
	fgets(str, 500100, stdin);
	int i = 0, j = 0, num = 0;//用于记录每个单词的大小
	int sz = strlen(str) - 1;
	int danci = 0;//用于记录当前出现单词个数
	for (i = sz - 1; i >= 0; i--)
	{
		if (str[i] != ' ')
		{
			num++; danci++;
		}
		if (str[i] == ' ' || i == 0)//两种需要打印当前单词的情况
		{
			j = i + 1;//因为发现空格时,i处于此单词的下一位,所以输出需要前移一位
			if (i == 0)//因为i==0时,i处于此单词最后一位,故不需要前移,直接打印就好
			{
				j--;
				num--;
			}
			for (; j < i + num + 1; j++)
			{
				if (str[j] != ' ')
					printf("%c", str[j]);
			}											 //str[i - 1]如果不是空格,则代表进入下一个单词.
			if (str[i - 1] != ' ' && i != 0 && danci > 0)//因为从后往前排查,为保证最后不输出多余空格,则i=0时(i!=0)不输出分割单词的空格
				printf(" ");							 //空格用于分割单词,若此时单词数为0,则不需要分割,则danci必须大于0
			else if (i == 0)
				printf("\n");//题中提到每个测试用例的输出占一行,故最后输出换行
			num = 0;//输出完一个单词,单词长度清零
		}
	}
	return 0;
}

同样的,我们还是需要定义一个num用于记录每个单词的长度,当此时str[i]不等于空格或者i此时等于0时打印该单词,打印完成后num清空,如此循环往复,直到遍历完字符串。

需要注意的几个点:

①:str[i] == ' ' 和 i == 0两种打印当前单词的情况,打印的方式略微有所差异。当发生前者时,因为发现空格时,i处于此单词的下一位,所以输出需要前移一位。而发生后者时,因为i==0时,i处于此单词最后一位,故不需要前移,直接打印就好。

②:为了避免第一个单词前有众多空格,导致遍历时多出一个空格。我们需要记录单词的数量,如果单词数量为0时则不打印分割单词的空格。

③:题中提到每个测试用例的输出占一行,故最后输出换行。

四、猴子选大王

一群猴子要选新猴王。新猴王的选择方法是:

让N只候选猴子围成一圈,从某位置起顺序编号为1~N号。从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻的下一只猴子开始同样的报数。如此不断循环,最后剩下的一只猴子就选为猴王。请问是原来第几号猴子当选猴王?

输入格式:

在一行中给一个正整数N(≤1000)。

输出格式:

在一行中输出当选猴王的编号。

输入:11
输出:7

思路提示:此题不能硬解,需要先理清楚题目,明白选猴王的规则到底是什么,要清楚为什么输入的11,输出的是7,只要找到了方法便能轻松的解决此题~在这里给大家画一个图~便于大家理解这个选取猴王的规则。(实在是手残,但大概意思应该表达的差不太多,大家看了之后大概能明白吧...)

由此图我们能够知道,从第一个猴子开始往后一次进行1,2,3。1,2,3。1,2,3...的循环报数,而数到3的猴子就会淘汰并且此后报数也不再算此猴子。但虽然我们能够通过画图的方法了解此题大意,想要真正的创建出一个闭合的数组使它进行循环并且淘汰,我能想到的办法就是在while循环里再嵌套一个for循环,while循环给定条件为淘汰到足够的猴子跳出while(比如11个猴子需要淘汰10个猴子,那么共有N个猴子,就要淘汰N-1个猴子)。

我们可以将数组中下标对应元素改成和下标一致的数字(比如arr[1]=1,arr[2]=2)这样就显得更加简单易懂,数组中对应的元素就是对应号码的猴子,我们从第一个猴子开始遍历,如果猴子数到3那么此猴子淘汰,同时数组下标的值也清零,并且记录猴子淘汰数的计数器也要+1。而再次遍历到这个被淘汰的猴子时,就不再让它报数(如果arr[i]=0,那么直接使用continue跳出该循环,开始数下一只猴子)。

最后以此往复,就能够做到找出最后一个猴子,也就是猴王啦~最后输出数组中剩下的唯一元素的值,也就是猴子的号码~

这个图片更加的简单易懂:

下标012345678910
编号1234567891011
第一轮1(1)2(2)3(3)1(4)2(5)3(6)1(7)2(8)3(9)1(10)2(11)
第二轮3(12)1(13)2(14)3(15)1(16)2(17)3(18)1(19)
第三轮2(20)3(21)1(22)2(23)3(24)
第四轮1(25)2(26)3(27)
第五轮1(28)2(29)
第六轮3(30)

这样就成功的找出了最后一只猴王啦~

答案

#include<stdio.h>
int main()
{
	int a;
	scanf("%d", &a);
	int arr[1000] = { 0 };
	int i = 0;
	int num = 0;//用于记录报数的1,2,3号数。
	int sum = 0;//用于记录被淘汰的猴子数。
	for (i = 1; i <= a; i++)
	{
		arr[i] = i;//将所有的猴子给上对应的号码
	}
	i = 1;
	while (sum < a - 1)
	{
		for (i = 1; i <= a; i++)
		{
			if (arr[i] == 0)//值为0代表被淘汰的猴子,直接跳过,数下一个猴子
				continue;
			num++;
			if (num % 3 == 0)
			{
				arr[i] = 0;
				sum++;//代表此猴子被淘汰了
			}
		}
	}
	for (i = 1; i <= a; i++)
		if (arr[i] != 0)
			printf("%d", arr[i]);
	return 0;
}

需要注意的是如果让下标为1的元素对应猴子1,下标为2的元素对应猴子2,那么之后再使用for循环的时候i都要从1开始,用0的话就会出错。

五、删除字符串中的子串

输入2个字符串S1和S2,要求删除字符串S1中出现的所有子串S2,即结果字符串中不能包含S2。

输入格式:

输入在2行中分别给出不超过80个字符长度的、以回车结束的2个非空字符串,对应S1和S2。

输出格式:

在一行中输出删除字符串S1中出现的所有子串S2后的结果字符串。

输入:
Tomcat is a male ccatat
cat
输出:
Tom is a male 

思路提示

在此题中,输入中会携带空格,而使用scanf("%s")遇到空格便会终止,或许我们应该尝试使用其他输入方法试试呢?

由输入输出样例中的ccatat全部被清空的情况,我们能够知道这不是一次性的排查能够做到的,如果用一次排查仅仅能够做到将中间的cat删除,此时或许我们可以在一次排查外套一个大循环,使其拥有每删除一次子串就判断字符串中是否还有子串,若还有则继续排查,若没有则结束排查~

 直接将字符删除或许会导致打印出现错误,也可能会影响后续的排查。或许我们可以为要删除的字符赋某值,使打印结果时不输出此类的字符。

答案1

#include<stdio.h>
#include<string.h>
int main()
{
    char str1[200];
    char str2[200];
    gets(str1);
    gets(str2);
    int i = 0;
    int j = 0;
    int k = 0;
    int n = 0;
    int sz1 = strlen(str1);
    int sz2 = strlen(str2);
    int num = 0;
    int tmp = 0;
    char* p;
    while ((p = strstr(str1, str2)) != NULL)//检查字符串str1中是否含有str2子串,若没有,则退出循环
    {                         
        for (i = 0; i < sz1; i++)
        {
            while (str1[i] == str2[j])//对每一个字符进行排查,相同字符才能进入
            {
                num++;//排查一个字符则num++
                j++;//i++的同时j++,使其比对对应的字符
                if (j == sz2)//此次字符串排查已完成
                {
                    j = 0;//j清零,以备下次排查
                    break;
                }
            }
            if (num == sz2)
            {
                for (k = i - sz2 + 1; k <= i; k++)//将字符串置'0'
                {
                    str1[k] = '0';
                }
                for(k = i;k >= i - sz2 + 1;k--)
                {
                    for (n = k; n < sz1; n++)//将置为'0'的字符串移到末尾,其余字符向前移动
                    {
                        tmp = str1[n];
                        str1[n] = str1[n + 1];
                        str1[n + 1] = tmp;
                    }
                }
                num = 0;//num置0,便于下次排查
            }
        }
    }
    for (i = 0; i < sz1; i++)
    {
        if (str1[i] != '0')//置'0'的字符排除不输出,其余字符正常输出
            printf("%c", str1[i]);
    }
    return 0;
}

此方法就是使用了比较常规的思想方法,先是用到了刚刚思路提示中的①,将scanf("%c")替换成了gets函数,这样就能够防止遇到空格终止输入。

由cplusplus.com - The C++ Resources Network网站的内容我们可以看到,在使用gets进行输入时,除非找到新行字符或文件结束,其他情况不会终止。

注:上一篇博客中提到的fgets函数要比gets函数更加安全,因为gets函数不包括结果字符串中的结尾换行符并且不允许为str指定最大大小(可能导致缓冲区溢出)。

然后我们用到了思路提示②,我们使用了一个while循环,给定条件是(p = strstr(str1, str2)) != NULL,strstr函数的作用是能够在一个字符串中查找是否含有另一个子串,如果有则返回字符串str2在字符串str1中第一次出现的位置,字符串的比较匹配不包含 \0 字符,以 \0 作为结束标志。

(不太清楚的可以去我的这篇博客中看一看,里面讲解了大部分比较常用的字符串函数并且详解其模拟实现的函数:C语言常用的字符串函数(含模拟实现)-CSDN博客)

之后我们就创建好了大体的框架,接下来我们需要实现子串的排查并删除,我们先使用一个for循环从头到尾遍历一遍字符串str1在遍历的途中,我们需要判断字符串中出现的与子串相同的字符,并统计其个数,直到从字符串str1中找到完整的一个子串str2 (因为只要能够进入while循环就说明含有字串,就一定能够找到),将str1中的子串字符置'0'

你以为这就结束啦?nonono,如果仅仅这样就草草结束,你会发现按照给定样例打印出来的结果中ccatat并没有被完全删除,而是仅仅删除了一个cat这是因为,如果只将子串置零就不去管它了,那么此时字符串其实变成了这个样子:

原来:Tom is a male ccatat
现在:Tom is a male c'0''0''0'at

这样会导致排查字符串时不连贯,导致strstr函数无法查出剩余的cat,并且在排查和删除中也难以做到在间隔'0'的前提下找到大小相同字符相同的子串。但如果我们将所有'0'都移到最后,将其余字符挪到前面,那么就会变成这样:

原来:Tom is a male ccatat
现在:Tom is a male cat'0''0''0'

这样就完美的解决了识别和删除错误,以及strstr函数无法查出cat的情况啦~

还有一个非常非常非常简单的方法,我也没想到竟然能这么简单...(这是我在网上查阅资料,看到别人使用的方法,真的是女少...)

此方法大概的思路是先利用strstr函数找到子串在字符串中的位置,然后使用strcpy函数将从此位置开始,跳过子串后的剩余字符拷贝到一个临时数组中,然后将原来指向子串的位置变成'\0',使字符串正好到遇见子串前结束,这样下一步使用strcat函数将子串前和子串后的两段字符串链接到一起就ok了~

答案2

#include<stdio.h>
#include<string.h>
int main()
{
	char str1[100],str2[100],t[100];
	gets(str1);
	gets(str2);
	char *p;
	while((p=strstr(str1,str2))!=NULL)
	{
		strcpy(t,p+strlen(str2));
		*p='\0';
		strcat(str1,t);
	}
	puts(str1);
}

实现起来具体步骤是这样的,大概能帮助大家比较清晰的理解。

 第一次排查:
 s1 = Tomcat is a male ccatat     
 p -> cat is a male ccatat
 t -> is a male ccatat(is前有空格)
 *p = '\0'
 s1 = Tom is a male ccatat
 第二次排查:
 s1 = Tom is a male ccatat
 p -> catat
 t -> at
 *p = '\0'
 s1 = Tom is a male cat
 第三次排查:
 s1 = Tom is a male cat
 p -> cat
 t -> NULL
 *p = '\0'
 s1 = Tom is a male

六、字符串的冒泡排序

输入格式:

输入在第1行中给出N和K(1≤K<N≤100),此后N行,每行包含一个长度不超过10的、仅由小写英文字母组成的非空字符串。

输出格式:

输出冒泡排序法扫描完第K遍后的中间结果序列,每行包含一个字符串。

输入:
6 2
best
cat
east
a
free
day
输出:
best
a
cat
day
east
free

思路提示:其实和之前学习过的将整数数组冒泡排序是一样的,只不过是在一些地方,将对整型数组的写法换成了对字符串的写法(比如字符串间的交换)。这题还是比较简单的啦~就当轻松的结个尾啦。

答案

#include<stdio.h>
#include<string.h>
int main()
{
    int a;
    int b;
    int i = 0;
    int j = 0;
    scanf("%d %d", &a, &b);
    char str[a][81];
    char tmp[81];
    for (i = 0; i < a; i++)
    {
        scanf("%s", str[i]);
    }
    while (b)
    {
        for (i = 0; i < a - 1; i++)
        {
            if (strcmp(str[i], str[i + 1]) > 0)
            {
                strcpy(tmp, str[i]);
                strcpy(str[i], str[i + 1]);
                strcpy(str[i + 1], tmp);
            }
        }
        b--;
    }
    for (i = 0; i < a; i++)
    {
        printf("%s\n", str[i]);
    }
    return 0;
}

题解:和正常的将整数数组进行冒泡排序是一个思路,我们定义两个整形变量a和b,分别代表字符串数组的长度,和进行冒泡排序的次数。需要注意的是这里我们不必再像上次一样使用fgets或gets函数来进行字符串的输入,因为使用scanf("%s")也正好每次换行就变成了输入下一个字符串。当输入字符串结束后,我们使用while(b),在循环内b--,正好b是几就实现了几次冒泡排序。其余相较于整数冒泡排序都没有过多的变化,最值得注意的是此处对于字符串的比较大小使用了strcmp函数并且字符串的交换使用了三个strcpy函数那么对于C语言的刷题分享今天就到这里啦~如果有什么讲的不清楚的或者有错误,有麻烦的地方还请各位多多指出哦~我也会吸取教训,多多学习的!那么我们下期再见啦~

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

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

相关文章

OpenCSG全网首发!Phi-3.5 Mini Instruct全参微调中文版

前沿科技速递&#x1f680; &#x1f389; 震撼发布&#xff01;OpenCSG正式推出全参数微调的Phi-3.5-mini-instruct中文版模型&#xff01; &#x1f50d; 本次发布的Phi-3.5-mini-instruct中文版模型基于最新的Phi-3.5架构&#xff0c;经过全参数微调&#xff0c;专为中文场景…

软件测试——JMeter安装配置

文章目录 JMeter介绍JMeter下载及配置配置错误 提示此时不应有...修改语言为中文 JMeter介绍 Apache JMeter 是 Apache 组织基于 Java 开发的压⼒测试⼯具&#xff0c;⽤于对软件做性能测试 JMeter下载及配置 环境要求&#xff1a;JDK版本在1.8及以上 下载压缩包&#xff0c;…

设计模式—代理模式

文章目录 以前自己做的笔记动态代理(重点)1.基于jdk的动态代理2.基于cglib的动态代理 新资料第 15 章 代理模式1、代理模式的基本介绍2、静态代码模式3、动态代理模式4、Cglib 代理模式5、代理模式(Proxy)的变体 代理模式是给某一个对象提供一个代理&#xff0c;并通过代理对象…

第12章 网络 (6)

12.8 网络层 12.8.4 分组转发 转发IP分组&#xff0c;根据目标地址分为&#xff1a; 1. 直接和本地相连。 2. 不直接相连&#xff0c;需要网关转发。 int ip_route_input_noref(skb, daddr, saddr, tos, net_dev)&#xff1a; //查找路由表。 如果 skb->_skb_r…

安捷伦色谱仪器LabVIEW软件替换与禁运配件开发

可行性分析及实现路径 可行性&#xff1a; 软件替换&#xff1a; 驱动程序支持&#xff1a; 要实现LabVIEW对安捷伦色谱仪器的控制&#xff0c;需要检查安捷伦是否提供LabVIEW驱动程序。如果没有现成的驱动&#xff0c;则可能需要开发自定义的驱动程序&#xff0c;通过LabVIEW…

微软推出全新多语言高质量Phi-3.5语言模型

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

css flex布局 justify-content: space-between 最后两张居左

比如如果是8张&#xff0c;最后两张两边对齐&#xff0c;第八张最后一张 放个占位符就OK了 <div class"previewPadding flex" > <div class"picList picList3" v-for"(item,index) in picDataList" :key"index"> <…

6个免费字体网站,无需担心版权问题~

在设计项目中&#xff0c;选择合适的字体至关重要。然而&#xff0c;许多高质量的字体往往价格不菲。幸运的是&#xff0c;有一些网站提供了免费的商用字体&#xff0c;既能满足设计需求&#xff0c;又不需要额外的预算。在这篇文章中&#xff0c;分享6个免费商用字体网站&…

济南网站制作方案定制

在当今数字化时代&#xff0c;拥有一个专业的网站已经成为企业发展不可或缺的一部分。济南作为山东省的省会&#xff0c;经济发展迅速&#xff0c;各行各业对网站制作的需求也日益增加。因此&#xff0c;定制化的网站制作方案在济南显得尤为重要&#xff0c;能够帮助企业在激烈…

深入探究为什么 RAG 并不总是按预期工作:概述其背后的业务价值、数据和技术。

添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 欢迎来到雲闪世界。我们将首先探讨决定基于 RAG 的项目成败的业务要素。然后&#xff0c;我们将深入探讨常见的技术障碍&#xff08;从数据处理到性能优化&#xff09;&#xff0c;并讨论克服这些障碍的策略…

数据结构(邓俊辉)学习笔记】优先级队列 10——左式堆:插入 + 删除

文章目录 1. 插入即是合并2. 删除亦是合并 1. 插入即是合并 以上&#xff0c;我们已经实现了&#xff0c;对于左式堆来说最为在意的合并算法。非常有意思的是&#xff0c;尽管合并操作并非优先级队列所要求的基本操作接口。但基于合并操作&#xff0c;我们却同样可以实现左式堆…

超全大模型训练流程,教你如何训练自己的大模型

“大模型的核心主要有两部分&#xff0c;一是训练数据&#xff0c;二是机器学习模型。” 现在大模型发展得如火如荼&#xff0c;但是没有学过人工智能技术的开发者&#xff0c;只会调用其接口&#xff0c;但不清楚怎么训练一个大模型。 今天就简单介绍一下自己的理解&#xf…

Transformer系列-10丨一文理解透Transformer

一、引言 "Attention Is All You Need"是一篇于2017年发表的开创性论文&#xff0c;首次介绍了Transformer模型。 这篇论文彻底改变了自然语言处理&#xff08;NLP&#xff09;领域的研究方向&#xff0c;为后续的众多NLP模型和应用奠定了基础。我们熟知的ChatGPT也…

【022】字符串的处理(输出,分割,删除,新增,替换,查找,长度)_#VBA

字符串的处理——输出,分割,删除,新增,替换,查找,长度 字符串的处理1. 输出2. 长度3. 查找4. 删除5. 新增6. 分割7. 替换字符串的处理 为了更好快捷查找对应的字符串处理方法,将对应的方法汇总,可以直接使用,没有过多的介绍,直接代码块及对应效果。包括字符串的输出…

全国上市公司网络安全风险指数(2001-2023年)

数据来源&#xff1a;本数据参考耿勇老师等&#xff08;2024&#xff09;做法采集了2001-2023年的上市公司年报&#xff0c;所有年报均来自于深交所和上交所官方网站&#xff0c;通过对上市公司的年报进行精读&#xff0c;提取出包括网络安全、网络攻击等在内的39个关键词构成企…

自定义@ResponseBody以及SpringMVC总结

文章目录 1.需求分析2.目录3.自定义ResponseBody注解4.MonsterController.java5.Monster.java 实现序列化接口6.引入jackson7.Adapter.java 如果有ResponseBody注解就返回json8.测试9.SpringMVC执行流程 1.需求分析 2.目录 3.自定义ResponseBody注解 package com.sunxiansheng…

大数据技术之 Flume概述、安装(1)

目录 Flume 概述 Flume 定义 为什么选用 Flume Flume 基础架构 Agent Source Sink Channel Event Flume 安装 Flume 安装部署 安装地址 安装部署 Flume 概述 Flume 定义 Flume 是 Cloudera 提供的一个高可用的、高可靠的、分布式的海量日志采集、聚合和传输的系统。Flume…

多系统萎缩不慌张,这些维生素是你的“守护神”✨

亲爱的朋友们&#xff0c;今天我们来聊聊一个可能不太为人熟知但至关重要的健康话题——多系统萎缩&#xff08;MSA&#xff09;。面对这样的挑战&#xff0c;除了医疗治疗&#xff0c;日常的营养补充也是不可或缺的一环。特别是维生素&#xff0c;它们在我们的身体中扮演着举足…

有无符号整形加减,截断,提升等问题解析

一&#xff1a;整形截断问题 1. 分析&#xff1a;-128 的原码是 10000000 00000000 00000000 10000000 补码是 11111111 11111111 11111111 10000000&#xff0c;因为是char 型&#xff0c;截断之后&#xff1a;10000000 %u 是打印无符号整数&#xff0c;整形提升补截断之后…

多态(详细介绍以及内存图展示)

什么是多态&#xff1f; 同类型的对象&#xff0c;表现出的不同形态 多态的表现形式 父类类型 对象名称 子类对象 多态的前提 1.有继承关系 2.有父类引用指向子类 Fu f new Zi() 3.有方法重写 多态的好处 使用父类型作为参数&#xff0c;可以接收所有子类对象 体现…