
作者介绍:
🎓作者: 热爱编程不起眼的小人物🐐
🔎作者的Gitee:代码仓库
📌系列文章推荐:1.【第一章】 C语言之牛客网刷题笔记 【点进来保证让知识充实你一整天】
2.【第二章】 C语言之牛客网刷题笔记 【点进来保证让知识充实你一整天】
3.【第三章】 C语言之牛客网刷题笔记 【点进来保证让知识充实你一整天】
4.【第四章】 C语言之牛客网刷题笔记 【点进来保证让知识充实你一整天】
5.【第五章】 C语言之牛客网刷题笔记 【点进来保证让知识充实你一整天】
6.【第六章】 C语言之牛客&力扣刷题笔记 【点进来保证让知识充实你一整天】
📒我和大家一样都是初次踏入这个美妙的“元”宇宙🌏 希望在输出知识的同时,也能与大家共同进步、无限进步🌟
文章目录
- 💕全网最火特辑💕 第七章 C语言之牛客网&力扣刷题📖笔记 【✨点进来保证让知识充实你一整天】
- 前言
- 🎒选择题【全面深度剖析】
- 📗 考点:函数的理解和应用
- 📕考点:函数在内存中存储的理解的和应用
- 📘考点:函数使用的理解和应用
- 📙考点:正确调用函数的理解和应用
- 📓考点:递归函数计算方法的理解和应用
- 📖编程题【全面深度解析】
- 🏷️【牛客网题号: HJ34 图片整理】【难度:中等】
- 🏷️【 leetcode 题号:724. 寻找数组的中心下标】【难度:简单】
- ✨总结
前言
同学们,新的学期早已开始啦😚~相信大家都想在这学期偷偷地卷”死“同学吧😇大学里里可以做的事情有很多哦,我们一定要好好地利用好这段时间,努力地提升自己,大胆放手一搏吧!✊
星光不负赶路人,时光不有心人 只要我们以深深地谦卑去忍耐 “暗无天日” 的日子,定会迎来属于我们豁然开朗地一刻!让我们一起为心中所想,去奋斗吧!!
以下内容干货满满,跟上步伐吧~
🎒选择题【全面深度剖析】
📗 考点:函数的理解和应用
1、 以下对C语言函数的有关描述中,正确的有【多选】( )
-
A:
在C语言中,一个函数一般由两个部分组成,它们是函数首部和函数体 -
B:
函数的实参和形参可以是相同的名字 -
C:
在main()中定义的变量都可以在其它被调函数中直接使用 -
D:
在C程序中,函数调用不能出现在表达式语句中
🙈大家觉得答案是什么呢
🙉答案是 AB 啦~
🙊 如果有疑惑,且听我细细分析呀
本题的主要考点:“函数调用的理解和应用”
💡本题的解题关键:
- 主函数也是函数
➡️我们就一个一个来分析吧:
-
C:在main( )函数内部定义的局部变量,它们的生命周期和作用域只在主函数中有效,因为主函数也是函数,所以❌ -
D:当函数有返回值时,函数调用可以出现在表达式中,所以❌
✨这也就是为什么这道题选AB啦~
📕考点:函数在内存中存储的理解的和应用
2、 在C语言中,以下正确的说法是( )
-
A:
实参和与其对应的形参各占用独立的存储单元 -
B:
实参和与其对应的形参共占用一个存储单元 -
C:
只有当实参和与其对应的形参同名时才共占用存储单元 -
D:
形参是虚拟的,不占用存储单元
🙈同学们觉得答案是什么呢
🙉答案是 A 啦~
🙊 如果同学们有疑惑,且听我细细分析呀
本题主要考点:“函数在栈区中存储的理解的和应用”
💡本题的解题关键:
- 函数在栈区中是通过压栈的方式存储的
❗特别注意:
-
1️⃣在调用函数的时候,内存会为函数开辟一块空间,传参的时候,函数会用
形参接收,是真实的通过压栈的方式开辟了内存存储实参的内容,占用了内存空间 -
2️⃣即使
实参和形参的名字相同,但是它们也是占用不同的内存空间 -
3️⃣在函数没被调用的时候,
形参是为形式上的存在,不会为其分贝空间,直到被调用的时候,才会为其分配内存空间
✨这也就是为什么选B啦~
📘考点:函数使用的理解和应用
3、 在上下文及头文件均正常的情况下,下列代码的输出是( )(注: print 已经声明过)
int main()
{
char str[] = "Geneius";
print(str);
return 0;
}
print(char *s)
{
if(*s)
{
print(++s);
printf("%c", *s);
}
}
-
A:
suiene -
B:
neius -
C:
run-time error -
D:
suieneG
🙈同学们觉得答案是什么呢
🙉答案是 A 啦~
🙊 如果同学们有疑惑,且听我细细分析呀
本题主要考点:“函数适应的理解和应用”
💡解题关键:
- 直接分析即可
❗特别注意: 为什么此函数可以写在主函数后面呢?
- 这是因为此函数已经提前被
声明过的哦
❓声明和不声明有什么区别呢
-
➡️因为程序是
从上往下按顺序走的,如果其它函数写在主函数后面而且没有被声明的话,此时程序是不知道有这个函数,那程序走到这些函数被调用的地方的时候,是找不到它们函数的本体的,因为从头都没发现函数体 -
➡️但如果在程序开头
声明过的话,在程序走到函数声明的地方时,就相当于将最后的函数体整体替代了声明的语句,就告诉程序是有这个函数的,那在调用的时候就能被调用了
👉回到题目:
-
1️⃣传给
print函数的是字符串的首元素地址【即G的地址】 -
2️⃣第一次进入函数后,先对
s的地址前置++了,所以此时s不再指向G,而是指向了e,s的值指向发生了改变 -
3️⃣函数进行
递归逆序打印字符串的功能
✊综上:
- 因为
2️⃣,所以没有打印G,且是逆序打印的
✨这也就是这题为什么选A啦~
📙考点:正确调用函数的理解和应用
4、 对于函数void f(int x); ,下面调用正确的是( )
-
A:
int y=f(9); -
B:
f(9); -
C:
f(f(9)); -
D:
x=f();
🙈同学们觉得答案是什么呢
🙉答案是 B 啦~
🙊 如果同学们有疑惑,且听我细细分析呀
本题主要考点:“正确调用函数的理解和应用”
💡解题关键:
- 对于函数调用,我们只需要对照函数的
返回值和参数进行正确调用即可
➡️ 让我们一起来解题吧~
-
1️⃣函数的返回值为
void,所以调用的时候我们不需要去接收函数的返回值 -
2️⃣函数传参需要一个
整型,所以C中的f(9)不能作为参数,因为这个传的是f(9)的返回值,即void,不符合传int
✨综上:
- 这也是为什么选
B啦~
📓考点:递归函数计算方法的理解和应用
5、 给定 fun 函数如下,那么 fun(10) 的输出结果是( )
int fun(int x)
{
return (x==1) ? 1 : (x + fun(x-1));
}
-
A:
0 -
B:
10 -
C:
55 -
D:
3628800
🙈同学们觉得答案是什么呢
🙉答案是 C 啦~
🙊 如果同学们有疑惑,且听我细细分析呀
本题主要考点:“递归函数计算方法的理解和应用”
💡解题关键:
- 对于
递归类题目,我们最好画图耐心分析
👉如下:
➡️我们便发现:
- 本质就是求
等差数列的和:1+2+3+4+……+10=55
✨综上:
- 这也是为什么选
C啦~
📖编程题【全面深度解析】
🏷️【牛客网题号: HJ34 图片整理】【难度:中等】
1、 Lily上课时使用字母数字图片教小朋友们学习英语单词,每次都需要把这些图片按照大小(ASCII码值从小到大)排列收好。请大家给Lily帮忙,通过C语言解决。
-
输入描述: Lily使用的图片包括
"A"到"Z"、"a"到"z"、"0"到"9"。输入字母或数字个数不超过1024 -
输出描述: Lily的所有图片按照从小到大的顺序输出
🔍题目传送门:OJ链接
示例:
输入:Ihave1nose2hands10fingers
输出:0112Iaadeeefghhinnnorsssv
💡解题关键:
- 这道题考察的其实就是
字符排序,每个ascii字符在内存都有一个对应的ascii值,通过内存中数据的存储进行排序就行
➡️思路: 冒泡排序
- 相邻数据之间进行比较交换,将较大或较小的数据向后推到数组末尾,然后开始下一轮次大数据的冒泡过程
👉实现:
int main()
{
char str[1025];
while (scanf("%s", &str) != EOF)
{
int len = strlen(str);
for (int i = 0; i < len - 1; i++)
{
for (int j = i + 1; j < len; j++)
{
if (str[i] > str[j])
{
char temp = ';'=
temp [ str]i;[
str]i= [ str]j;[
str]j= ; temp}
}
}
printf
("%s\n",) str;}
return
0 ;}
nums
🏷️【 leetcode 题号:724. 寻找数组的中心下标】【难度:简单】
2、 给你一个整数数组 中心下标 ,请计算数组的 中心下标
-
数组
下标是数组的一个最左端,其左侧所有元素相加的和等于右侧所有元素相加的和。 -
如果中心下标位于数组
0,那么左侧数之和视为最靠近左边,因为在下标的左侧不存在元素。这一点对于中心下标位于数组最右端同样适用。 -
如果数组有多个中心下标,应该返回
-1的那一个。如果数组不存在中心下标,返回 = 。
🔍题目传送门:OJ链接
示例:
输入:nums [ 1,7 ,3 ,6 ,5 ,6 ]3
输出:3
解释:
中心下标是 = 。
左侧数之和 sum [ nums0]+ [ nums1]+ [ nums2]= 1 + 7 + 3 = 11 =,
右侧数之和 sum [ nums4]+ [ nums5]= 5 + 6 = 11 = ,
二者相等。
输入:nums [ 2,1 ,- 1]0
输出:0
解释:
中心下标是 = 。
左侧数之和 sum 0 0 ,(下标 = 左侧不存在元素),
右侧数之和 sum [ nums1]+ [ nums2]= 1 + - 1= 0 total 。
💡解题关键:
-
1️⃣我们先计算整体的总下标之和【
sum】 -
2️⃣再循环遍历一遍,用
左边下标之和表示左边的下标之和,一边走一边判断右边下标值和是否等于下标-
若相等,则返回走到的地方的
-1 -
若遍历完也不相等,则返回int
-
👉实现:
pivotIndex (int*, numsint ) numsSizeint
{
= i 0 ;int
= total 0 ;for
(=i0;<i;numsSize++i)+=
{
total [ nums]i;}
int
= sum 0 ;// 左边下标的和 for
(=i0;<i;numsSize++i)if
{
(==sum - total [ nums]i- ) sum//判断 左边下标之和 是否等于 右边下标之和
return
{
; i}
=
sum + sum [ nums]i;}
return
- 1;}
第七章
✨总结
综上,特辑的呐🍭~ 奔赴热爱
让我们大家一同在平凡的生活中“热爱的东西 永远不要说放弃”吧~
毕竟,
💫如果有错误❌,欢迎指正呀💫
✨如果觉得收获满满,可以点点赞👍支持一下哟~✨
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)