这个作业属于哪个课程 | 2024-2025-1-计算机基础与程序设计) |
---|---|
这个作业要求在哪里 | https://www.cnblogs.com/rocedu/p/9577842.html#WEEK05 |
这个作业的目标 | |
①Pep/9虚拟机 | |
②机器语言与汇编语言 | |
③算法与伪代码 | |
④测试:黑盒,白盒 | |
作业正文 | 本博客链接 |
教材学习内容总结
《C语言程序设计》:
字符常量与转义字符:介绍了字符常量是用单引号括起来的一个字符,转义字符是以反斜线(\)开头的字符序列,用于描述特定的控制字符,如换行符(\n)、回车符(\r)、水平制表符(\t)等。
字符输入输出函数:介绍了字符输入函数getchar()和字符输出函数putchar()的使用。
格式化输入输出函数:介绍了数据的格式化输出函数printf()和数据的格式化输入函数scanf()的使用。
ASCII码:讨论了ASCII码(美国标准信息交换码)字符集,它规定了每个字符所对应的编码,即在字符序列中的“序号”。
键盘输入和屏幕输出:作为编写简单的顺序结构程序时最常用到的操作,C程序中的键盘输入和屏幕输出都是通过调用输入/输出函数实现的。
教材学习中的问题和解决过程
Q:如果我想要从一个字符串中提取不同种类的元素该怎么做?
A(AI回答):在C语言中,没有像Python那样的高级字符串处理函数,但我们可以使用一些基本的字符串操作函数来提取字符串中的不同种类的元素。以下是一些常用的方法:
提取特定字符:
使用strchr()函数可以查找字符串中第一次出现的指定字符。
提取子字符串:
使用strstr()函数可以查找一个字符串在另一个字符串中第一次出现的位置。
提取数字:
遍历字符串,使用isdigit()函数检查每个字符是否为数字。
提取单词:
遍历字符串,使用isspace()函数来识别单词的边界。
使用正则表达式:
C语言标准库中没有内置的正则表达式库,但可以使用POSIX正则表达式库<regex.h>。
自定义函数:
根据需要提取的元素特征,编写自定义函数来处理字符串。
基于AI的学习
User: 我在学习《C语言程序设计》第4章的内容,请你以苏格拉底的方式对我进行提问,一次一个问题
Kimi: 当然可以。让我们开始吧。
- 你能告诉我,当我们谈论C语言程序设计时,我们首先需要理解的是什么吗?
User: 对该章问题进行提问
Kimi: 好的,让我们深入探讨《C语言程序设计》第4章的内容。我会以苏格拉底式的提问方式来引导你思考。
- 在这一章中,我们学习了哪些基本的编程结构?你能描述一下它们各自的特点吗?
- 你能解释一下什么是选择结构,以及它在C语言中是如何实现的吗?
- 你如何理解“条件语句”在编程中的作用?它有哪些不同的形式?
- 在C语言中,我们如何使用循环结构来重复执行一段代码?循环结构有哪些类型?
- 你能举例说明,为什么在某些情况下我们需要使用嵌套循环?
User: 一次一个问题
Kimi: 好的,让我们从基础开始。
- 在C语言中,一个程序的基本执行单位是什么?
User: 函数
Kimi: 非常好,你已经知道了C语言中的基本执行单位是函数。那么,接下来的问题:
- 你能描述一下在C语言中定义一个函数的基本结构吗?
User: 开始-执行命令-结束
Kimi: 接近了,但让我进一步细化这个问题:
- 在C语言中定义一个函数时,除了函数体(即开始和结束之间的部分),我们还需要指定什么来告诉编译器这个函数的类型和名称?
User: 函数类型以及名称
Kimi: 对的,函数类型和名称是定义函数时必须指定的。那么,让我们继续:
- 在C语言中,函数的返回类型和函数名之间通常用什么符号来分隔?
User: 空格
Kimi: 实际上,在C语言中,函数的返回类型和函数名之间通常用一个星号(*)来分隔,如果函数返回的是一个指针类型的话。但如果是普通的数据类型,返回类型和函数名之间是没有分隔符的,它们是紧挨着的。那么,我的下一个问题:
- 函数的参数列表在函数定义中起到什么作用?
User: 不知道
Kimi: 没问题,让我们来探讨一下。
- 你能告诉我,当你在C语言中定义一个函数时,参数列表是用来做什么的吗?
User: 定义函数的输入值
Kimi: 完全正确,参数列表用于定义函数的输入值。那么,让我们继续深入:
- 如果一个函数不需要从调用者那里接收任何输入值,你会如何在函数定义中表示这一点?
User: void
Kimi: 非常接近了,但通常我们使用一对空括号 ()
来表示一个函数不接受任何参数。虽然在某些情况下,void
可以用来指明函数不返回任何值,但在参数列表的上下文中,void
并不是用来表示没有参数的。那么,让我来纠正一下:
- 如果一个函数不接受任何参数,那么它的参数列表应该如何书写?
User: 不知道
Kimi: 没问题,我来告诉你。
- 在C语言中,如果一个函数不接受任何参数,它的参数列表应该写作一对空括号,即
()
。例如,一个不接受任何参数的函数可以定义为void functionName()
。这样的函数通常被称为无参函数。
User: 针对这些知识点,我理解了吗
Kimi: 很好,让我们通过几个问题来检验你对这些知识点的理解。
- 如果你想要定义一个返回整数类型,并且不接受任何参数的函数,你会如何声明它?
- 函数的参数列表除了定义输入值之外,还有没有其他作用?
- 函数的返回类型和函数名之间通常用什么符号分隔?
- 如果一个函数需要从调用者那里接收两个整数参数,并返回这两个整数的和,你会如何定义这个函数?
- 函数的返回类型和参数列表之间通常用什么符号分隔?
User: 1、int main()
2、确定操作目标
3、空格
4、int sum_two_integers(int num1, int num2) {
return num1 + num2;
}
5、不知道
Kimi: 让我们逐一检查你的答案:
-
int main()
是一个正确的函数声明,它定义了一个返回整数类型的main
函数,通常用于程序的入口点。不过,这并不是一个不接受任何参数的函数声明,因为main
函数通常接受命令行参数。如果你想要定义一个不接受任何参数的函数,你应该使用int functionName(void)
或者int functionName()
(如果函数体中没有参数)。 -
参数列表确实用于定义函数的输入值,但它也有助于确定函数的签名,这是区分不同函数的关键因素之一。
-
函数的返回类型和函数名之间通常用空格分隔,而不是星号。星号用于指针类型,例如
int* functionName()
表示该函数返回一个指向整数的指针。 -
int sum_two_integers(int num1, int num2) { return num1 + num2; }
是一个正确定义的函数,它接受两个整数参数,并返回它们的和。 -
函数的返回类型和参数列表之间通常用空格分隔。例如,
int functionName(int param1, int param2)
中,int
和functionName
之间、functionName
和(
之间都是用空格分隔的。
现在,让我们回答你最后一个问题:函数的返回类型和参数列表之间通常用什么符号分隔?答案是:通常用空格分隔。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 2/2 | 20/20 | |
第二周 | 300/500 | 2/4 | 18/38 | |
第三周 | 500/1000 | 3/7 | 22/60 | |
第四周 | 300/1300 | 2/9 | 30/90 |