C语言基础编程实战- 课件 林富荣 第7-16章 输入和输出 -学生信息管理系统_第1页
C语言基础编程实战- 课件 林富荣 第7-16章 输入和输出 -学生信息管理系统_第2页
C语言基础编程实战- 课件 林富荣 第7-16章 输入和输出 -学生信息管理系统_第3页
C语言基础编程实战- 课件 林富荣 第7-16章 输入和输出 -学生信息管理系统_第4页
C语言基础编程实战- 课件 林富荣 第7-16章 输入和输出 -学生信息管理系统_第5页
已阅读5页,还剩209页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

输入和输出“C语言基础编程实战第7章01暂停8秒在C语言中,可以使用sleep()函数使程序等待指定的秒数。sleep()函数(在unistd.h头文件中定义)的作用是让程序执行暂停一段时间。使用sleep()函数可以在程序中实现等待、延迟等操作,具体如下。等待用户输入可以使用sleep()函数等待用户按Enter键或其他按键,然后再继续执行程序。模拟延时效果在游戏或动画中,需要使用sleep()函数来实现一些延时效果或动画的帧率控制。例如,登录需要与数据库对接,可以延时等待几秒,先让程序与数据库连接,再显示数据给用户查看,这样数据交互效果就更好。限制程序的执行时间可以使用sleep()函数限制程序的执行时间。例如,让程序最多只能运行5秒钟。让用户观看几秒钟广告,再继续执行程序等。局限性使用sleep()函数有一定的局限性。例如,sleep()函数只能以秒为单位进行延时,并且会占用CPU时间,影响程序的执行效率。在实际应用中,需要根据具体需求选择合适的延时方式和延时时间。02多种类型数据输出在C语言中,使用中文、英文、数字和符号,运用的输出方法是一致的。中文、英文、数字和符号的输出实例步骤1:输入以下代码。#include<stdio.h>intmain(){printf("你好,深圳!\n"); //输出中文字符printf("Hello,SZ!\n"); //输出英文字符printf("0755\n"); //输出数字printf("{}()《》\n"); //输出符号return0;

步骤2:输入代码后的效果如图7-4所示。步骤3:按快捷键F10执行命令,弹出“Confirm”对话框,单击“Yes”按钮,执行程序后,显示效果如图7-5所示。03变量有多个值在C语言中,变量被声明后只能存储一个值。当在程序中给一个变量赋值时,它会将所赋的值存储起来。如果在之后的代码中修改了该变量的值,那么它就会失去原来的值,并存储新的值。也就是变量最后的一个值为新的值。04getchar()函数在C语言中,字符数据输入使用的是getchar()函数,其作用是从终端(输入设备)输入一个字符,并将该字符存储在它的参数中。getchar()函数返回输入的字符,或者发生错误时返回EOF。getchar()函数不会有任何输出,除非使用特殊的库函数如(stdio_getch)来读取字符。getchar()函数显示输入的整个字符,也显示赋值和值。例如,输入hello,显示hello,赋值的值为h。getchar()和scanf()函数的区别(1)(2)scanf()函数是格式输入函数,它按照用户指定的格式从键盘获取数据并输入到指定的变量中;getchar()函数是一个简单的键盘输入函数,其功能是从键盘上输入一个字符。函数格式当读取数字时,scanf()函数会跳过空格、制表符和换行符;getchar()函数在输入时遇到Enter键才会从缓冲区依次提取字符。读取方式getchar()和scanf()函数的区别(3)(4)scanf()函数以空格、Enter键、Tab键结束一次输入,不接受空格符;getchar()函数以Enter键结束输入(空格不结束),接受空格符。结束输入方式scanf()函数以Space键、Enter键、Tab键结束一次输入,不会舍弃最后的回车符(回车符会残留在缓冲区中);getchar()函数以Enter键结束输入时,接受空格符,会舍弃最后的回车符。舍弃回车符的方式05getche()函数在C语言中,getche()函数是一个非标准函数,它从键盘读取一个字符并立即输出它,无须等待用户按Enter键。也就是说,getche()是一个立即应答的输入函数。getche()函数显示键盘输入的值的首个字符,也显示赋值和值。例如,输入hello,显示h,赋值的值为h。06getch()函数在C语言中,getch()函数是一个Windows特有的非标准函数,它从键盘读取一个字符但并不显示它。这个函数通常用于需要隐藏输入的情况,比如输入密码。例如,输入hello,只能输入h,并且只显示赋值的值h。谢谢观看“C语言基础编程实战语句结构“C语言基础编程实战第8章01顺序结构在C语言中,顺序结构是最基本的程序结构,按照代码的先后顺序执行。顺序结构是指程序语句自上而下、一个程序语句接着一个程序语句执行的结构。在C程序中,每一个程序语句都必须以分号(;)结束,而复合语句则用大括号({})包围起来,这些被包围的语句就称为程序区块或语句区块。顺序结构的程序设计框架通常包括以下步骤。1.包含头文件:使用#include指令将所需的头文件包含在程序中。例如:#include<stdio.h>2.定义变量和函数:在程序中定义所需的变量和函数。3.执行计算或操作:根据程序的需要,执行计算或操作。4.输出结果:使用printf()函数或其他输出函数将结果输出到屏幕或文件。5.结束:main()函数的返回语句,它告诉操作系统程序执行已成功完成。例如:return0;}顺序结构通常用于简单的程序或算法,其中每个语句都在按顺序执行,不涉及跳转或条件执行。02选择结构在C语言中,选择结构主要包括if语句和switch语句。if语句if语句用于根据某个条件的真假来决定是否执行特定的语句块。if语句有两种形式:if语句和if-else语句。if语句的常用语法格式如下:if(condition){...//语句块}说明:condition是一个条件表达式,若它的值为真,则运行语句块;否则,跳过语句块。if-else语句的常用语法格式如下:if(condition){...//语句块1}else{...//语句块2}说明:若condition的值为真,则执行语句块1;否则,执行语句块2。switch语句switch语句用于根据某个变量的值来选择执行不同的语句块。switch语句的常用语法格式如下:switch(variable){casevalue1:...//语句块1break;casevalue2:...//语句块2break;...default:...//默认语句块}说明:variable是一个变量,value1、value2等是变量的可能取值。如果variable的值等于value1,那么执行语句块1;如果variable的值等于value2,那么执行语句块2;以此类推。如果variable的值与任何一个case的值都不相等,那么执行默认语句块。每个语句块后面都有一个break语句,用于结束switch语句的执行。03循环结构在C语言中,循环结构可以重复执行一段代码,直到满足某个条件。循环结构有三种主要类型:for、while和do-while。for循环语句for循环语句通常用于已知循环次数的情况,由一个初始化语句、一个条件语句和一个更新语句组成。for循环语句的常用语法格式如下:for(初始化;条件;更新){...//循环体}while循环语句While循环语句先判断条件,当条件为真时,重复执行循环体。如果初始条件为假,那么循环体将不会被执行。while循环语句的常用语法格式如下:while(条件){...//循环体}do-while循环语句do-while循环语句至少会先执行一次循环体,然后检查条件。如果条件为真,那么循环体会再次执行,如此循环。do-while循环语句的常用语法格式如下:do{...//循环体}while(条件);04嵌套结构在C语言中,在一个结构体内部定义另一个结构体,这就是嵌套结构。这种结构允许程序员创建更复杂的数据结构,以更好地表示现实世界中的事物。谢谢观看“C语言基础编程实战模拟元组“C语言基础编程实战第9章01模拟创建元组步骤1:学习使用结构体struct来模拟创建元组,输入以下代码。#include<stdio.h>#include<string.h>//定义学生结构体structStudent{charname[20];intage;};intmain(){//模拟创建元组

structStudentone={"林颖希",22};return0;}步骤2:输入代码后的效果如图9-1所示。步骤3:按快捷键F10执行命令,弹出“Confirm”对话框,单击“Yes”按钮,执行程序后,显示效果如图9-2所示。02模拟访问元组步骤1:学习运用printf模拟访问元组,输入以下代码。#include<stdio.h>#include<string.h>

//定义学生结构体structStudent{charname[20];intage;};

intmain(){//模拟创建元组

structStudentone={"林颖希",22};

printf("%s,%d",,one.age);return0;}步骤2:输入代码后的效果如图9-3所示。步骤3:按快捷键F10执行命令,弹出“Confirm”对话框,单击“Yes”按钮,执行程序后,显示效果如图9-4所示。03模拟转换元组步骤1:学习使用char*和printf()函数模拟转换元组,输入以下代码。#include<stdio.h>#include<string.h>//定义学生结构体structStudent{charname[20];intage;};//转换函数:学生结构体转换字符串char*change(structStudentstudent){staticcharlfr[100];

sprintf(lfr,"Name:%s,Age:%d",,student.age);returnlfr;}步骤1:学习使用char*和printf()函数模拟转换元组,输入以下代码。

intmain(){//模拟创建元组

structStudentone={"林颖希",22};

printf("%s,%d\n",,one.age);

//转换函数的表示形式

printf("%s\n",change(one));return0;}步骤2:输入代码后的效果如图9-5所示。步骤3:按快捷键F10执行命令,弹出“Confirm”对话框,单击“Yes”按钮,执行程序后,显示效果如图9-6所示。04模拟修改元组步骤1:学习用模拟元组的方式把年龄22修改为18,输入以下代码。#include<stdio.h>#include<string.h>//定义学生结构体structStudent{charname[20];intage;};intmain(){//模拟创建元组structStudentone={"林颖希",22};printf("%s,%d\n",,one.age);//修改元组的内容

one.age=18;printf("修改后的内容:%s,%d\n",,one.age);return0;}步骤2:输入代码后的效果如图9-7所示。步骤3:按快捷键F10执行命令,弹出“Confirm”对话框,单击“Yes”按钮,执行程序后,显示效果如图9-8所示。可见模拟修改元组成功,显示元组的姓名和年龄。05模拟删除元组在C语言中,实际上创建的是一个结构体实例,并不是元组。C语言不支持直接删除结构体实例,可以通过将结构体实例的内存设为无效(如设置为NULL和0),模拟删除一个结构体的效果。注意:这样不会释放由操作系统分配给该实例的内存,可能会导致内存泄露。谢谢观看“C语言基础编程实战数组“C语言基础编程实战第10章01了解数组数组用于单个变量中存储多个值,而不是为每个值声明单独的变量。例如:inta=5;intb=6;intc=8;这样是每个值声明单独的变量。创建数组,定义数据类型(如int)并指定数组名称,后跟方括号[]。向数组插入值,在大括号{}内使用英文逗号分隔。如果运用数组,可以如下表示:inta[]={5,6,8};可见,数组可以在单个变量中存储多个值。应学会方括号[]和大括号{}的运用。如何运用数组?a[0]=5;a[1]=6;a[2]=8;每个值都可以以数组的方式来运用,非常方便。02创建数组一维数组(也称为线性数组)是数学和编程中常用的一种数据类型。它包含多个元素,每个元素都可以通过其唯一的索引进行访问。在C语言中,一维数组的声明通常包括其数据类型、数组大小和名称。每个元素都有一个唯一的索引,从0开始,用于访问和操作数组中的元素。03二维数组C语言中,二维数组的声明包括其数据类型、行数和列数。二维数组是C语言中的一种复合数据类型,包含多个一维数组,每个一维数组称为二维数组的一个“行”。二维数组常用于存储矩阵、表格等二维数据。二维数组的表示方式如下:intlfr[3][5];表示3行、5列的二维数组。3*5=15,即表示有15个元素。数组名是lfr。04字符数组和字符串在C语言中,字符数组和字符串是两个密切相关的概念。字符数组字符数组是一种数据结构,可以存储一定数量的字符。字符数组的元素类型是字符类型(char),每个元素可以存储一个字符。例如:charlfr[5];说明:定义了一个包含5个元素的字符数组。字符串字符串是由字符数组表示的文本序列。在C语言中,字符串通常以空字符('\0')结尾,以标识字符串的结束位置。例如:charlfr[]="Lin";说明:字符数组lfr包含4个元素,分别是'L'、'i'、'n'和'\0',最后一个元素'\0'表示字符串的结尾。05字符串连接函数strcat()步骤1:strcat()函数需要用到头文件#include<string.h>,输入以下代码。#include<stdio.h>#include<string.h>intmain(){charlfr1[100]="深圳";charlfr2[]="罗湖";

strcat(lfr1,lfr2); //连接lfr1和lfr2,结果保存在lfr1中

printf("%s\n",lfr1); //显示连接的结果

return0;}步骤2:输入代码后的效果如图10-7所示。步骤3:按快捷键F10执行命令,弹出“Confirm”对话框,单击“Yes”按钮,执行程序后,显示效果如图10-8所示。06修改数组的元素步骤1:学习修改数组的元素,将75修改为88,输入以下代码。#include<stdio.h>intmain(){intlfr[]={22,30,75,100};

lfr[2]=88;

printf("%d\n",lfr[2]);return0;}步骤2:输入代码后的效果如图10-9所示。步骤3:按快捷键F10执行命令,弹出“Confirm”对话框,单击“Yes”按钮,执行程序后,显示效果如图10-10所示。07数组冒泡排序在C语言中,对数组元素进行排序的方法有多种,如冒泡排序、归并排序、选择排序、插入排序、快速排序等。最经典、最需要掌握的是冒泡排序方法,学习C语言必须学会冒泡排序方法。什么是冒泡排序?冒泡排序(BubbleSort)是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复地进行,直到没有再需要交换为止,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端,就好像气泡一样,所以被称为冒泡排序。冒泡排序的过程示例第一轮冒泡排序过程如下。(1)原始数据:2,4,3,1。(2)比较2和4,不交换:2,4,3,1。(3)比较4和3,交换:2,3,4,1。(4)比较4和1,交换:2,3,1,4。第二轮冒泡排序过程如下。(1)上一轮的数据:2,3,1,4。(2)比较2和3,不交换:2,3,1,4。(3)比较3和1,交换:2,1,3,4。(4)比较3和4,不交换:2,1,3,4。冒泡排序的过程示例第三轮冒泡排序过程如下。(1)上一轮的数据:2,1,3,4。(2)比较2和1,交换:1,2,3,4。(3)比较2和3,不交换:1,2,3,4。(4)比较3和4,不交换:1,2,3,4。结果已经出来,冒泡排序结束。谢谢观看“C语言基础编程实战函数“C语言基础编程实战第11章01创建函数步骤1:学会创建一个简单的函数,并了解函数的运用,输入以下代码。#include<stdio.h>//这是一个函数声明,它告诉编译器我们将要定义一个名为“add”的函数voidadd(inta,intb);intmain(){intx=10;inty=27;add(x,y);//调用add()函数,将x和y的值传递给它

return0;}//运用之前声明的add()函数的定义voidadd(inta,intb){intsum=a+b;printf("计算总和:%d+%d=%d\n",a,b,sum);}步骤2:输入代码后的效果如图11-1所示。步骤3:按快捷键F10执行命令,弹出“Confirm”对话框,单击“Yes”按钮,执行程序后,显示如图11-2所示。02形参和实参在C语言中,函数的参数会出现在两个地方,分别是函数定义处和函数调用处,这两个地方的参数是有区别的。形参(形式参数)在函数定义中出现的参数可以看作一个占位符,它没有数据,只能等到函数被调用时接收传递进来的数据,所以称为形式参数,简称形参。在C语言中,形参(形式参数)是指在函数定义中声明的参数。它们是函数接收外部数据的方式,可以是输入参数也可以是输出参数。实参(实际参数)函数被调用时给出的参数包含了实实在在的数据,会被函数内部的代码使用,所以称为实际参数,简称实参。在C语言中,实参是指在函数调用时传递给函数的实际参数。它们可以是常量、变量或表达式,也可以是函数调用本身。形参和实参的功能是传递数据,发生函数调用时,实参的值会传递给形参。03函数返回值return函数的返回值是指函数被调用之后,执行函数体中的代码所得到的结果,这个结果通过return语句返回。在C语言中,函数可以返回一个值,这个值被称为返回值。返回值是函数执行成功后,从函数中返回给调用者的数据。在函数定义时,可以使用return语句指定函数的返回值。return语句后可以跟一个表达式,该表达式将作为函数的返回值04函数的调用步骤1:实现函数被调用3次,输入以下代码。#include<stdio.h>

voidcloudylin(){printf("深圳林富荣学习C语言!\n");}intmain(){cloudylin();cloudylin();cloudylin();return0;}步骤2:输入代码后的效果如图11-9所示。步骤3:按快捷键F10执行命令,弹出“Confirm”对话框,单击“Yes”按钮,执行程序后,显示如图11-10所示。05函数声明和函数定义在C语言中,一个函数由以下两部分组成。声明:函数的名称、返回类型和参数。定义:函数体(要执行的代码)。函数声明和函数定义的结构如下:void函数的名称(){ //函数声明

... //函数体(函数定义)}为了代码优化,通常可见到函数的声明和定义的分开结构。main()函数上面的代码是函数声明,main()函数下面的代码是函数定义,代码如下:void函数的名称(); //函数声明//main()函数intmain(){

函数的名称(); //调用函数

return0;}//函数定义void函数的名称(){

printf("Iamshenzhen

linfurong!");}06全局变量和局部变量步骤1:学会全局变量的声明,以及在函数内部修改全局变量的值,并且在函数内部访问全局变量,输入以下代码。#include<stdio.h>//声明全局变量intlfr=8;intmain(){

printf("全局变量值:%d\n",lfr); //在函数内部访问全局变量

lfr=22; //在函数内部修改全局变量的值

printf("修改后的全局变量值:%d\n",lfr);

cloudylin(); //在另一个函数内部访问全局变量

return0;}voidcloudylin(){

printf("另一个函数中的全局变量值:%d\n",lfr); //在函数内部访问全局变量}全局变量步骤2:输入代码后的效果如图11-15所示。步骤3:按快捷键F10执行命令,弹出“Confirm”对话框,单击“Yes”按钮,执行程序后,显示如图11-16所示。全局变量局部变量步骤1:学会局部变量的声明,在main()函数中定义的变量是局部变量,输入以下代码。#include<stdio.h>intmain(){intx=8; //定义局部变量x,并赋初值为8

printf("x的值:%d\n",x); //输出变量x的值

{inty=15; //在代码块中,定义局部变量y并赋初值为15

printf("y的值:%d\n",y); //输出变量y的值

}return0;}局部变量步骤2:输入代码后的效果如图11-17所示。步骤3:按快捷键F10执行命令,弹出“Confirm”对话框,单击“Yes”按钮,执行程序后,显示如图11-18所示。07变量的作用域步骤1:输入以下代码。#include<stdio.h>intmain(){intlfr=8; //局部变量

printf("%d\n",lfr);{intlfr=15; //新的局部变量,与之前的变量同名

printf("%d\n",lfr);}//局部变量lfr的作用域结束

printf("%d\n",lfr); //引用的是之前的局部变量lfr,输出8return0;}局部作用域步骤2:输入代码后的效果如图11-19所示。步骤3:按快捷键F10执行命令,弹出“Confirm”对话框,单击“Yes”按钮,执行程序后,显示如图11-20所示。局部作用域全局作用域步骤1:输入以下代码。#include<stdio.h>intlfr=10; //全局变量。全局作用域intmain(){printf("%d\n",lfr); //输出10。全局变量

lfr=27;printf("%d\n",lfr); //输出27。修改后的全局变量

return0;}全局作用域步骤2:输入代码后的效果如图11-21所示。步骤3:按快捷键F10执行命令,弹出“Confirm”对话框,单击“Yes”按钮,执行程序后,显示如图11-22所示。函数作用域步骤1:输入以下代码。#include<stdio.h>intsum(inta,intb){intc=a+b; //c是函数内部的局部变量

returnc;}intmain(){intx=sum(10,27); //调用sum()函数,传递参数并获取返回值

printf("%d\n",x); //输出37return0;}函数作用域步骤2:输入代码后的效果如图11-23所示。步骤3:按快捷键F10执行命令,弹出“Confirm”对话框,单击“Yes”按钮,执行程序后,显示如图11-24所示。可见c是sum()函数内部的局部变量,它的作用域限定在函数体内,函数作用域运用成功。08递归函数(递归调用)步骤1:运用递归函数,计算6的阶乘,输入以下代码。#include<stdio.h>intfactorial(intn){if(n==0){ //递归的退出条件

return1;}else{returnn*factorial(n-1); //递归调用

}}intmain(){intnumber=6;

printf("%d的阶乘结果是%d\n",number,factorial(number));return0;}全局变量步骤2:输入代码后的效果如图11-25所示。步骤3:按快捷键F10执行命令,弹出“Confirm”对话框,单击“Yes”按钮,执行程序后,显示如图11-26所示。可见6的阶乘是720,递归调用成功。全局变量谢谢观看“C语言基础编程实战预处理命令“C语言基础编程实战第12章01预处理命令C语言的预处理命令在编译过程中扮演着重要的角色,进行一些文本转换和修饰。预处理命令的主要作用如下。1.包含其他文件:通过#include命令可以将另一个源文件的全部内容包含进来。这样可以减少重复的工作,将一些通用的配置或者预处理定义放到一个文件中,每个需要使用该配置的文件只要包含该文件即可。2.定义宏:通过#define命令可以在源程序中定义一个宏,即在程序正式编译前就进行简单的字符串替换。这有助于编程中的重复性工作,提高代码的阅读、修改、移植和调试的便利性。3.条件编译:为了令程序中的一部分内容在满足一定条件下才进行编译,可以使用预处理中的#ifdef、#ifndef等命令实现条件编译处理。这可以提高C语言的通用性,不同的计算机能兼容执行C语言的代码程序。预处理命令的实际用途:假如用系统的用户有Windows和Linux客户两种,Windows客户让它暂停2000毫秒后再输出内容,Linux客户让它暂停15秒以后再输出内容,就可以运用预处理命令来解决。假如用系统的用户有Windows和Linux客户两种,Windows客户让它暂停2000毫秒后再输出内容,Linux客户让它暂停15秒以后再输出内容,就可以运用预处理命令来解决。预处理命令宏定义#define#define叫作宏定义命令,是C语言预处理命令的一种。所谓宏定义,就是用一个标识符来表示一个字符串,如果在后面的代码中出现了该标识符,那么就全部替换成指定的字符串。宏定义格式如下:#define宏名字符串宏定义示例:#definePAY123说明:#definePAY123就是宏定义,PAY为宏名,123是宏的内容(宏的字符串)。#include的用法#include叫作文件包含命令,用来引入对应的头文件(.h文件)。#include也是C语言预处理命令的一种。#include的引入用法如下:#include<文件名.h>#include"文件名.h"说明:使用尖括号<>,编译器会到系统路径下查找头文件;使用双引号"",编译器首先在当前目录下查找头文件,如果没有找到,再到系统路径下查找。带参数的宏定义#include叫作文件包含命令,用来引入对应的头文件(.h文件)。#include也是C语言预处理命令的一种。#include的引入用法如下:#include<文件名.h>#include"文件名.h"说明:使用尖括号<>,编译器会到系统路径下查找头文件;使用双引号"",编译器首先在当前目录下查找头文件,如果没有找到,再到系统路径下查找。带参数的宏定义步骤1:运用带参数的宏定义计算a和b的加法、乘法,输入以下代码。#include<stdio.h>#definesum(x,y)((x)+(y))#defineji(x,y)((x)*(y))intmain(){inta=10,b=27;

printf("a+b的和为:%d\n",sum(a,b));

printf("a*b的积为:%d\n",ji(a,b));return0;}步骤2:输入代码后的效果如图12-8所示。步骤3:按快捷键F10执行命令,弹出“Confirm”对话框,单击“Yes”按钮,执行程序后,显示如图12-9所示。可见a+b=10+27=37正确,a*b=10*27=270正确,则带参数的宏定义运用成功。预处理命令谢谢观看“C语言基础编程实战指针“C语言基础编程实战第13章01指针步骤1:输入以下代码。#include<stdio.h>intmain(){intlfr=10; //定义一个整型变量lfr,并赋值为10int*cloudy; //定义一个指向整型的指针cloudycloudy=𝔩 //将cloudy指向变量lfr的内存地址printf("lfr的值:%d\n",lfr); //输出lfr的值

printf("cloudy指向的值:%d\n",*cloudy); //通过指针cloudy访问变量lfr的值

return0;}步骤2:输入代码后的效果如图13-1所示。步骤3:按快捷键F10执行命令,弹出“Confirm”对话框,单击“Yes”按钮,执行程序后,显示如图13-2所示。可见cloudy指向的值是10,表示指针运用成功。02数组指针(横向输出)步骤1:通过指针访问数组元素来学习数组指针的运用,输入以下代码。#include<stdio.h>intmain(){intlfr[]={1,2,6,8,9};int*cloudy=lfr;//定义指向数组首元素的指针cloudy

printf("数组元素为:");for(inti=0;i<5;i++){

printf("%d",*(cloudy+i));//通过指针访问数组元素

}

printf("\n");return0;}步骤2:输入代码后的效果如图13-3所示。步骤3:按快捷键F10执行命令,弹出“Confirm”对话框,单击“Yes”按钮,执行程序后,显示如图13-4所示。03字符串指针步骤1:学习字符串指针的运用,学会通过指针访问字符串,输入以下代码。#include<stdio.h>intmain(){char*sz="您好,深圳!"; //定义指向字符串常量的指针sz

printf("字符串为:%s\n",sz); //通过指针访问字符串

charlin[]={'H','e','l','l','o','\0'}; //定义字符串数组

char*lfr=lin; //定义指向字符串数组首元素的指针lfr

printf("字符串为:%s\n",lfr); //通过指针访问字符串

return0;}步骤2:输入代码后的效果如图13-5所示。步骤3:按快捷键F10执行命令,弹出“Confirm”对话框,单击“Yes”按钮,执行程序后,显示如图13-6所示。04指针变量作为函数参数步骤1:学习利用swap()函数交换两个数,输入以下代码。#include<stdio.h>voidswap(int*p1,int*p2){intbank;//临时变量

bank=*p1;*p1=*p2;*p2=bank;}intmain(){inta=100,b=120;swap(&a,&b);printf("a=%d,b=%d\n",a,b);return0;}步骤2:输入代码后的效果如图13-7所示。步骤3:按快捷键F10执行命令,弹出“Confirm”对话框,单击“Yes”按钮,执行程序后,显示如图13-8所示。05二级指针步骤1:输入以下代码。#include<stdio.h>intmain(){intlfr=88;int*p1=𝔩int**p2=&p1;int***p3=&p2;

printf("%d,%d,%d,%d\n",lfr,*p1,**p2,***p3);return0;}步骤2:输入代码后的效果如图13-9所示。步骤3:按快捷键F10执行命令,弹出“Confirm”对话框,单击“Yes”按钮,执行程序后,显示如图13-10所示。06数组指针(竖向输出)步骤1:输入以下代码。#include<stdio.h>intmain(){intlfr[]={1,3,7,8,9};int*ptr=lfr; //指向数组的指针

//使用指针访问数组元素

printf("%d\n",*ptr); //输出1

printf("%d\n",*(ptr+1)); //输出3

printf("%d\n",*(ptr+2)); //输出7

printf("%d\n",*(ptr+3)); //输出8

printf("%d\n",*(ptr+4)); //输出9return0;}步骤2:输入代码后的效果如图13-11所示。步骤3:按快捷键F10执行命令,弹出“Confirm”对话框,单击“Yes”按钮,执行程序后,显示如图13-12所示。07函数指针步骤1:输入以下代码。#include<stdio.h>//定义一个函数intadd(inta,intb){returna+b;}//定义一个函数指针类型typedefint(*lfr)(int,int);intmain(){//定义一个函数指针变量并赋值

lfr

add_zz=add;//通过函数指针调用函数

intresult=add_zz(10,27);

printf("10+27=%d\n",result);//输出:10+27=37return0;}步骤2:输入代码后的效果如图13-13所示。步骤3:按快捷键F10执行命令,弹出“Confirm”对话框,单击“Yes”按钮,执行程序后,显示如图13-14所示。谢谢观看“C语言基础编程实战结构体“C语言基础编程实战第14章01结构体在C语言中,结构体是一种重要的数据类型,广泛应用于各种实际场景中。例如,在一个学生信息管理系统中,可以定义一个学生结构体,包含学生的姓名、学号、年龄、性别、成绩、电话号码、住址等信息,然后可以定义一个数组来存储多个学生信息,实现对学生信息的增加、删除、修改、查找等操作。结构体的语法格式如下:struct结构体名{

结构体所包含的变量或数组};结构体的示例如下:structstudent{char*name; //姓名intnum; //学号};02结构体数组在C语言中,结构体数组是一种特殊类型的数组,是一个包含多个结构体的数组,它的每个元素都是一个结构体类型的实例。结构体数组允许将多个相关的数据项组合在一起,以便于管理和操作这些数据。03结构体指针在C语言中,结构体指针是一种特殊的指针类型,它指向一个结构体类型的内存地址。结构体指针可以用来存储和访问结构体中的成员变量和成员函数。定义结构体指针的方法是在结构体类型前面加上*符号。04枚举类型enum在C语言中,枚举类型是一种用户自定义的数据类型,它允许用户为一组整数值指定一个名称,并使用该名称表示这些值。枚举类型通常用于简化代码和提高可读性。枚举类型的作用如下。提高代码的可读性枚举类型可以为整数值赋予有意义的名称,使代码更易于阅读和理解。限制变量的取值范围枚举类型可以定义一个有界的值域,限制变量的取值范围,从而增加代码的健壮性。增强代码的可维护性枚举类型可以避免使用魔术数字(未命名的整数值),从而减少错误,并且可以提高代码的可维护性。限制变量的取值范围枚举类型可以方便地在调试和测试过程中进行日志记录和错误处理,提高代码的可调试性和可测试性。枚举类型示例如下:enumweekdays{Sun,Mon,Tue,Wed,Thu,Fri,Sat};说明:定义了一个名为weekdays的枚举类型,包含7个枚举常量,分别表示星期日、星期一、星期二、星期三、星期四、星期五、星期六。Sun表示0,Mon表示1,Tue表示2,Wed表示3,Thu表示4Fri表示5,Sat表示6。05共用体union在C语言中,结构体(struct)和共用体(union)是两种用户自定义的数据类型。它们都允许用户定义自己的数据结构,但它们在存储和访问数据方面有所不同。结构体和共用体的区别:结构体的各个成员会占用不同的内存,互相之间没有影响;共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员。06位域位域(BitField,又称为位段)是C语言中一种特殊的数据结构,用于在结构体中存储和表示一组相关联的位(bit)。位域允许程序员将一组二进制位分配给一个结构体的成员,以便更有效地使用存储空间。在C语言中,使用位域需要使用struct关键字定义一个结构体,并在其中声明一个或多个位域成员。位域成员使用特殊的语法声明,包括指定位数和类型。在C语言中,当使用unsigned关键字来声明位域时,它指定了位域只能包含非负整数。位域的声明使用unsigned关键字和冒号(:)后的位数来指定。07continue语句在C语言中,continue语句用于跳过当前循环中的剩余代码,并直接开始下一次循环。当遇到continue语句时,程序会忽略掉本次循环中位于continue语句之后的代码,并继续执行下一次循环。continue语句通常用于处理不符合特定条件的元素,以避免在循环内部进行不必要的代码执行。例如,全班有50个学生,找出90分或90分以上的学生。谢谢观看“C语言基础编程实战文件操作“C语言基础编程实战第15章01打开、读取和关闭文件fopen()函数用于打开文件,fgets()函数用于读取文件,fclose()函数用于关闭文件。C语言开发者需要注意每次使用fopen()函数打开文件后都需使用fclose()函数关闭文件。02运用fgetc()函数从文件中读取第一个字符常用的打开文件方式如下。1.r:以只读方式打开文件。文件必须存在。2.w:以只写方式打开文件。如果文件存在,那么会清空文件内容;如果文件不存在,那么会创建新文件。3.a:以追加方式打开文件。如果文件存在,那么新的内容会被追加到文件的末尾;如果文件不存在,那么会创建新文件。4.r+:以读/写方式打开文件。文件必须存在。5.w+:以读/写方式打开文件。如果文件存在,那么会清空文件内容;如果文件不存在,那么会创建新文件。6.a+:以读/追加方式打开文件。如果文件存在,那么新的内容会被追加到文件的末尾;如果文件不存在,那么会创建新文件。03运用fputc()函数将一个字符写入文件在C语言中,要将字符写入TXT文件,开发者可以使用“w”模式打开文件,而不是“r”模式。“w”模式是以只写方式打开文件,然后可以使用fputc()函数或fprintf()函数将字符写入文件。04运用fgets()函数从文件中读取第一行步骤1:学习读取txt文档的第一行字符内容,输入以下代码。#include<stdio.h>intmain(){FILE*fp;charfilename[]="products.txt"; //要打开的文件名

//打开文件

fp=fopen(filename,"r"); //r是以只读方式打开文件

if(fp==NULL){

printf("无法打开文件:%s\n",filename);return1;}步骤1:学习读取txt文档的第一行字符内容,输入以下代码。//读取文件第一行

charline[100]; //定义一个足够大的缓冲区来存储整行

if(fgets(line,sizeof(line),fp)!=NULL){

printf("%s",line);}else{

printf("无法读取文件:%s\n",filename);}//关闭文件

fclose(fp);return0;}步骤2:输入代码后的效果如图15-11所示。步骤3:按快捷键F10执行命令,弹出“Confirm”对话框,单击“Yes”按钮,执行程序后,显示如图15-12所示。步骤4:验证打开“products.txt”文件的第一行字符的内容是否正确,可以直接打开文件,可见读取第一行字符内容正确为“NameAgeScore”,如图15-13所示。步骤2:输入代码后的效果如图15-11所示。步骤3:按快捷键F10执行命令,弹出“Confirm”对话框,单击“Yes”按钮,执行程序后,显示如图15-12所示。步骤4:验证打开“products.txt”文件的第一行字符的内容是否正确,可以直接打开文件,可见读取第一行字符内容正确为“NameAgeScore”,如图15-13所示。05运用fgets()函数从文件中读取第二行步骤1:学习读取txt文档的第二行字符内容,输入以下代码。#include<stdio.h>intmain(){FILE*fp;charfilename[]="products.txt"; //要打开的文件名

//打开文件

fp=fopen(filename,"r"); //r是以只读方式打开文件

if(fp==NULL){

printf("无法打开文件:%s\n",filename);return1;}//跳过第一行(已读取)charline[100];if(fgets(line,sizeof(line),fp)!=NULL){//donothing}else{

printf("无法读取文件:%s\n",filename);return1;}//读取第二行

charsecond_line[100];if(fgets(second_line,sizeof(second_line),fp)!=NULL){

printf("%s",second_line);}else{

printf("无法读取文件:%s\n",filename);return1;}//关闭文件

fclose(fp);return0;}步骤2:输入代码后的效果如图15-14所示。步骤3:按快捷键F10执行命令,弹出“Confirm”对话框,单击“Yes”按钮,执行程序后,显示如图15-15所示。步骤4:验证打开“products.txt”文件的第二行字符的内容是否正确,可以直接打开文件,可见读取第二行字符内容正确为“Cloudylin1895”,如图15-16所示。06运用fread()函数从文件中读取数据在C语言中,fread()和fgets()都是用于文件操作的函数,但是它们的功能和使用方式有所不同。fread()函数用于从文件中读取数据,其语法格式如下:fread(ptr,size,count,stream)参数说明如下:ptr是一个指向数据的指针,读取的数据将存储在该指针所指向的内存区域。size表示要读取的每个数据项的字节数。count表示要读取的数据项数。stream是一个指向要读取的文件的指针。fread()函数将返回实际读取的数据项数。fgets()函数用于从文件中读取一行,其语法格式如下:fgets(str,n,stream)参数说明如下:str是一个指向字符数组的指针,读取的行将存储在该数组中。n是要读取的最大字符数(包括空字符'\0')。stream是一个指向要读取的文件的指针。fgets()函数将返回一个指向str的指针,或者如果发生错误或到达文件末尾,则返回NULL。简而言之,fread()函数用于读取文件中的数据块,fgets()函数用于读取文件中的一行文本。fread()函数读取数据时需要指定数据的大小和数量,fgets()函数只需要指定要读取的最大字符数。07运用fwrite()函数向文件中写入数据步骤1:学习运用fwrite()函数向文件中写入数据,应学会运用a+写入文件的方式,输入以下代码。#include<stdio.h>#include<string.h>#defineMAX_LINE_SIZE100intmain(){FILE*fp;charfilename[]="products.txt";charline[MAX_LINE_SIZE];//打开文件用于写入

fp=fopen(filename,"a+");//a+文件内容会被增加到末尾

if(fp==NULL){

printf("无法打开文件:%s\n",filename);return1;

}//使用line变量

strcpy(line,"姓名是林富荣\n学号是20280001\n");

fwrite(line,sizeof(char),strlen(line),fp);//关闭文件

fclose(fp);return0;}步骤2:输入代码后的效果如图15-20所示。步骤3:按快捷键F10执行命令,弹出“Confirm”对话框,单击“Yes”按钮,执行程序后,显示如图15-21所示。可见运用fwrite()函数向文件中写入数据成功。步骤4:验证打开“products.txt”文件的内容是否成功写入数据,可以直接打开文件,可见写入两行数据“姓名是林富荣”和“学号是20280001”成功,如图15-22所示。谢谢观看“C语言基础编程实战学生信息管理系统“C语言基础编程实战第16章01学生信息管理表开发工程师从需求方获得了一个学生信息管理表,包括学号、姓名、年龄和GPA平均学分绩点,如表16-1所示。从需求方获得的表格内容学号姓名年龄GPA平均学分绩点2025000001林富荣271272025000002林小鱼211152025000003张大云23138数据内容的来源经过沟通,了解到数据内容是班主任输入的,每个学期需要整理,并且输入学生的学号、姓名、年龄、GPA平均学分绩点等内容。需求开发工程师与需求方沟通,原来的工作方式是运用Excel制作一个表,班主任在数据表上管理学生信息管理表的内容,现在的工作方式是需要转换为C语言的学生信息管理表,在C语言开发的学生信息管理系统中,班主任可以添加学生信息,输入学生的学号、姓名、年龄、GPA平均学分绩点的内容。02学生信息管理系统界面需求方希望开发工程师做成的学生信息管理系统的原型界面如图16-1所示。学生信息管理系统的功能如下:添加学生信息。显示所有学生信息。搜索指定学生信息。退出。03添加学生信息代码运用结构体,定义学生信息。定义结构体student,包含四个成员:一个整数id、一个字符数组name(用于存储名字,最大长度为50)、一个整数age和一个浮点数gpa。代码如下:structstudent{intid;charname[50];intage;floatgpa;};定义一个名为student的结构体,并创建一个名为students的数组来存储这个结构体。同时,定义一个名为num_students的整数变量,并且初始化值为0。代码如下:structstudentstudents[MAX_STUDENTS];intnum_students=0;add_student()函数用于添加新的学生。首先定义一个新的student结构体,然后提示用户输入新的学生信息,接着读取用户的输入数据,并且赋值给新的学生,最后将新的学生添加到students数组中,并且将num_students增加1,以便记录新学生的添加。代码如下:voidadd_student(){structstudentnew_student;

printf("请输入学生的学号:");

scanf("%d",&new_student.id);

printf("请输入学生的姓名:");

scanf("%s",new_);

printf("请输入学生的年龄:");

scanf("%d",&new_student.age);

printf("请输入学生和GPA平均学分绩点:");

scanf("%f",&new_student.gpa);students[num_students]=new_student;

num_students++;}需要运用到的头文件如下:#include<stdio.h>#include<stdlib.h>#include<string.h>#defineMAX_STUDENTS200004显示所有学生信息代码运用一个for语句,显示所有学生信息的内容,包括学号、姓名、年龄、GPA平均学分绩点,代码如下:voidprint_students(){for(inti=0;i<num_students;i++){

printf("ID:%d\nName:%s\nAge:%d\nGPA:%.2f\n",students[i].id,students[i].name,students[i].age,students[i].gpa);}}05搜索指定学生信息代码通过学生的学号,可以搜索指定学生的信息内容,需要用到一个for语句,代码如下:

voidsearch_student(){intid;

printf("请输入学生学号搜索:");

scanf("%d",&id);for(inti=0;i<num_students;i++){if(students[i].id==id){

printf("ID:%d\nName:%s\nAge:%d\nGPA:%.2f\n",students[i].id,students[i].name,students[i].age,students[i].gpa);return;}}

printf("对不起,无法查询到学生信息。\n");}06界面代码界面需要在main()函数中用到switch语句,case1是添加学生信息,case2是显示所有学生信息,case3搜索指定的学生,case4退出,代码如下:intmain(){intchoice;do{

printf("《深圳市学生信息管理系统》\n");

printf("1.添加学生信息\n");

printf("2.显示所有学生信息\n");printf("3.搜索指定的学生\n");

printf("4.退出\n");

printf("请选择模式:");

scanf("%d",&choice);switch(choice){

case1:

add_student();break;case2:

print_students();break;case3:

search_student();break;case4:

printf("退出程序。\n");break;default:

printf("无效的选择。\n");}}while(choice!=4);return0;}07整合代码每一个模块的代码都开发好了,就需要将所有代码整合起来。整理好的代码如下:#include<stdio.h>#include<stdlib.h>#include<string.h>#defineMAX_STUDENTS2000//林富荣2024年学生信息管理系统案例structstudent{intid;charname[50];intage;floatgpa;};structstudentstudents[MAX_STUDENTS];intnum_stud

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论