第5章 数组(2)_字符串
C语言程序设计PPT课件 第5章 数组程序设计
5.1.4 数值型一维数组的初始化
例5-3 用一维数组生成Fibonacci数列的前20项,并输出。
#include<stdio.h> void main() {
long int fib[21]; int i; fib[1]=1; fib[2]=1; for(i=3;i<=20;i++)
{
if(str[i]>='0'&&str[i]<='9')
digital[j++]=str[i];
i++;
}
digital[j]='\0';
printf("Output: %s\n",digital);
}
C语言程序设计(第3版)张磊编著 清华大学出版社
/* program e5-6.c*/
5.2.1 字符##串iinncc的lluudd输ee<<入ssttrd输iniog出.h.h>>
}
for(i=0;i<N;i++) printf("%d ",a[i]);
}
C语言程序设计(第3版)张磊编著 清华大学出版社
5.1.4 数值型一维数组的初始化
数组的初始化,是在定义数组的时对数组的各个元素赋初值。 1. 全部元素的初始化 格式
数据类型 数组名[数组长度]={数组全部元素值表} 数据类型 数组名[]={数组全部元素值表} int a[6]={10,20,30,40,50,60}; float r[]={12.5,-3.11,8.6}; 2. 部分元素的初始化 格式 数据类型 数组名[数组长度]={数组前部元素值表} int b[10]={1,2,3}
《刘大有数据结构》 chapter 5 数组字符串和集合类
再例如三维数组 再例如三维数组D[3][3][4],可以把它看作一维 , 数组 B1[3] = { D[0][3][4],D[1][3][4],D[2][3][4] } , ,
下面我们给出一个 下面我们给出一个Array类的应用例子 类的应用例子. 类的应用例子 例5.1 编写一个函数,要求输入一个整数 , 编写一个函数,要求输入一个整数N, 用动态数组A来存放 来存放2~ 之间所有 之间所有5或 的倍数 的倍数, 用动态数组 来存放 ~N之间所有 或7的倍数, 输出该数组. 输出该数组 说明 : 因为 由用户给出 , 编写程序时无法知 说明:因为N由用户给出 由用户给出, 道需要多大的数组来存放数据, 道需要多大的数组来存放数据,因此采用动态 数组(初始时大小为10) 数组(初始时大小为 ),每当数组满时就调 整数组大小,给它增加10个元素 个元素. 整数组大小,给它增加 个元素
数组在内存中一般是以顺序方式存储的 数组在内存中一般是以顺序方式存储的. 设一维数组 设一维数组A[n]存放在 个连续的存储单元中 , 存放在n个连续的存储单元中 存放在 个连续的存储单元中, 每个数组元素占一个存储单元(不妨设为C个 每个数组元素占一个存储单元 ( 不妨设为 个 连续字节) 如果数组元素A[0]的首地址是 , 的首地址是L, 连续字节). 如果数组元素 的首地址是 则 A[1] 的 首 地 址 是 L+C , A[2] 的 首 地 址 是 L+2C,… …,依次类推,对于 0 ≤ i ≤ n 1 有: , ,依次类推,
B[i]={ A[i][0],A[i][1],…,A[i][n-2],A[i][n-1] } -
C#教程——05第5章 数组
本页已使用福昕阅读器进行编辑。
福昕软件(C)2005-2007,版权所有,仅供试用。
第5章数组如果需要使用同一类型的多个对象,就可以使用集合和数组。
C# 用特殊的记号声明和使用数组。
Array类在后台发挥作用,为数组中元素的排序和过滤提供了几个方法。
使用枚举器,可以迭代数组中的所有元素。
本章讨论如下内容:●简单数组●多维数组●锯齿数组●Array类●数组的接口●枚举5.1 简单数组如果需要使用同一类型的多个对象,就可以使用数组。
数组是一种数据结构,可以包含同一类型的多个元素。
5.1.1 数组的声明在声明数组时,应先定义数组中元素的类型,其后是一个空方括号和一个变量名。
例如,下面声明了一个包含整型元素的数组:int[] myArray;5.1.2 数组的初始化声明了数组后,就必须为数组分配内存,以保存数组的所有元素。
数组是引用类型,所以必须给它分配堆上的内存。
为此,应使用new运算符,指定数组中元素的类型和数量来初始化数组的变量。
下面指定了数组的大小。
第5章数组提示:值类型和引用类型请参见第3章。
myArray = new int[4];,如图5-1所示。
在声明和初始化警告:在指定了数组的大小后,如果不复制数组中的所有元素,就不能重新设置数组的大小。
如果事先不知道数组中应包含多少个元素,就可以使用集合。
集合请参见第10章。
除了在两个语句中声明和初始化数组之外,还可以在一个语句中声明和初始化数组:int[] myArray = new int[4];还可以使用数组初始化器为数组的每个元素赋值。
数组初始化器只能在声明数组变量时使用,不能在声明数组之后使用。
int[] myArray = new int[4] {4, 7, 11, 2};如果用花括号初始化数组,还可以不指定数组的大小,因为编译器会计算出元素的个数:int[] myArray = new int[] {4, 7, 11, 2};使用C# 编译器还有一种更简化的形式。
第5章-串
子串,s旳串值变化。
5-2 串旳表达和实现
一.串旳顺序存储
1.存储方式:同一般旳线性表旳顺序存储构 造完全相同.用一组地址连续旳存储单元存 储字符序列, 据预定义大小,为每个定义旳串 变量分配一种固定长度旳存储区。
2.索引存储旳例子 设字符串:A=”Red” B=”Yellow” C=”Blue” D=”White” 用指针free指向堆中未使用空间旳首地址。
索引表: Name A B C D ……
Length 3 6 4 5 ……
Stradr 0 3 9
……
free 堆:
R e d Y e l l o w B l u E Wh i t e …
为 len 旳子串。而且赋予给s2,len=0得到旳是空串。 【例5-7】 SubStr ("abcdefghi",3,4) = "cdef”
4. 串比较: Strcmp (s1,s2) 操作条件:串s1,s2存在。 操作成果:若s1= =s2,返回值为0;若s1<s2, 返
回值<0;若s1>s2, 返回值>0。
(2)使用gets() 函数
格式为:gets(字符数组名); 【例5-3】 char str[10]; printf("Input your str: "); gets(str);
•使用gets ()方式输入时,字符串中允许具有空
格。
2.字符串旳输出
字符串旳输出也有两种措施:
(1)使用printf () 函数 使用printf () 函数时,输出格式中要设置"%s",再
止符,以此表达串旳结尾。例如C语言中处理定长串旳措施
[工学]《C语言程序设计》第5章___数组、字符串、指针
5.2.2 一维数组的初始化
1、数组声明时初始化 在编译阶段进行的。这样将减少运行时间, 提高效率。 数组初始化的一般形式为: 类型符 数组名[常量表达式]={值,值…值}; 例如: int a[10]={ 0,1,2,3,4,5,6,7,8,9 }; 相当于a[0]=0; a[1]=1;... a[9]=9;
…
a[9]
#include <stdio.h> 声明有10个元素 void main() 的一维数组a {int n,i; float s=0, ave, a[10]; a[0] a[1] … a[9] for(i=0;i<10;i++) a[i] { scanf("%f",&a[i]); a[i] s=s+a[i]; } ave=s/10; for(i=0;i<10;i++) a[i] a[i] if (a[i]>ave) printf("%f ",a[i]); }
说明: ① int a[10]={0,1,2,3,4};
给前5个元素赋 值,其余赋0值 不能给数组整体 赋值,改成{1} 静态存储类型, 初值为0 可以省略数组元 素个数。 初值的个数不能 超过元素个数
② int a[10]=1;
③ static int a[3]; ④ int a[ ]={1,2,3,4,5}; ⑤ int a[5]={1,2,3,4,5,1 };
代码: for(i=0; i<N-1; i<5; i++) { p=i; for(j=i+1; i<N; j<6; j++) if(a[j]<a[p]) p=j; t=a[i]; a[i]=a[p]; a[p]=t; } 5-5.c
第5章 数组(C++版) 第三节 字符数组和字符串类型02
【分析】 首先要将给定的原文保存在字符数组里。然后,在原文中,从头开始寻找字符A,找 到一个字符A,便将其替换成字符B;继续寻找下一个字符A,找到了就替换,……,直到 将原文都处理完。如下程序只能处理单个字符替换,无法处理单词替换,I U中间只能有 一个空格。getchar()输入的使用方法详见教材的第二章第四节,单词替换详见《信息学 奥赛一本通拓展教程》。 程序如下: #include<cstdio> #include<iostream> using namespace std; int main() { char st[200]; char A,B; int i,n=0; while((st[n++]=getchar())!='\n') //将原文存放在字符数组st中 A=getchar();getchar();B=getchar(); //读取A和B,中间getchar()读空格 for (i=0;i<n;i++) if (st[i]==A) cout<<B; else cout<<st[i]; cout<<endl; return 0; }
#include<iostream> #include<iomanip> using namespace std; int main() { for (char letter='a'; letter<='z'; letter+=2) cout<<setw(3)<<letter; cout<<endl; for (char letter='z'; letter>='a'; letter-=2) cout<<setw(3)<<letter; return 0; }
第5章 串
【例5-8】子串定位 例 IndexStr ("abcdebda","bc")=2 " "" " IndexStr ("abcdebda","ba")= 0 " "" " 6. 串插入 InsStr (s,t,i) 操作条件: , 存在 操作条件:串s,t存在 操作结果:将串 插入到串 的第i个字符前 的串值发 插入到串s 个字符前, 操作结果:将串t插入到串 的第 个字符前,s的串值发 生改变. 生改变. 7. 串删除 DelStr(s,i,len) 操作条件: 存在 操作条件:串s存在 操作结果:删除串 中第i个字符起长度为 的子串, 个字符起长度为len的子串 操作结果:删除串s 中第 个字符起长度为 的子串,s 的串值改变. 的串值改变.
5-1-2 串的输入与输出 1.字符串的输入 . 语言中, 在C语言中,字符串的输入有两种方法: 语言中 字符串的输入有两种方法: (1)使用 )使用scanf () 函数 使用scanf () 函数时,输入格式中要设置"%s", 函数时,输入格式中要设置" ", 使用 再加上字符数组名称. 再加上字符数组名称. 【例5 - 2 】 char str[10]; printf(" printf("Input your str: "); scanf("%s" scanf("%s",str); 使用 使用scanf ()方式输入时,字符串中不能含有空格. 方式输入时, 方式输入时 字符串中不能含有空格. 在C++中还可以用输入流对象cin . C++中还可以用输入流对象 中还可以用输入流对象cin
《数据结构——用C语言描述(第二版)》第5章 数组和广义表
第五章 数组和广义表
在压缩存储时,矩阵中值相同的元素C可共享一个存储空间,元素 为零则可不必分配空间,而其余的元素有 n(n+1)/2个,因此三角矩阵 可用一维数组M[n×(n+1)/2+1]来存储,其中常数C放在数组的最后一 个下标变量中。
假设A和B矩阵分别用matrix型指针变量a和b表示,矩阵的转置可以 按以下进行:由于B的行是A的列,所以可按照b->data三元组表的次序在 a->data中找到相应的三元组进行转置,即可按a->data的列序转置,所得 到的转置矩阵B的三元组表b->data必定是按行优先存放的。因此,可以对 三元组表a->data从第一行起扫描,找到A的每一列中所有的非零元素,就 可以实现转置。
LOC ( aij ) =LOC ( a00) +(i×n+j) × c 同理可推导出以列为主序优先存储时数据元素a i j 的存储地址,其计算公式 为:
LOC( a i j ) =LOC( a00 ) +( j × n +i ) × c 对于三维数组Am×n×p而言,若以行为主序优先存储时,则其数据元 素aijk的存储地址可为: LOC ( a i j k) =LOC ( a000) +[ i × m×p +j ×p +k] × c 对于一般的二维数组A[c1…d1,c2…d2]而言,此处c1,c2的值不一定是 0,a i j 的地址为: LOC ( a i j ) =LOC ( a c 1 c 2 ) +[ ( i – c 1 )* ( d 2 – c 2 +1) +j – c 2 ] * c
实用教程习题集 第5章
第5章数组、字符串和枚举5. 2例题【例5-1】编写一个程序实现如下方法:(1)求一个数组的最大元素值:public static int maxElement(int a[])。
(2)求一个数组的所有元素平均值:public static int average(int a[])。
(3)查找某个数在数组中的位置:public static int search(int a[],int b)。
利用随机数产生20个整数给一个数组赋值,分别验证以上方法。
【例5-2】字符串String对象的比较。
假设有以下代码:String s1=”hello;String s2="hello";String s3=new String("hello");那么,以下1~4个表达式语句的值分别是什么?1. s1==s2;2. s1==s3;3. s1.equals(s2);4. s1.equals(s3);【例5-3】枚举类型应用程序的示例:enum Season{春季,夏季,秋事,冬}public class EnumDemo{public static void main(String args[]){Season [] sa=Season.values();for(int i=0;i<sa.length;i++){switch(sa[i]){case: 春季System. out. println("春季花满天”);break;case: 夏季System. out. println(夏季热无边“);break;case: 秋季System. out. println(“秋季果累累");break ;case冬季System. Ou.tprintln("冬季雪皑皑”);break;} //switch结构结束} //for循环结束} //方法main结束} //类EnumDemo结束5. 3练习题5. 3. 1判断题1. 数组是Java基本类型的一种。
C语言 第5章 数组
北京科技大学
2014-10-10
5.2.4 一维数组应用举例
【例5-2】设计一个程序,将n个人某门课程的成绩输入计 算机后输出最高分和最低分。 思路:①首先将n个人的成绩输入到一个一维数组中。 ②求若干个数的最大值或最小值常采用打擂台的方法: 首先指定某数为最大值或最小值的擂主: 如:max=a[0], min=a[0] 将其他各数依次与擂主进行比较(循环嵌套分支),
2014-10-10
5.1概述(续)
2.数组与数组元素的概念
数组:一组相同类型的数据的集合,数组的名字就称为数 组名。 如定义:float a[10]; a是数组名。 下标变量(或数组元素):数组中的每个数据用下标进行 区分,这些变量称为下标变量或数组元素。 如:a[0]、a[1]…a[i]。 每个数组元素相当于一个简单变量,数组的类型也就是该 数组的数组元素的数据类型。 数组属于构造类型。构造类型的数据是由基本类型数据按 一定规则构成的。
91.5 34.5 67.5 72.0
84.0
score[0]
score[1]
score[2] score[3] score[4]
组如 范果 围引 会用 破的 坏数 其组 他元 变素 量超 的出 值数 。
5.2.3 一维数组的初始化
初始化:在定义数组时给数组元素赋初值。
1.在定义数组时,对全部数组元素赋初值 例如:int a[5]={0,1,2,3,4}; 此时可以省略数组长度,例如:int a[ ]={0,1,2,3,4}; 2.在定义数组时,对部分数组元素赋初值 例如:int a[5]={1,2,3};系统为其余元素赋 0 。 3.当初值的个数多于数组元素的个数时,编译出错 例如: int a[5]={0,1,2,3,4,5};
《高级语言程序设计》课程教学大纲
《高级语言程序设计》课程教学大纲56学时 3.5学分一、课程的性质、目的及任务《高级语言程序设计》是计算机科学与技术、电子信息科学与技术和信息安全专业的一门专业基础课,目的是主要培养运用C++语言进行程序设计的能力。
本课程一方面讲述C++语言的基本特性,包括指针、数组、函数、类、对象、派生类、继承、流类库等内容,另一方面系统地介绍面向对象程序设计的基本概念、分析方法、设计方法和编程方法。
具体的教学任务为:1.准确描述问题、分析问题,以及运用计算思维解决问题的能力。
2.正确理解和使用C++语言的基本数据结构和语法,掌握面向对象程序设计的基本思想和方法,进行正确、完善的程序设计的能力。
3.使用C++语言集成开发环境完成面向对象程序的编写、调试的任务。
二、适用专业计算机科学与技术专业、电子科学与技术专业、信息安全专业三、先修课程信息技术概论四、课程的基本要求掌握选择、循环等c++的基本语句;掌握数组、指针等数据类型;掌握函数、对象、文件等程序的组成成分;掌握面向对象程序设计的基本思想,能独立分析问题并编程实现;掌握Visual c++ 6.0程序设计环境的基本用法,能进行程序的编写、调试和运行。
五、课程的教学内容第1章C++基础[知识点]面向对象编程特点、程序设计环境[重难点]1.教学重点C++程序的编写和实现2.教学难点(1)面向对象编程特点(2)C++上机实践[教学内容](1)程序设计语言的发展:讲解机器语言到高级语言的特点(2)面向对象编程:讲解程序设计的范式(过程型、面向对象型)(3)C++的特点:高级语言(4)C++程序的构成和书写形式:程序结构、书写规范(5)C++程序设计和实现:程序设计各阶段的任务(6)程序设计环境:程序设计的实例[教学要求](1)对面向对象概念只作概念性的描述,无需深入讲解(2)以实例讲解C++程序特点和程序设计环境第2章基本数据类型与运算符[知识点]数据类型、运算符[重难点]1.教学重点C++的运算符2.教学难点表达式的书写与计算[教学内容](1)C++的数据类型(2)常量与变量(3)C++的运算符[教学要求]要求学生熟练掌握运算符及其优先级第3章程序控制[知识点]结构化程序设计、结构控制语句[重难点]1.教学重点(1)C++的输入与输出(2)关系运算和逻辑运算(3)选择结构和if语句(4)条件运算符和条件表达式(5)多分支选择结构和switch语句(6)循环结构和循环语句(7)循环的嵌套2.教学难点(1)多分支选择结构和switch语句(2)循环的嵌套[教学内容](1)C++程序和语句(2)C++的输入与输出(3)关系运算和逻辑运算(4)选择结构和if语句(5)条件运算符和条件表达式(6)多分支选择结构和switch语句(7)循环结构和循环语句(8)循环的嵌套(9)break语句和continue语句[教学要求](1)要求学生掌握程序设计环境的使用方法,能独立进行程序设计。
第5章 数组
说明
► “类型说明符”、“数组名”及“常量表达
式”的含义与一维数组中的相关定义相同。 ► 二维数组中有两个下标,每一维的下标都 是从0算起。
第16页
共49页
5-2-2 二维数组元素的引用
► 二维数组元素的引用格式为: ► 数组名[行下标表达式][列下标表达式]
第17页
共49页
说明
► 字符数组的定义 ► 字符数组的初始化 ► 字符数组的引用
► 字符串和字符串结束标志
► 字符数组的输入输出
► 字符串处理函数
► 字符数组的应用
第23页 共49页
5-3-1 字符数组的定义
► 字符数组的定义与前面介绍的数值数组的
定义类似。
第24页
共49页
5-3-2 字符数组的初始化
► 逐个字符赋值 ► 用字符串对字符数组赋初值
第42页 共49页
5-4 程序案例
► 筛选完成后,筛子中剩下的即为素数。 ► #include <stdio.h> ► main() ►{
► ►
int i,a[100]; /*筛子数组*/ int i,n=0; /*n为素数个数,用于输出格 式控制*/ ► int minp,doub; /* minp为筛选种 子,doub为倍数*/ ► for(i=0;i<100;i++) /*建立筛子*/
第27页
共49页
5-3-3 字符数组的引用
► 字符数组的引用和前面几节数组的引用没
有什么区别,也是通过对数组元素的引用 实现的,每次得到一个字符,只是要注意 数据元素的类型现在是字符型。
第28页
共49页
5-3-4 字符串和字符串结束标志
09-第5章-数组-2 苏州大学VB
5
3. 数组编程 数组编程(2)
4)在一组给定的数中查找指定的数,用顺序 )在一组给定的数中查找指定的数, 查找法编程
– P122-例5-8 例
5)随机产生10个正整数,用选择排序对其进 )随机产生 个正整数 个正整数, 行排序(升序) 行排序(升序)
– P123-例5-9 例 – 思路、关键点、算法的不足与改进 思路、关键点、
第5章 数组的应用 章
(二)
苏州大学计算机学院 陈建明
jmchen@
1
主要内容
1. 数组定义 数组定义(2) 2. 数组元素上、下界测试函数 数组元素上、 3. 数组编程(2) 数组认下标的起始值从 开始 定义默认下标的起始值从1开始
– 语句:Option Base 1 语句:
• 定义下标的取值范围
– [下标下界 to ] 下标上界 下标下界 – 省略 下标下界 to ] 时,下界从 或1开始 省略[下标下界 下界从0或 开始
• 下标的取值范围
– 长型整数:-2147483648--2147483647 长型整数:
3
2.数组元素上、下界测试函数 数组元素上、 数组元素上
7
上机实验8 上机实验
1. 分别用选择排序法和直接排序法对产生的 20个随机正整数进行降序排例,要求输 个随机正整数进行降序排例, 个随机正整数进行降序排例 出原始数和排好序的数 2. 产生 个互不相同的小于 的正偶数, 产生20个互不相同的小于 的正偶数, 个互不相同的小于50的正偶数 要求结果输出到Form或 TextBox控件中 要求结果输出到 或 控件中 3. 统计一段文本中各字母(区分大小写)出 统计一段文本中各字母(区分大小写) 现的次数
第5章 数组
练
习
练习5-3:从键盘输入10个整数,将其存入数组a中,再输
入一个随机值k,然后在数组中查找k在数组a中出现的次 数。
练习5-4: 从键盘输入10个整数,分别统计其中正数、负
数和0的个数。
5.3 二维数组
5.3.1二维数组的定义 二维数组定义的一般形式为: 类型名 数组名[常量表达式1][常量表达式2];
5.2 一维数组
5.2.5一维数组的应用 for(i=0;i<9;i++) { for(j=0;j<9-i;j++) /*进行9次循环,实现9轮比较*/ /*在每一轮比较中,进行9-i次比较*/
{ if(a[j]>a[j+1]) /*相邻两个数比较*/ { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } } printf("The sorted number:"); for(i=0;i<10;i++) printf("%8d",a[i]5一维数组的应用
原始 数据 8 6 9 7 2 8 6 9 7 2
第二趟比较 3次 第三趟 比较2次
第四 趟比 较1次
第一趟比较4次
排序 后的 数据
6 8 9 7 2
6 8 9 7 2
6 8 7 9 2
6 8 7 2 9
6 8 7 2 9
6 8 7 2 9
6 7 8 2 9
第5章
数组
信息学院计算机基础组
本章主要内容:
1. 一维数组 2. 二维数组 3. 字符数组 4. 字符串处理函数 5. 用文件处理数据
5.1 引例
C%2b%2b教程,从入门到精通,chap-05
运算符
• “& ”和“* ”
– “&”是一个单目运算符,后面跟一个变量,表示 是一个单目运算符,后面跟一个变量,
取后面变量的地址; 取后面变量的地址; – “*”也是一个单目运算符,后面跟一个变量,这 也是一个单目运算符,后面跟一个变量, 个变量通常是一个指针变量, 个变量通常是一个指针变量,表示取这个指针变 量所指向变量的值
多重间接访问
• 如果一个指针中保存的是另一个指针的地址
的话, 的话,那么这个指针就是一个指向指针的指 实现的是二次间接访问。 针,实现的是二次间接访问。 • 间接访问的次数可以无限地增加下去,但是 间接访问的次数可以无限地增加下去, 一般情况下, 一般情况下,很少有用到三次或者三次以上 的间接访问。 的间接访问。
字符串比较函数strcmp 字符串比较函数strcmp
• 字符串之间比较的规则是:两个字符串从左 字符串之间比较的规则是:
至右逐个字符比较, 至右逐个字符比较,直到遇到不同的字符或 者遇到字符串结束标志为止。 者遇到字符串结束标志为止。如果两个字符 串完全相同,那么就认为相等;如果不同, 串完全相同,那么就认为相等;如果不同, 那么第一个不同的字符相比较的结果就是字 符串比较的结果。 符串比较的结果。 • if(strcmp(str1,str2)==0)cout<<"str1等于 if(strcmp(str1,str2)==0)cout<<"str1等于 str2";
指针的定义
• 指针是用于存储地址的对象。如果x是一个指 指针是用于存储地址的对象。如果x
针,它保存了变量y的地址,那么就称x是一 它保存了变量y的地址,那么就称x 个指针变量, 指向y 个指针变量,x指向y。 • 定义指针变量的方法是: 定义指针变量的方法是: –数据类型 *指针变量名; 指针变量名; –其中,“数据类型”表示的是指针变量中用以指 其中, 数据类型”
Python实用案例教程 第5章 数组
#修改第1行为[11,22]。
#修改第1个元素"
4. 删除
可以根据需要删除已经创建的数组的元素。 例如: >>> a = np.array([[1,2],[3,4],[5,6]]) >>> np.delete(a,1,axis = 0) array([[1, 2], [5, 6]]) >>> np.delete(a,(1,2),0) array([[1, 2]]) >>> np.delete(a,1,axis = 1) array([[1], [3], [5]]) #删除a的第2行 #删除a的第2,3行 #删除a的第2列
3. 修改
可以根据需要修改已经创建的数组的元素值。 例如: >>> a = np.array([[1,2],[3,4],[5,6]]) >>> a[0] = [11,22] >>> a array([[11, 22], [ 3, 4], [ 5, 6]]) >>> a[0][0] = 100 >>> a array([[100, 22], [ 3, 4], [ 5, 6]])
可以在创建数组包含的元素基础上增加元素,增加元素的方式有多种,通过hstack函数能将两个 多维数组在水平方向上堆叠,通过vstack函数能将两个多维数组在垂直方向上堆叠。 例如:
>>> import numpy as np >>> a = np.array([[1,2],[3,4],[5,6]]) >>> b = np.array([[-1,-2],[-3,-4],[-5,-6]]) >>> c=np.vstack((a,b)) >>> c array([[ 1, 2], [ 3, 4], [ 5, 6], [-1, -2], [-3, -4], [-5, -6]]) >>> d=np.hstack((a,b)) >>> d array([[ 1, 2, -1, -2], [ 3, 4, -3, -4], [ 5, 6, -5, -6]]) >>> a1 = np.array([[1],[2]]) >>> a1 #一个2行列向量 array([[1], [2]]) >>> b1=[10,20,30] #一个3列行向量 >>> a1+b1 #生成2行3列矩阵 array([[11, 21, 31], [12, 22, 32]])
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
11/30
模仿练习: 模仿练习:
输入一个以回车结束的字符串(少于 个字符 输入一个以回车结束的字符串 少于80个字符 ,统 少于 个字符), 计其中数字字符的个数。 计其中数字字符的个数。
12/30
#include <stdio.h> int main() 模仿练习 源程序 { int count, i; char str[80]; Enter a string: It's 512? printf("Enter a string: "); count = 3 gets(str); count = 0; for(i = 0; str[i] != ‘\0’; i++) //若是数字 ’ 若是数字 if(str[i] <= '9' && str[i] >= '0') count++; printf("count = %d\n", count); return 0; s I t ' s 5 1 2 \0 ? ? } 0 1 2 3 4 5 6 7 8
5.3 字符数组与字符串
Wang Li 如何让程序存储我的姓名?
char a='W'; char b='a'; char c='n'; char d='g'; char e='L'; char f='i';
char name[15] ={ 'W', 'a', 'n', 'g', 'L', 'i'};
16/30
思路分析 方法3:如果一个非空格后是一个空格, 方法 :如果一个非空格后是一个空格,一定 是单词的结束 this is my first test! 最后一个单词没算上? 问:最后一个单词没算上? 再加1就行 答: count再加 就行!?? 再加 就行!?? 再问:若最后一个单词后有空格会怎样? 再问:若最后一个单词后有空格会怎样? 就又多了1 就又多了
例13 进制转换
输入一个以回车结束的字符串(少于 个字符),把字符串 个字符), 输入一个以回车结束的字符串(少于80个字符),把字符串 中的所有数字字符( 中的所有数字字符(0~9)转换为整数,去掉其他字符。 )转换为整数,去掉其他字符。 例如,字符串”3a56bc”,转换后的整数为 转换后的整数为356 例如,字符串 转换后的整数为 难点分析: 如何将字符串转化为整数值? 例如字符串”356“转换为整数356 (1)遇到第一个整数3, d=3; (2) 遇到第二个整数5, d=d*10+5=35 (3) 遇到第三个整数6, d=d*10+6=356 ………. str[i]中存的是字符, str[i]-’0’将其转化为对 将其转化为对 应的十进制数字
字符串可按如下方式声明并初始化: char name[15]={ 'W', 'a', 'n', 'g', 'L', 'i', '\0'}; char name[15] = "WangLi";
手工加入一个空字符 系统将自动加入一个空字符
char password[] = "12345678";
省略数组大小,系统自动计算,大小为后 面的字符总数加1,最后一个元素存入一个 空字符。
15/30
例14 统计单词个数
方法1:统计空格数?? 方法 :统计空格数?? 问题: 问题:没多个空格相连的情况 方法2:如果一个空格紧跟一个非空格, 方法 :如果一个空格紧跟一个非空格,一定是新单 词开始 this is my first test! 算上? 问:第一个单词是否算上? 再加1就行 答: count再加 就行!?? 再加 就行!?? 再问:若第一个单词前有空格会怎样?就又多了1 再问:若第一个单词前有空格会怎样?就又多了
char t[5]={'H', 'a', 'p', 'p', 'y'};
初始化数组 t
输出数组 t 的所有元素
t
H a p p y t[0] t[1] t[4]
for(i=0; i<5; i++) putchar( t[i] );
2/30
5.3.2字符串 字符串
字符串常量 字符串常量是双引号括起的任意字符序 "Hello World" 列 "WangPing"
18/30
#include<stdio.h> int main() { char str[1000]; int i, word, count; word=0; count=0; gets(str); for(i=0; str[i]!='\0'; i++) { if(str[i]==' ' ) word=0; if(str[i]!=' ' && word==0) //新单词出现 新单词出现 { count++; word=1; } } printf("%d\n",count); }
14/30
d=0; for(i=0; str[i] != '\0‘; i++) { if( str[i] >=‘0’ && str<=‘9’ ') d=d*10+(str[i]-’0’) }
#include <stdio.h> int main() { int d, i; char str[80]; printf("Enter a string: "); gets(str); d = 0; for(i = 0; str[i] != '\0'; i++) //若是数字 //若是数字 if(str[i] <= '9' && str[i] >= '0') d = d*10 + (str[i] - '0') printf(“d = %d\n", d); return 0; }
字符串由有效字符和字符串结束符 '\0' 组成
s
H a p p y \0 ? ? s[0] s[1] s[5]
4/30
字符串与字符数组
在C语言中没有专门的字符串变量,通常 语言中没有专门的字符串变量, 用一个字符数组来存放一个字符串 字符数组和字符串的区别是: 字符数组和字符串的区别是:字符串的末 尾有一个空字符 ‘\0’
W a n g
L i \nБайду номын сангаас
\0
7/30
方法2: 方法 :用%s整体输入输出 整体输入输出
char name[10]; scanf("%s", name); printf("%s", name);
格式描述串中使用转换 字符串“%s”
Wang Li Wang
使用 scanf 时, 不能输入空格
空格是%s输入结束的标志 n g \0
用字符数组
用若干个字符 用字符串char name[15]= “Wang Li”;
1/30
5.3.1 一维字符数组
一维字符数组的定义、引用、 一维字符数组的定义、引用、初始化与其他类型 的一维数组一样。 的一维数组一样。
char str[80];
定义一个含有80个字符型元素的数组 定义一个含有 个字符型元素的数组str 个字符型元素的数组
10/30
#include <stdio.h> int main() { C is a programming language char str[81]; int i, count = 0; printf("\n 请输入一行字符:\n "); 其中的空格总数为 4 gets(str); for(i=0; str[i] != '\0‘; i++) 也可用while 循环 在循环执行时,扫描整个数组以 { i = 0; 统计出空格 ‘ ‘ 的数量,直到 if( str[i] == ' ') while(str[i]!='\0') 遇到字符 ’\0’。 count++; { } printf(“\n 其中的空格总数为 %d \n if(str[i] == ' ') ",count); count++; } i++; }
使用 gets函数 允许输入空格
W a n g
L i
\0
9/30
5.3.4字符串应用举例 字符串应用举例
例12. 输入一行字符(字符个数不多于80), 统计其中空格的个数
思路分析: (1)定义字符数组 str[81]; (2)读入字符串 若字符串确定不含空格,可以用scanf(“%s”,&str); 若可能含有空格,用gets(str); (3)扫描整个字符串(不需要知道字符个数) for(i=0;str[i]!=‘\0’;i++) {……}
程序实现
19/30
5.3.5 常用字符串函数
以下介绍的字符串函数定义在头文件 <string.h>中 中 (1)strlen: 求字符串长度 ) (2)strcpy:字符串复制(赋值) ) :字符串复制(赋值) (3)strcmp:字符串比较 ) 字符串比较 (4)strcat:字符串合并 ) 字符串合并 (5)strrev:字符串逆置 ) 字符串逆置