沈阳师范大学期末考试复习pta循环数组函数指针经典编程题汇总+代码分析

news2025/2/27 14:28:44

前言:临近期末,接下来给大家分享一些经典的编程题,方便大家复习。不一定难,但都是入门的好题,尽可能的吃透彻。因为据说期末考试的题很多来自pta上面的原题。

对于一些语言我是用c++来写的,不妨碍理解,大家把cin,getline看作是c语言中的scanf,把cout, 看作是c语言中的printf ,把#include<bits/stdc++.h>看作是c的头文件。

循环:

第一题:求满足条件的斐波拉契数:

2dae3c6e949b45a08fb33b114f3ce0dc.png

分析:为什么上这道题,不是因为难而是因为,有一年考到过斐波拉契函数,所以记下来就好,没什么好说的

#include<stdio.h>
int fib(int n);
int main() {
	int i, n;
	scanf("%d", &n);//输入数
	for (i = 1;; i++) //让i来自增遍历所有斐波拉契数
	{
		if (fib(i) > n) 
		{
			printf("%d", fib(i));
			break;//一旦大于就跳出循环
		}
	}
	return 0;
}
int fib(int n) //斐波拉契函数
{
	if (n <= 2) {
		return 1;
	}
	else {
		return fib(n - 1) + fib(n - 2);
	}
}

第二题:求n以内最大k个素数以及他们的和

 

77401e6470fd42988499df9c7bd9c64b.png

思路:首先要输出不超过n的最大的k个素数,我们就先从n-1开始遍历,然后看输出的格式,肯定要定义一个数组arr来存放这些数字,但数目又是有限的,所以每得到一个素数,k就要减一,当k为0的时候跳出循环,这样思路打开了,然后最后输出的时候注意一下格式,最后一个数字不用输出+,就OK了。

 

410bb516b686402c8198020155a33174.png

 

第三题:英文字母替换加密

c0606f0450504aad8ac80c1ced18f91a.png

 

思路:

按步就班,这里我用c++实现,大家用c语言也是一个原理,大家可以定一个字符数组然后用scanf

读取,和

string str;
getline(cin, str);

本质是一样,然后呢,求字符串长度len可以用strlen库函数来实现,cout大家就换成printf输出,在判断是否是字母的语句可以换成用逻辑符号判断,即在首字母和末尾字母的区间里面,然后变成大写的可以换成str[i]-32来实现,变成大写也是同理。总体的思路就是先遍历,然后判断每一个字符是不是字母,如果是那么是大写还是小写,如果不是那么就不动自动输出。

#include<bits/stdc++.h>
using namespace std;
string newstr(string str);
int main()
{
	string str;
	getline(cin, str);
	str = newstr(str);
	cout << str;
	return 0;
}
string newstr(string str)
{
	int len = str.size();
	for (int i = 0; i < len; i++)
	{
		if (isalpha(str[i]))//是字母
		{
			if (islower(str[i]))//shi xiao xie 
			{
				str[i] = toupper(str[i]);
				if (str[i] == 'Z')
				{
					str[i] = 'A';
				}
				else
				str[i]++;
			}
			else
			{
				str[i] = tolower(str[i]);
				if (str[i] == 'z')
				{
					str[i] = 'a';
				}
				else
				str[i]++;
			}
		}
	}
	return str;
}

 

第四题:查验身份证

8965e881f0e14349a8e6bc05d9a64997.png

 

思路:这道题相对来说还是比较难,一般人写不出除非你是二班的人。

写法还是一个,那就是读懂题意见招拆招。首先身份证不合格有两种一种是前十七个字符有字母另外一种就是第十八位字符为错误。并且要理解加权的意思,最终我们要和验证码来比较,我们可以验证码弄一个数组,把验证码数组的下标当成我们加权求和然后%11的结果来比较是否相同。细节的地方就是在求和的时候,因为sfz是字符数组要减去'0'才是我们计算的数字。

#include<bits/stdc++.h>
using namespace std;
int main()
{
	char str[11] = { '1','0','X','9','8','7','6','5','4','3','2' };//验证吗
	char sfz[18];
	int jq[17] = { 7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2 };
	int n, sum = 0;
	cin >> n;
	int n1 = n;
	int flag = 0;
	while (n--)
	{
		//cin.getline(sfz, 18);//输入身份证
		cin >> sfz;
		sum = 0;
		for (int i = 0; i < strlen(sfz)-2; i++)//
		{
			if (!(isdigit(sfz[i])))//说明存在字母
			{
				cout << sfz << endl;
				break;
			}
			else//不存在字母,则计算加权和
			{
				sum += jq[i] * (sfz[i] - '0');
			}
		}
		if (sfz[17] != str[sum % 11])
		{
			cout << sfz << endl;;
		}
		else
			flag++;
	}
	if (n1 == flag)
	{
		cout << "All passed";
	}
	return 0;
}

 

数组:

第一题:

a1b52a6f80794575ad2f4b184717b004.jpeg

 

思路:里面的sort你可以换成冒泡排序也是一样的做法,cin你换成scanf,cout换成printf。整体的思路你应该看的明白,注意每一次算一个人的成绩时,要把sum归0,不然就会多算,然后就是要输出,单科平均成绩最大及序号,没必要多开数组,总成绩最大,单科平均就最大,人数都是一样的,然后定义个变量记录下来就ok了

 

f876aed611c341218f5a349d93e460a3.png

 

8bfa556eb10c446d8159df2c2c4521ed.png

第二题:字符串字母大小写转换668fd12c0e9a408d8bbae754b8f381c3.png

思路:明白大小写转化之间的关系,这里c实现和c++实现都给大家呈现,

 

#include<stdio.h>
#include<string.h>
int main() {

    char s[100];
    scanf("%s",s);
    for(int i = 0; s[i] != '#'; i++) {
        if (s[i] >= 'A' && s[i] <= 'Z') {
            s[i] += 32;
        }
        else if (s[i] >= 'a' && s[i] <= 'z') {
            s[i] -= 32;
        }
    }
    for (int i = 0; s[i] != '#'; i++) {
        printf("%c",s[i]);
    }
    return 0;
}

c++:

#include<bits/stdc++.h>
using namespace std;
int main()
{
	string s;
	for (int i = 0; s[i] != '#'; i++)
	{
		if (islower(s[i]))
			s[i] = toupper(s[i]);
		else if (isupper(s[i]))
			s[i] = tolower(s[i]);
	}
	for (int i = 0; s[i] != '#'; i++) {
		printf("%c", s[i]);
	}
	return 0;
}

第三题:统计一行文本的单词个数

31000277b4e24b76bb203da6d9607f10.png

这个题要考虑的情况也不少,可能开头就有空格,这里给大家介绍一种简洁的方式istringstream 在这段代码中的作用是将输入的字符串 line 转换为字符串流对象 iss,然后我们可以使用 iss 从中逐个读取单词并进行处理。并且不会将空格读入

#include<bits/stdc++.h>
using namespace std;
int main()
{
    string line;
    getline(cin, line);
    istringstream iss(line);
    int count = 0;
    string word;
    while (iss >> word)
    {
        count++;
    }
    cout << count << endl;

    return 0;
}

 

第四题:求整数序列中出现次数最多的数

6e8ce8841e664806840f07dbf2864c87.png

思路:这题没什么说的,按部就班。用一个计数器,出现一次加一次,两次遍历,如果比最大的次数大就更新。

#include<stdio.h>
int main()
{
    int n,i,j;
    scanf("%d",&n);
    int a[10000];
    int count=0;
    int max=0,maxcount=0;
    for(i=0;i<n;i++)
        scanf("%d",&a[i]);
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        {
            if(a[i]==a[j])
                count++;
        }
        if(count>maxcount)
        {
            maxcount=count;
            max=a[i];
        }
        count=0;
    }
    printf("%d %d",max,maxcount);

    return 0;
}

第五题:交换最小值和最大值

e86b8c5971d04c73962cec17dda717ed.png

思路:一步步实现,代码大家应该看得懂,看不懂的留言。这是最朴实无华的写法了

#include<stdio.h>
int main()
{
	int n=0;
	int a[10]={0};
	int max=0;
	int min=0;
	int t=0;
	scanf("%d",&n);
	//将所有数字存入数组a中 
	for (int i=0;i<n;i++)
	{
		scanf("%d",&a[i]);
	}
	//找出数组a中最小的元素:元素大小比较,找到小的哪个,将下标值赋给min。循环之后a[min]就是数组a中最小的 
	for(int i=1;i<n;i++)
	{
			if(a[i]<a[min])
			{
				min=i;
			}
	}
	//将数组a中最小的元素与a[0]交换位置 
	t=a[min];
	a[min]=a[0];
	a[0]=t;
	//重复上述操作,找到最大值 
	for(int i=1;i<n;i++)
	{
		if(a[i]>a[max])
		{
			max=i;
		}
	}
	//将最大值与元素数组最后一个交换位置 
	t=a[max];
	a[max]=a[n-1];
	a[n-1]=t;
	//遍历并打印数组a的元素 
	for(int j=0;j<n;j++)
	{
		printf("%d ",a[j]);
	}
	return 0;
 } 

第六题:求矩阵各行元素之和

a323e60dd85047beadc65a1910bb2a3b.png

 

#include <stdio.h>
 
int main(){
    int m, n;
    
    do{
        scanf("%d %d", &m, &n);
    }while( m<1 || n>6  );    // 确保m,n的范围
    
    int mat[m][n];  // 定义矩阵
    
    for( int i=0; i<m; i++ ){
        int sum = 0;
        for( int j=0; j<n; j++ ){
            scanf(" %d", &mat[i][j]);    // 输入数据
            sum += mat[i][j];    // 输入数据的同时累计一行的和
        }
        printf("%d\n", sum);
    }
    
    return 0;
}

函数:

第一题:杨辉三角形

a7132365e2fd420f938a62747d44228f.png

 

fff8dd9d33284ad0b5cd2827940378d7.png思路:要写这个还是要知道这个杨辉三角怎么构成,第一行第一个和每行最后一个都是1,然后中间的项存在a[i][j]=a[i-1][j]+a[i-1][j-1]的规律

void fun(int a[N][N], int n)
{
	for (int i = 0; i < n; i++)
	{
		a[i][0] = 1;
		a[i][i] = 1;
		for (int j = 1; j < i; j++)
		{
			a[i][j] = a[i - 1][j] + a[i - 1][j - 1];
		
		}
	}
}

第二题:歌词比赛打分

c4f714b79f8841d9b04135a34e545e65.png思路:还是要知道指针的一些知识,p+i表示指针所指向的对象,看不明白的可以看我指针的博客,复习一下再来整

思路:先找最高然后找最低,用总的减去,然后除总个数减2,
double getScore(int* score, int total)
{
	double max = -1, min = 101, sum = 0;
	for (int i = 0; i < total; i++)
	{
		sum += *(score + i);
		if (*(score + i) > max)
		{
			max = *(score + i);
		}
		if (*(score + i) < min)
		{
			min = *(score + i);
		}
	}
	return (sum - max - min) / (total - 2);
}

第三题:数据排序

33966c28129344d7b9d5692b7e300a25.png思路:

排序算是一个重点,这里给大家介绍两种简单的排序。

一个冒泡排序一个选择排序,有点迷的可以去学一下

冒泡排序:

void fun(int a[], int  n)
{
	for (int i = 0; i < n - 1; i++)
	{
		for (int j = 0; j < n - 1 - i; j++)
		{
			if (a[j] > a[j + 1])
            {
                int temp=a[j+1];
                a[j+1]=a[j];
                a[j]=temp;
            }
		}
	}
}

选择排序:

void  fun(int a[], int  n)
{
	int i, j, k;
	for (i = 0; i < n; i++)
	{
		for (j = 0; j < n; j++)
		{
			if (a[j] > a[i])
			{
				k = a[j];
				a[j] = a[i];
				a[i] = k;
			}


		}
	}
}

第四题:近似求PI

340ce99feefc48b4bddda359d00b9b83.png思路:题目看似抽象,其实仔细分析还是好整。观察出通项,然后记得每一项都是在前一项的基础上再乘,接着求和即可。

找通项规律,i/(2*i+1);每一项是在前一项的基础上乘
#include<bits/stdc++.h>
using namespace std;
int main()
{
	double i = 1;
	double eps, sum = 1;
	cin >> eps;
	double item = 1;
	while (item >= eps)
	{
		item = item*1.0 * (i / (2 * i + 1));
		i++;
		sum += item;
	}
	printf("PI = %.5lf", sum * 2);
	return 0;
}

第五题:哥德巴赫猜想

87005193aaee4adda129f038c1e45e4c.png思路:这个题之前讲过,再次搬出来说明它的重要性。这个题其实就是素数的那道题的变式,关键是分解成最小的素数,所以你从2开始遍历,找到最小的就用n-最小的,得到另外一个数,如果这个数也是素数则符合条件跳出

4cdfd6a6531740b7aff62ead6d033f91.png

第六题:Jack cheng的烦恼3

2fadbcd3ea2649f1ab057684c079f8e7.png

 

思路:道题也是素数的一个变式,你只需要把n的每一位数提取出来,求和,然后判断是否为素数即可

35f9213fe6064388987c21c898330350.png指针:

第一题:字符串的连接

06db103ef53f4a489307bb954b2638c2.png思路:

先让指针s自增,直到他指向\0,然后开始赋值,最后别忘了把\0填上去

//连接两个字符串,思路就是s接受的是str1的地址,t接受的是str2的地址,那么要把t赋值到s的末端,只需
//指向str1的指针s自增到/0的位置,然后把str2赋给str1,同时两种指针向后移动
//char* str_cat(char* s, char* t)
//{
//	char* p = s;
//	while (*s != '\0')
//	{
//		s++;
//	}
//	//出循环的时候s指向的是/0位置
//	//开始把str2赋给str1;
//	int i = 0;
//	while (*(t+i) != '\0')
//	{
//		*(s+i) = *(t+i);
//		i++;
//	}
//	*(s + i) = '\0';
//	return p;
//}

第二题:删除字符串中数字字符

ff9103d0056e471481433131ea9df83a.png

思路:

首先要求得字符串的长度,然后开始遍历,判断是否是数字字符,如果是,就记录当前的位置,将后续的字符往前移动,最后要把i--,原因就是当移动完之后如果不减的话回到循环体i++之后会指向下一个位置,这个时候如果有连续的数字字符,就跳过了这个情况。

void delnum(char* s) {
    if (s == NULL) {
        return;
    }

    char digit[10] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
    int i = 0;
    int len = 0;

    while (*(s + len) != '\0') {
        len++;  // 获取字符串长度
    }

    for (i = 0; i < len; i++) {
        if (*(s + i) >= '0' && *(s + i) <= '9') {  // 判断是否为数字字符
            int j = i;
            while (*(s + j) != '\0') {
                *(s + j) = *(s + j + 1);  // 将后续字符往前移动
                j++;
            }
            i--;// 需要回退一步,原因就是当是连续字符的时候你回到for循环的时候,你的i又会加1,那么它就不会处理当前的字符,万一当前的字符是数字呢?
        }
    }
}

第三题:输出学生成绩

863e116b85e2405686d6d4f15fc7c72f.png

思路:按步就班,注意数据类型,

#include<bits/stdc++.h>
using namespace std;
int main()
{
	double n, max = -1, min = 101;
	cin >> n;
	double sum = 0, avg = 0;
	int n1 = n;
	while (n--)
	{
		int score;
		cin >> score;
		sum += score;
		if (score > max)
			max = score;
		if (score < min)
			min = score;
	}
	avg = sum * 1.0 / n1;
	printf("average = %.2lf\nmax = %.2lf\nmin = %.2lf",avg,max,min);

	return 0;

}

第四题:删除字符串中指定字母

225de8cf6f474f89ac52357480d24a9a.png思路:这道题和前面的删除数字字符类似,唯一要注意的就是要将i--,防止指定的字母是连续的状态,

#include <iostream>
#include <cstring>
using namespace std;
int main() {
    char a[101] = { 0 };
    char* p = a;
    scanf("%s", a);
    int len = strlen(a);
    int i, j;
    for (i = 0; i < len; i++) {
        if (a[i] == 'a') {
            j = i;
            while (*(p + j) != '\0') {
                *(p + j) = *(p + j + 1);
                j++;
            }
            i--;  // 由于删除一个字符,需要将 i 回退一个位置
            len--;  // 更新字符串长度
        }
    }

    cout << a << std::endl;

    return 0;
}

第五题:用指针方法求10个数最大和最小值之差

3b5b9a758dd44548a0f3fa0289a21dc7.png思路:很基础的指针题,大家看代码即可

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int arr[10];
	int* p = arr;
	int min = arr[0], max = arr[0];
	for (int i = 0; i < 10; i++)
	{
		cin >> *(p + i);
		if (*(p + i) > max)
			max = *(p + i);
		if (*(p + i) < min)
			min = *(p + i);
	}
	cout << "difference value = " << max - min;

	return 0;
}

然后给大家扩展一下用指针实现冒泡排序

eacc94a13c954dfb813b7556853c31ad.png

 

博主对大家说的话:

最后的最后还是想给大家说,相信在初学的过程中定然会有些吃力与不理解,但可以适当地取舍,先跳过,把在能力范围内的题目先整懂,相信自己一定能整明白,只是时间问题,就像翁恺老师在视频里说我们大家都是一个脑子,你能搞懂的我也能搞懂。其实我开始在做一些题的时候也很吃力,但当你能力慢慢提高之后再回过头来看这个题,以及之前迷糊的题,你会有新的感悟。相信通过以上题目,大家对c语言基础有了新的理解,感谢大家的阅读,期待下次与你见面。

 

 

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

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

相关文章

【软件测试学习】—软件测试模型(二)

【软件测试学习】—软件测试模型&#xff08;二&#xff09; 我 | 在这里 &#x1f469;‍&#x1f9b0;&#x1f469;‍&#x1f9b0; 读书 | 长沙 ⭐计算机科学与技术 ⭐ 本科 【2024届】 &#x1f383;&#x1f383; 爱好 | 旅游、跑步、网易云、美食、摄影 &#x1f396;️…

C++ day44完全背包问题 零钱兑换Ⅱ 组合总和Ⅳ

完全背包&#xff1a;一个物品可以使用无数次&#xff0c;将01背包中倒序遍历背包变成正序遍历背包 遍历顺序&#xff1a;在完全背包中&#xff0c;对于一维dp数组来说&#xff0c;其实两个for循环嵌套顺序是无所谓的&#xff01; 先遍历物品&#xff0c;后遍历背包可以&#…

ESP32-Web-Server 实战编程-使用文件系统建立强大的 web 系统

ESP32-Web-Server 实战编程-使用文件系统建立强大的 web 系统 概述 在前述章节我们讲述了在网页端控制多个 GPIO 的案例。当程序开始变得复杂&#xff0c;让一些功能“自动起来”是一个好的选择。 在前面的示例中&#xff0c;我们需要在后端为每个前端代码的 URL 指定一个对…

SQL server界面操作链接服务器

1.打开链接服务器&#xff0c;右击连接服务器“新建链接服务器” 2.输入链接服务器名称和数据源 3.安全性中输入密码建立远程连接&#xff0c;点击确定&#xff1a; 4.打开新建的连接服务器&#xff0c;测试连接&#xff1a; 注意:链接服务器必须在局域网执行&#xff0c;不是同…

不同类型的开源许可证

不同类型的开源许可证 什么是开源许可证 最简单的解释是&#xff0c;开源许可证是计算机软件和其他产品的许可证&#xff0c;允许在定义的条款和条件下使用、修改或共享源代码、蓝图或设计。开源并不意味着该软件可以根据需要使用、复制、修改和分发。根据开源许可证的类型&a…

荣耀IPO站上新起点:市场望眼欲穿,发展未来可期

撰稿|行星 来源|贝多财经 荣耀手机HONOR&#xff08;简称“荣耀”&#xff09;IPO上市一事有了新的进展。 近日&#xff0c;荣耀终端有限公司发布董事会公告称&#xff0c;为实现公司下一阶段的战略发展&#xff0c;该公司将不断优化股权结构&#xff0c;吸引多元化资本进入…

面试题:海量PDF的OCR处理思路

关键点&#xff1a; 1000wPDF&#xff1a;数据量非常大。3天处理完&#xff1a;有时间限制。一篇PDF1~10s&#xff1a;可能需要以最高10s去做计算&#xff0c;这样时间才能保证留有富余。要求资源最大化利用&#xff1a;也就是尽可能节省服务器资源&#xff0c;能复用尽量复用&…

一切为了应用!九章云极DataCanvas大模型系列成果重磅发布!

11月21日&#xff0c;「筑基赋能 智向未来」九章云极DataCanvas大模型系列成果发布会&#xff08;以下简称“发布会”&#xff09;在北京重磅召开&#xff0c;本次成果发布距离今年6月30日DataCanvas Alaya九章元识大模型公布仅4个多月&#xff0c;是九章云极DataCanvas公司大模…

用flutter 写一个专属于儿子的听书的app

背景: 儿子最近喜欢上了用儿童手表听故事&#xff0c;但是手表边里的应用免费内容很少&#xff0c;会员一年要300多&#xff0c;这么一笔巨款&#xff0c;怎能承担的起&#xff0c;所以打算自己开发一个专属于儿子的听书app。 最终效果&#xff1a; 架构&#xff1a; 后端由两…

stm32 计数模式

计数模式 但是对于通用定时器而言&#xff0c;计数器的计数模式不止向上计数这一种。上文基本定时器中计数器的计数模式都是向上计数的模式。 向上计数模式&#xff1a;计数器从0开始&#xff0c;向上自增&#xff0c;计到和自动重装寄存器的目标值相等时&#xff0c;计数器清…

拒绝随波逐流!设计与实现可控的水下机器人

这个“长着三个触角”的水下机器人看上去是不是很萌&#xff1f;它使用的是一种新型的由三个球形磁耦合矢量推进器组成的推进系统。与传统的水下机器人使用多个固定推进器来实现多自由度&#xff08;DOF&#xff09;推进相比&#xff0c;矢量推进器具有多自由度、寄生推力小&am…

WARNING: Access control is not enabled for the database.

MongoDB shell version v3.4.24 WARNING: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted. 1)未启用访问控制 2)读写访问不受限制 D:\MongoDB\Server\3.4\bin>mongo MongoDB shell version v3.4.24 c…

BUUCTF刷题之路-pwn-ciscn_2019_n_81

这 题查保护的时候吓了一跳&#xff0c;保护全开。脑子飞速旋转是要我绕过canary,PIE然后再利用栈溢出劫持程序流吗&#xff1a; 然后扔进IDA中查看下大致流程&#xff1a; 大致看出var是个数组&#xff0c;当var[13]17的时候就会得到system。那还不简单直接写payload: from p…

2021年1月19日 Go生态洞察:Go命令行路径安全性的提升

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

freertos任务调度机制深度分析(以RISC-V架构为例)

1、前言 本文是以RISC-V架构为例进行讲解&#xff0c;在汇编代码层面和ARM架构不一样&#xff0c;但是整体框架是一样的侧重任务调度底层机制讲解&#xff0c;讲解代码只保留了基本功能&#xff0c;可配置的功能基本都已经删除本文是以可抢占式调度机制进行讲解RISC-V架构只支持…

【Web安全】拿到phpMyAdmin如何获取权限

文章目录 1、outfile写一句话2、general_log_file写一句话 通过弱口令拿到进到phpMyAdmin页面如何才能获取权限 1、outfile写一句话 尝试执行outfile语句写入一句话木马 select "<?php eval($_REQUEST[6868])?>" into outfile "C:\\phpStudy\\WWW\\p…

WSDM 2024 | LLMs辅助基于内容的推荐系统增强BPR训练数据

本文提出了一种简单而有效的基于LLMs的图数据增强策略&#xff0c;称为LLMRec&#xff0c;以增强基于内容的推荐系统。LLMRec包含三种数据增强策略和两种去噪策略。数据增强策略包括从文本自然语言的角度挖掘潜在的协同信号, 构建用户画像(LLM-based), 并强化item side informa…

JavaScript 特殊数据类型

JavaScript 特殊数据类型 目录 JavaScript 特殊数据类型 一、空值&#xff08;null型&#xff09; 二、未定义值&#xff08;undefined型&#xff09; 三、转义字符 JavaScript的特殊数据类型有3种&#xff1a; &#xff08;1&#xff09;空值&#xff08;null型&#xf…

【hacker送书第6期】深入理解Java核心技术

第6期图书推荐 内容简介作者简介精彩书评参与方式 内容简介 《深入理解Java核心技术&#xff1a;写给Java工程师的干货笔记&#xff08;基础篇&#xff09;》是《Java工程师成神之路》系列的第一本&#xff0c;主要聚焦于Java开发者必备的Java核心基础知识。全书共23章&#xf…

Go语言基础:包、函数、语句和注释解析

一个 Go 文件包含以下几个部分&#xff1a; 包声明导入包函数语句和表达式 看下面的代码&#xff0c;更好地理解它&#xff1a; 例子 package mainimport "fmt"func main() { fmt.Println("Hello World!") }例子解释 第 1 行&#xff1a; 在 Go 中&am…