
数组
文章平均质量分 52
余思荷
记录余小荷的进步过程,为了成为一个优秀的程序媛!给老子冲!
展开
-
【面试准备】数据结构(一)线性表
数据结构是研讨数据的逻辑结构和存储结构,以及它们之间的相互关系并对与这种结构定义相应的运算,设计出相应的算法,确保经过这些运算后所得到的新结构是原来的结构类型。线性表的存储结构定长的顺序存储结构——顺序表简称顺序表,程序中通过创建数组来建立这种存储结构,其主要特点是为线性表分配一块连续的存储空间,线性表中的数据元素顺序的存储在这些地址连续空间中,以物理地址相邻来表示线性表中数据元素之间的逻辑关系,其不足是限制了线性表的长度变化。顺序表插入算法的时间复杂度是O(n)顺序表删除算法的时间复杂度是O原创 2021-09-05 16:05:56 · 266 阅读 · 0 评论 -
【C语言】案例六十四 第二简单的预处理
案例描述本案例要求通过使用宏定义,依次交换两个一位数组中的元素。必备知识带参数的宏定义带参数的宏定义,其语法格式如下所示。#define 标识符(形参表) 字符单;上述语法格式和不带参数的宏定义有些类似,不同的是多了一个括号,括号中的“形参表”由一个或多个形参组成,当多余一个形参时,形参之间要用逗号进行分隔。对于带参数的宏定义来说,同样需要使用字符串替换宏名,使用实参替换形参。通过学习带参数的宏定义可以发现,带参数的宏定义和带参函数可以实现同样的功能,但两者却有本质的不同。如下表:由于宏原创 2021-09-04 11:25:18 · 128 阅读 · 0 评论 -
【C语言】案例六十三 最简单的预处理【编译和预处理】
案例描述本案例要求将矩形的长和宽设置为宏,然后再求出矩形的面积。案例分析宏定义是预处理最常用的功能之一,它用于讲一个标识符定义为一个字符串,这样在源程序被编译器处理之前,预处理器会将标识符替换成所定义的字符串。根据...原创 2021-09-04 10:32:36 · 186 阅读 · 0 评论 -
【C语言】案例六十二 回文字符串(方法二)
案例描述回文字符串是正反读都一样的字符,比如“level”,"noon"都是回文字符串。案例要求从键盘输出字符串,并判断字符串是否为回文字符串。案例分析判断一个字符串是否为回文字符串时常用的方法有两种使用递归来解决问题使用指针来解决问题案例实现方法二1,案例设计用两个指针分别指向字符串开头和字符串末尾,判断两个指针所指向的字符是否相同如果不相同直接返回0,表示此字符串不是回文字符串;如果相同,则把指向字符串的开头的指针加一,向后移动并指向下一个字符,同时把指向某位的指针减一,然后继续原创 2021-09-03 18:09:11 · 763 阅读 · 0 评论 -
【C语言】案例六十一 综合案例:密码
案例描述此案例要求设计一种算法,把电文加密之后变成密文,利用解密函数解密,显示出明文的内容。案例分析将电文每个字符加上偏移值3,以字符“itcast”为例,对应字符“i”为“l”,对应字符“t”为“w”.案例实现1,案例设计先设计一个while循环,在循环中实现加密或者解密定义两个字符数组,用来保存明文和密文;第一次进入程序,默认使用加密功能,再之后根据文字提示可进行解密、加密或者退出程序的功能、2,完整代码#include <stdio.h>#include <原创 2021-09-02 17:45:30 · 367 阅读 · 0 评论 -
【C语言】案例六十 字符串的其他常用函数【atoi()itoa()sprintf()】
在编程时有时需要将字符串转化为整数,或将整数转换为字符串,如将字符串表示的IP地址转化为十进制整数,就需要用到字符串与整数转化的函数。下面介绍两种字符串与整数的转换函数。atoi()函数此函数用于将一个数字字符串转换为十进制数,其函数原形如下:int atoi(const char* str);atoi()函数接收一个字符串作为函数,返回转换后的十进制数。如果转换失败,则返回0.需要注意的是,atoi()函数的声明位于stdlib.h文件中,因此需要使用include指令引用头文件stdlib原创 2021-09-02 11:26:05 · 160 阅读 · 0 评论 -
【C语言】案例五十九 检查字符串1中是否有字符串2
案例描述如题案例分析我们需要用到字符串查找的知识,解决思路分为三步:分别从键盘中输入str1和str2调用字符串查找函数来确定题目最后将结果输出到屏幕上必备知识字符串查找函数在程序中,经常需要从字符串中查找指定信息,比如,统计一段文字中某个词语出现的次数。C语言提供了strchr()函数、atrrchr()函数、strstr()函数来实现对字符串的查找功能,接下来将针对这三个函数进行详细解释。strchr()函数此函数用于查找指定字符在指定字符串中第一次出现的位置,其函数原型如下原创 2021-09-01 21:42:32 · 1725 阅读 · 0 评论 -
【C语言】案例五十八 字符串排序【strcmp函数strncmp函数选择排序】
案例描述案例要求对“c lanuage”,“hello world”,“itcast”,“strcmp”,"just do it"这五个字符串按照字母大小的排序,并将结果输出到屏幕上。案例分析此案例用到三个知识点:用指针数组构造字符串数组,使用指针数组中的元素指向各个字符串需要用字符串比较函数strcymp来比较字符数组中各元素的大小之后使用选择排序法进行由小到大的排序选择排序法1.选择排序法是将序列分为两段,有序前列和无序后列,每次查找无序后列中最大元素,将其插入到有序前列的最末尾处,原创 2021-09-01 21:31:56 · 2180 阅读 · 0 评论 -
【C语言】案例五十七 不使用strcpy函数进行复制操作
案例描述如题案例分析可以使用gets函数和puts函数进行复制操作,实现字符的获取和输出案例实现声明两个字符数组输入字符数组1后,通过循环将字符逐个输入字符数组2中打印完整代码#include <stdio.h>#include <stdlib.h>#include <string.h>#include <time.h>int main(){ char s1[50]; char s2[50]; int i = 0; pr原创 2021-09-01 17:35:59 · 1712 阅读 · 0 评论 -
【C语言】案例五十六 在指定位置插入字符【strncat()函数strncat()函数strcpy()函数】
案例描述案例要求输入一个字符串和一个要插入的字符,然后输入要插入的位置,在指定的位置插入指定的字符,并将新字符串输出到屏幕上。必备知识1,字符串连接失败在程序开发时,可能会将两个字符串进行连接,为此C语言提供了strncat()函数和strncat()函数来实现连接字符串的操作,讲解如下:(1)strncat()函数将一个字符串接到另一个字符串的后面,原型如下:char* strcat(char* dest,const char* src);表示将指针src指向字符串接到指针dest指向的原创 2021-09-01 17:18:55 · 6516 阅读 · 0 评论 -
【C语言】案例五十五 一句话中的单词数量
案例描述要求编程求出一句话中到底有多少单词。首先在屏幕上输入一句话,每个单词之间用一个空格隔开,要求第一个字符和最后一个字符都不能为空格;然后统计出这句话的单词数量,并把结果输出到屏幕上。案例分析本代码应实现以下功能:使用字符数组变量接收gets()函数获取的字符串计算字符数组中的空格数量,推算出此句话中的单词数量将统计结果输出案例实现1,案例设计首先使用gets()函数将输入的字符串保存在str数组中然后使用if语句判断用户输入的第一个字符是否为结束符,如果是,则要给出“这句话没原创 2021-09-01 11:28:27 · 771 阅读 · 0 评论 -
【C语言】案例五十二 字符串替换(二)【字符,字符串,字符数组】
案例实现1,案例设计自定义一个具有字符串替换功能的函数使用for循环从指定位置遍历字符串“Good moring”;用字符串“evening”中的字符逐一替换掉字符串“Good moring”中“morning字符串主函数中调用字符串替换函数最后将替换后的字符串输出到屏幕上2,完整代码#include <stdio.h>#include <stdlib.h>#include <string.h>#include <time.h>/原创 2021-09-01 09:14:25 · 1033 阅读 · 0 评论 -
【C语言】案例五十二 字符串替换(一)【字符,字符串,字符数组】
案例描述字符串替换是处理字符串时最常见的操作之一,也是学习字符串必须掌握的知识。本案例要求通过编程实现字符串“Good moring”到“Good evening”的转换。案例分析我们需要从字符串中被替换的位置开始,将要替换的内容逐个复制到原字符串中,直到字符串结束或者替换的字符串结束为止。为了顺利完成案例,需要先学习字符数组,字符串,字符指针等基础知识。必备知识1,字符数组字符数组是存放字符数据的数组,其中每一个元素都是单个字符(1)字符数组的定义字符数组定义的语法格式如下:char原创 2021-08-31 23:07:58 · 2557 阅读 · 0 评论 -
【C语言】案例四十九 学生档案管理系统
我仿佛已经明白了备受关注的密码所以你们期待已久的系统又来啦!(给我点赞!)案例描述本系统是学生档案管理系统,进入系统输入密码,若密码错误三次则退出程序,此外,有输入数据,查看数据,数据查询,数据保存,数据排序等多项功能完整代码://初始密码为123456#include "stdio.h"#include "string.h"#include "stdlib.h"#include "malloc.h"#define OP sizeof(stu) typedef struct stude原创 2021-08-27 10:50:51 · 2180 阅读 · 7 评论 -
【C语言】案例四十六 点名册(二)【strcpy()函数】
案例实现点名册中每个学生姓名都可以定义为一个字符数组,为了能统一操作点名册中的学生姓名,应使用指针数组,使数组中的每个指针都指向一个学生姓名。同时可以定义一个二级指针(数组指针),使该指针指向指针数组,使用二级指针读取点名册中的学生姓名。完整代码#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){ char buf[1024]; //普通数组,存储学生姓原创 2021-08-26 10:54:25 · 377 阅读 · 0 评论 -
【C语言】案例四十六 点名册(一)
案例描述案例要求编程实现一份基于指针的点名册,记录学生的姓名,并能实现学生姓名的输出;点名册中的学生姓名由多个字符组成,点名册中包含不止一名学生。案例分析将每个学生视为一个字符数组,则点名册中的内容可以视为多个字符数组的集合。如若每个学生姓名字节数都相同,那么点名册可以视为一个二维数组,但实际上,学生姓名字节可能各不相同。所以,需要考虑的问题有两个:如何使用不同长度的字符数组存储学生的姓名如何将多个存储学生姓名且长度不同的字符数组联系起来,使之成为一个整体考虑到学生姓名逐条储存,类似于二维数组原创 2021-08-26 09:00:33 · 452 阅读 · 0 评论 -
【C语言】案例四十五 数据表 [函数指针]
案例描述本案例主要讲解的主要知识有两个:一是函数指针,该知识将在选择求和函数时使用;二是指针与二维数组的联系。本案例中的存储基于二为数组,数据的获取利用数组指针,下面分别讲解这两个知识点:必备知识1,指针与二维数组在之前的案例中,我们学习了如何用指针引用一维数组,二维数组与多维数组同样有地址,也可以使用指针引用,只是因为其逻辑结构较一维数组复杂,所以操作也比较复杂。这里我们来介绍指针和二维数组的关系。假设要定义一个二行三列的二维数组,示例如下:int a[2][3] = {{1,2,3}{4,5原创 2021-08-24 23:44:43 · 443 阅读 · 0 评论 -
【C语言】案例四十三 幻方(魔方阵)
案例分析将从1到n方的的自然数,排列成纵横各有n个数的矩阵,使每行,每列,每条主对角线上的n个自然数之和都相等,这样的矩阵就是魔方阵,也称作幻方,本案例要求编写程序,实现奇数的幻方。案例设计矩阵的行数,列数,矩阵中的元素的数量都由n决定,在程序中设置scanf()函数,由用户手动控制幻方的规模。因为本案例为奇数幻方,如果输入的数不是奇数,则使用goto语句回到输出函数之前;因为本案例中元素数量不稳定,则使用malloc函数动态申请存储空间幻方中的数据按行序优先存储在malloc函数开辟的空间中,原创 2021-08-21 19:25:51 · 1125 阅读 · 0 评论 -
【C语言】指针大法好!
指针是C语言中一种特殊的变量类型,与其他类型的变量不同,指针存储的不是变量,而是变量的地址,正确的使用指针,可以使程序更为简洁高效。指针是C语言中的精髓,同时也是C语言中最难掌握的部分。指针与指针变量1,指针的概念如果在程序中定义一个int a ,那么编译器会根据变量类型,为其分配4个字节地址连续存储空间,若这块空间的首地址为0x0037FBCC,那么这个变量占据0x0037FBCC - 0x0037FBD0(十六进制)这四个字节的空间,0x0037FBCC就是这个变量的地址。因为通过变量的地址可以找原创 2021-08-18 10:08:00 · 98 阅读 · 0 评论 -
【C语言】案例三十八 双色球
案例描述双色球是中国福利彩票目前最火的一种玩法。每注投注号由六个红色号球和一个蓝色号球组成,红色号码从1~33中选择,蓝色从1-16中选择,每期开出的红色球号码不能重复,但蓝色球可以是红色球中的一个。案例分析显然需要用到之前学过的随机数知识,但是需要注意每期开出的号码不能重复,而使用随机函数可能会产生重复的号码,因此在编程时需要判断新生成的红色球号码是否已经存在,如果号码与已经生成的红色球号码重复了,则需要生成新的红色球号码。案例实现1.案例设计先使用系统定时器的值作为随机数的种子,为随机数的原创 2021-08-15 16:35:31 · 3688 阅读 · 5 评论 -
【C语言】案例三十七 矩阵转置
案例设计先分别输入数组的行数和列数然后逐个输入数组中的元素,元素个数为刚刚输入的行数与列数的乘积通过for循环进行转置最终将统计出的结果输出到屏幕上完整代码#include <stdlib.h>#include <stdio.h>int main(){ int i,j,n,m; int a[10][10],b[10][10]; printf ("请输入行数:\n"); scanf("%d",&n); printf ("请输入列数:\n"原创 2021-08-15 11:38:52 · 277 阅读 · 0 评论 -
【C语言】案例三十六 兔子去哪了?
案例描述一只小兔子躲进十个环形分布的洞中的一个。狼在第一个洞中没有找到兔子,就隔一个洞,到第三个洞去找。也没有找到,就隔两个洞,到第六个洞去找。以后每多一个洞去找小兔子,这样下去吃,如果一直找不到小兔子,请问兔子可能在哪个洞中。案例设计用数组记录每个洞对应的标记。在查找之前,将所有洞都标记为一,表示该洞尚未查找;若查找的洞里没兔子,将其标记为零。数组标记为一的洞是尚未被查找过的,兔子可能藏身的洞。查找步骤如下:(1)先设置数组中所有元素的初始值为1(2)然后用for循环穷举搜索,假设最大搜索次数为原创 2021-08-14 11:53:14 · 964 阅读 · 1 评论 -
【C语言】案例三十五 杨辉三角(二维数组)
案例描述杨辉三角样式如下:11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1本案例要求在屏幕上打印杨辉三角的前十行案例分析对杨辉三角的图形规律进行总结:第n行的数据有n项每行端点数为1,最后一个数也为1每个数等于它左上方和上方的两数之和每行数字左右对称,由1开始逐渐增大根据以上总结的规律,可以将杨辉三角看做一个二维数组,并使用双层循环控制程序流程,为数组中的元素逐一赋值:即arr[i][j] = arr[i - 1][j - 1] + arr[i原创 2021-08-14 11:21:54 · 1165 阅读 · 0 评论 -
【C语言】案例三十四 校园十大歌手(冒泡排序)
案例分析首先将每位歌手的得分储存到一维数组中,其次构建一个排序函数,使用函数实现对一维数组的排序,因此需要将一维数组作为函数函数参数传入函数。必备知识一维数组作为函数参数在程序中,为了方便对数组的操作,经常会定义一些操作数组的功能函数,这些函数将数组作为函数参数,在数组作为函数参数时,必须要保证形参与实参的数组是相同类型,且有明确的数组说明。如数组维度,数组大小等。例如下面两种参数类型:func(int arr[5]);func(int arr[],int n);这两种参数类型都指定了原创 2021-08-12 22:00:48 · 2361 阅读 · 0 评论 -
【C语言】案例三十三 【二维数组】神奇魔方阵
害,神奇魔方阵。让我想起了我做过的快乐暑假······案例描述古代又称“纵横图”,就是指由自然数组成的方阵。编程要求实现一个5行5列的魔方阵。必备知识二维数组的定义与初始化在实际工作中仅仅使用一维数组是远远不够的,这时可以用二维数组,定义方式与一维数组相似,代码如下:数据类型 数组名[常量表达式1] [常量表达式2] 二维数组是按照 行 进行储存的先存放a[0]行,再是a[1],a[2]等。完成二维数组的定义后要进行初始化:初始化二维数组的方式有三种1)按行给二维数组赋值int原创 2021-08-12 17:28:43 · 1798 阅读 · 0 评论 -
【C语言】案例三十二 【数组】投票
案例描述已知有三位候选人参与竞选,先输入参与投票的人数和投票的内容,统计出三位候选人的最终得票,然后根据每个人总票数的高低来确定谁当选学生会主席。(一维数组经典案例)案例设计定义储存投票内容的数组变量,以及储存三位候选人的变量输入参与投票的人数和投票的内容,将内容储存到数组中。对存储到数组中的元素进行判断,统计出各候选人的票数根据三位各自的票数确定胜利者是谁最终将胜利者输出到屏幕上完整代码#include <stdlib.h>#include <stdio.h>原创 2021-08-11 10:12:26 · 2649 阅读 · 0 评论 -
【C语言】案例三十一 数组的非法操作
对于基本数据类型,相同的类型的变量可以进行加减,比较运算,但对于数组,即使是相同的类型,相同大小的数组,有些操作也是非法的,具体如下:用一个已经初始化的数组为另一个数组赋值int x[5] ={1,2,3};int y[5] ;y = x ;//错误操作 对数组进行整体输入输出int x[5] ={1,2,3};printf("%d",x);//错误操作 int y[5] ={4,5,6};printf("%d %d %d",y[0],y[1],y[2]);//正确操作 数原创 2021-08-11 09:36:23 · 881 阅读 · 0 评论 -
【C语言】案例三十 【数组】最大值和最小值
案例描述本案例要求先输入数组的大小和各个数组元素,然后求出数组中的最大值和最小值以及他们所在的位置,依次输出到屏幕上案例分析本案例是应用一位数组的典型案例。C语言中规定,只能逐个引用数组中的元素,而不能引用整个数组。在对数组进行判断时,只能通过循环对数组元素进行逐个引用,获取每一个元素值进行两两比较,找出其中的最大和最小元素。必备知识一维数组的定义与初始化一位数组也称向量,他以组织具有一位顺序关系的一组同类型数据。在C语言中,一维数组的定义方式如下所示:数据类型 数组名[常量表达式]原创 2021-08-10 22:07:17 · 6807 阅读 · 0 评论 -
字符数组与字符串常量
C语言编译的易错点:字符数组与字符串常量的区别原创 2019-04-12 10:30:57 · 274 阅读 · 0 评论 -
用程序判断指针在数组中加法后所增加的字节?
用程序判断指针在数组中加法后所增加的字节?在编程之前,我们先列举各种指针所占字节在32位编译器中,所有指针都占有四个字节在64位编译器中,所有指针都占有八个字节本博客在32位环境下完成char *p++ ->增加一个字节short *p++ ->增加两个字节int *p++ -> 增加四个字节float *p++ ->增加四个字节long *p++ -&g...原创 2019-03-30 19:59:46 · 137 阅读 · 0 评论 -
数组逆置
数组逆置是一项很重要的技能,在交换同时需要注意如何将数组完整输出原创 2019-03-30 11:00:04 · 293 阅读 · 2 评论