第三讲 数组、字符串

合集下载

C语言程序设计教案第3讲 数据类型、运算符与表达式

C语言程序设计教案第3讲 数据类型、运算符与表达式
12
<
>
2,实型变量的分类
说明: C并没有具体规定每种类型的长度 并没有具体规定每种类型的长度, 说明:ANSI C并没有具体规定每种类型的长度,精度和数值 范围.下面是常用的C 范围.下面是常用的C编译系统的情况 类 型 字节数 有效数字 最小取值范围 float 4 6~7 -3.4*10-38~ 3.4*1038 double 8 15~16 -1.7*10-308~ 1.7*10308 long double 16 18~19 -1.2*10-4932~1.2*104932
8
取反
<
>
2.
整型变量分类
基本类型: 基本类型:int 根据数值的范围分为: , 根据数值的范围分为:int,short,long , 根据有无符号(singed/unsigned)及范围可分: 及范围可分: 根据有无符号 及范围可分
类 型 举例: 举例: [signed] int unsigned [int] [signed] short [int] unsigned short [int] [signed] long [int] unsinged long [int]
C 数 据 类 型
构造类型 指针类型 空类型 void
定义类型 typedef
<
>
2
2.2 常量与变量
一,标识符
定义:用来标识变量名,符号常量名, 定义:用来标识变量名,符号常量名,函数 数组名,类型名, 名,数组名,类型名,文件名的有效字符序 列称为标识符.(即一个名字) .(即一个名字 列称为标识符.(即一个名字) 使用规则
32767,32767,-32768,8
<

gw3_string

gw3_string
h e l l o \0
字符串处理函数
将格式化数据写入字符串:sprintf 字符串长度查询函数: strlen 字符串复制函数:strcpy、strncpy 字符串连接函数: strcat 字符串比较函数: strcmp、strncmp、stricmp、 strnicmp 字符串搜索函数: strcspn、strspn、strstr、strtok、 strchr 字符串大小写转换函数: strlwr、strupr 这些函数都要求 #include <string.h>


输出结果: length:5(str1); 11(str2) length:11(str1); 11(str2) hello world str1存储了11个非’\0‟字符? strcpy在复制字符串str2到str1时,不检查str2是否 超出了str1的存储容量,而是直接将str2中存储的 字符串复制到从str1开始的一段连续区域 在程序中要特别注意这种情况所引发的程序运行 不确定性
如果找到,返回指针,指向s1中第一次出现s2的位置 如果找不到,返回 NULL
查找子串strstr
#include <string.h> #include <stdio.h> char str[] = "lazy"; char string[] = "The quick brown dog jumps over the lazy fox"; void main( void ) 在string中搜索str,返回str在 { string中第一次出现的位置 char *pdest; int result; pdest = strstr( string, str ); result = pdest - string + 1; if( pdest != NULL ) printf( "%s found at position %d\n\n", str, result ); else printf( "%s not found\n", str ); } 输出: lazy

C++自学宝典_数组字符串函数

C++自学宝典_数组字符串函数

数组&字符串函数一、数组数组说明的一般形式为:类型说明符数组名 [常量表达式],……;其中,类型说明符是任一种基本数据类型或构造数据类型。

数组名是用户定义的数组标识符。

方括号中的常量表达式表示数据元素的个数,也称为数组的长度。

例int a[10]; //说明整型数组a,有10个元素。

float b[10],c[20]; //说明实型数组b,有10个元素,实型数组c,有20个元素。

char ch[20]; //说明字符数组ch,有20个元素。

1、声明固定大小的数组有三种方法声明固定大小的数组,用哪一种方法取决于数组应有的有效范围:1)建立公用数组,在模块的声明段用 Public语句声明数组。

2)建立模块级数组,在模块的声明段用 Private 语句声明数组。

3)建立局部数组,在过程中用 Private 语句声明数组。

声明数组时,在数组名之后跟一个用括号括起来的上界。

上界不得超过 Long 数据类型的范围(-2,147,483,648 到2,147,483,647)。

例如,下列数组声明可出现在模块的声明段:Dim Counters (14) As Integer '15 个元素。

Dim Sums (20) As Double '21 个元素。

为建立公用数组,直接用 Public 取代 Dim。

Public Counters (14) As IntegerPublic Sums (20) As Double在过程之中同样的声明使用 Dim:Dim Counters (14) As IntegerDim Sums (20) As Double第一个声明建立了一个有 15 个元素的数组,其索引号从 0 到 14 。

第二个声明建立了一个有 21 个元素的数组,其索引号从 0 到 20 。

缺省的下界为 0。

为了规定下界,用关键字 To 显式提供下界(为 Long 数据类型):Dim Counters (1 To 15) As IntegerDim Sums (100 To 120) As String在前述声明中,Counters 的索引值范围从 1 到 15,而 Sums 的索引值范围从 100 到 120。

字符数组和字符串

字符数组和字符串
printf(“%c”,diamond[i][j]); printf(“\n”); }
* ** ** ** *
}
main() a
{ char a[5]; int i=0;
b
while(i<=4)
c
{ scanf(“%c”,&a[i]);
c
i
{ char a[5]; int i=0
跳格分隔。因此不要试图利用scanf函数从键盘输入
How are you? 赋给一个字符串。
1.5 字符数组处理函数
1.字符串输入gets()函数 使用形式: gets(字符数组) 功能:从终端输入一个字符串(直到回车键) 到字符数组中。
例如:char str[20]; gets(str); 若从键盘输入:Hello World! 则将字符串“Hello World!”送到字符数组str中。
输出:10 char str[80]={“ab\n\0y\012/\\\””} ; printf(“%d”,strlen(str)) ;
输出:3
4.字符串连接strcat()函数
使用形式: strcat(字符数组1,字符串2)
如:“china” 占内存6个字节,但字符串长度 是5 在C语言中用字符数组来处理字符串,每个 元素存放一个字符型数据。
字符型数组可用一般数组的初始化方式初始化 外,还可以使用字符串常量初始化:
如:char message[]={“Hello”}; √ 或 char message[]=“Hello”; √
说明:字符数组本身并不要求它的最后一个元素一
定是‘\0’,例如:char ch[2]={‘A’, ‘B’};是合法的。 当定义字符数组用字符串常量赋初值时,最后有一 个元素其值为‘\0’。为了使处理方法一致,在字符 数组中也常常人为地加上一个值为‘\0’的元素。

c语言字符串数组定义的几种方式

c语言字符串数组定义的几种方式

C语言中,字符串数组是一个很常见的数据类型。

在定义字符串数组的过程中,有几种方式可以使用,每种方式都有其特点和适用场景。

接下来,我将从浅入深地介绍这几种方式,并对其进行全面评估。

1. 使用字符数组来定义字符串数组在C语言中,可以使用字符数组来定义字符串数组。

例如:```char strArray[3][20] = {"hello", "world", "c语言"};```这种方式是最基础的定义字符串数组的方法。

它的优点是简单直接,容易理解和使用,适用于简单的场景。

但缺点是不够灵活,每个字符串的长度都是固定的,不能动态调整。

2. 使用指针数组来定义字符串数组除了使用字符数组,还可以使用指针数组来定义字符串数组。

例如:```char *strArray[3] = {"hello", "world", "c语言"};```这种方式相比于字符数组更加灵活,每个字符串的长度可以动态调整。

但要注意的是,需要手动管理每个字符串的内存空间,避免出现内存泄漏等问题。

3. 动态分配内存来定义字符串数组另一种方式是动态分配内存来定义字符串数组。

这种方式可以在运行时动态申请和释放内存,非常灵活。

例如:```char **strArray;strArray = (char **)malloc(3 * sizeof(char *));for (int i = 0; i < 3; i++) {strArray[i] = (char *)malloc(20 * sizeof(char));}strcpy(strArray[0], "hello");strcpy(strArray[1], "world");strcpy(strArray[2], "c语言");```这种方式虽然灵活,但需要手动管理内存,容易出现内存泄漏和指针错误等问题,需要谨慎使用。

数据结构(C语言版)_第3章 串与数组

数据结构(C语言版)_第3章 串与数组
typedef struct lnode {
char data; struct lnode *next;
}lstring;
3.3.3 串的存储结构——链式存储结构
当结点大小>1时,可以采用块链结构。
#define CHUNKSIZE 100
/*可由用户定义块的大小*/
typedef struct Chunk
第三章 串与数组
本章要点
➢字符串的基本概念与基本运算 ➢字符串的存储和基本运算的实现 ➢数组的概念和基本运算 ➢数组的存储结构 ➢特殊矩阵的压缩存储及运算 ➢广义表的概念及相关术语 ➢广义表的存储形式
3.1 “文学研究助手”案例导入
“文学研究助手”引例:请从下面的英文文章里,统计其中 good出现的次数和位置,并查找单词the所在的行号,该行中出 现的次数以及在该行中的相应位置。
3.4.1 数组的定义
数组是n个具有相同类型的数据元素构成的有限序列,数组 中的数据是按顺序存储在一块地址连续的存储单元中。
数组中的每一个数据通常称为数组元素,数组元素用下标 区分,其中下标的个数由数组的维数决定。
若线性表中的数据元素为非结构的简单元素,则称为一维 数组,又称为向量;若一维数组中的数据元素又是一维数组结 构,则称为二维数组;依次类推,若二维数组中的元素又是一 个一维数组结构,则称作三维数组。
3.3.4 串的基本操作的实现算法
第二种顺序存储方式下几种基本操作的算法
算法1:串连接操作 算法2:串比较操作 算法3:取子串操作 算法4:串插入操作 算法5:串删除操作 算法6:串置换函数 算法7:子串定位操作
3.3.5 串的应用
【例3-1】设计一个算法求串s中出现的第1个最长重复子串 及其位置。

c#字符串及数组操作

c#字符串及数组操作
numbers[4] = 5;
下面的代码声明一个多维数组,并向位于 [1, 1] 的成员赋以 5:
int[,] numbers = { {1, 2}, {3, 4}, {5, 6}, {7, 8}, {9, 10} };
numbers[1, 1] = 5;
下面声明一个一维交错数组,它包含两个元素。第一个元素是两个整数的数组,第二个元素是三个整数的数组:
int[] numbers = {1, 2, 3, 4, 5};
int LengthOfNumbers = numbers.Length;
System.Array 类提供许多有用的其他方法/属性,如用于排序、搜索和复制数组的方法。
对数组使用 foreach
C# 还提供 foreach 语句。该语句提供一种简单、明了的方法来循环访问数组的元素。例如,下面的代码创建一个名为 numbers 的数组,并用 foreach 语句循环访问该数组:
int[] numbers = {1, 2, 3, 4, 5};
string[] names = {"Matt", "Joanne", "Robert"};
多维数组
int[,] numbers = new int[3, 2] { {1, 2}, {3, 4}, {5, 6} };
string[,] siblings = new string[2, 2] { {"Mike","Amy"}, {"Mary","Albert"} };
声明数组
C# 支持一维数组、多维数组(矩形数组)和数组的数组(交错的数组)。下面的示例展示如何声明不同类型的数组:

C语言字符串替换:字符,字符串,字符数组详解

C语言字符串替换:字符,字符串,字符数组详解

C语⾔字符串替换:字符,字符串,字符数组详解⽬录案例描述案例分析必备知识1,字符数组(1)字符数组的定义(2)字符数组的初始化2,字符串概念(1)字符串的概念(2)⽤字符初始化字符数组(3)获取字符串的长度3,字符串与指针4,字符数组与字符指针总结案例描述字符串替换是处理字符串时最常见的操作之⼀,也是学习字符串必须掌握的知识。

本案例要求通过编程实现字符串“Good moring”到“Good evening”的转换。

案例分析我们需要从字符串中被替换的位置开始,将要替换的内容逐个复制到原字符串中,直到字符串结束或者替换的字符串结束为⽌。

为了顺利完成案例,需要先学习字符数组,字符串,字符指针等基础知识。

必备知识1,字符数组字符数组是存放字符数据的数组,其中每⼀个元素都是单个字符(1)字符数组的定义字符数组定义的语法格式如下:char 数组名[常量表达式];char 数组名[常量表达式1][常量表达式2]在上述语法中,分别列举了定义⼀维字符数组和⼆维字符数组的⽅法。

⽰例代码如下:char ch[6];(2)字符数组的初始化在数组定义的同时也可以对数组中的元素进⾏赋值,这个过程称为数组的初始化,⽰例代码如下:char c[5] = {'h','e','l','l','o'};注意字符数组的初始化很简单,但要注意以下⼏点。

(1)元素个数不能多于字符数组的⼤⼩,否则编译器会出错(2)如果初始项少于数组长度,则空余元素均会被赋值为空字符(‘\0')(3)如果没有指定数组⼤⼩,则编译器会根据初始项的个数为数组分配长度(4)也可以初始化⼆维数组(和整型数组基本⼀致)2,字符串概念(1)字符串的概念字符串是由数字、字母、下划线和空格等各种字符组成的⼀串字符,是个常量,字符串的末尾都默认有⼀个'\0'作为结束符。

"abcde"" "上⾯这两⾏都是字符串,只不过第⼆个字符串中的字符都是空格字符串在各种编程语⾔中都是⾮常重要的数据类型,但是C语⾔中没有字符串的固定类型,通常⽤字符数组的形式来存储和处理字符串,这种字符数组必须以'\0'结尾。

第5章 数组(C++版) 第三节 字符数组和字符串类型02

第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; }

C51程序设计------数组

C51程序设计------数组

while(con_key=='\x20') { printf("输入第%2d个学生的成绩\n", i++); printf("平时 实习 测验 期末成绩\n"); score[4]=0; /* score[4]:存储总评成绩*/\ for(j=0; j<4; j++) {scanf("%f",&score[j]); score[4] += score[j] * ratio[j]; } printf("总评成绩为:%6.1f\n", score[4]); getchar(); } }
for(j=0;j<NUM_course;j++) score[NUM_std][j] /= NUM_std; /*求第j门课的平均成绩*/ /*输出表头*/ printf("学生编号 课程1 课程2 课程3 课程4 个人平均\n"); /*输出每个学生的各科成绩和平均成绩*/ for(i=0;i<NUM_std;i++) { printf("学生%d\t",i+1); for(j=0;j<NUM_course+1;j++) printf("%6.1f\t",score[i][j]); printf("\n"); } /*输出1条短划线*/ for(j=0;j<8*(NUM_course+2);j++) printf("-"); printf("\n课程平均"); /*输出每门课程的平均成绩*/ for(j=0;j<NUM_course;j++) printf("%6.1f\t",score[NUM_std][j]); printf("\n"); }

第三讲 VHDL字符及数据类型

第三讲 VHDL字符及数据类型

第3讲 VHDL字符及数据类型
标识符
标识符是最常用的操作符,可以是常数、变量、
信号、端口、子程序或参数的名字。
标识符规则是VHDL语言中符号书写的一般规则,
为EDA工具提供了标准的书写规范。
VHDL‟87版本标识符为短标识符
VHDL‟93版标识符为扩展标识符。
第3讲 VHDL字符及数据类型
实数(REAL)
在进行算法研究或实验时,作为对硬件方案的抽象 手段,常常采用实数四则运算。实数的定义值范围为 -1.0E+38~+1.0E+38。实数有正负数,书写时一定要 有小数点。例如:-1.0,+2.5,-1.0E+38
第3讲 VHDL字符及数据类型
位(BIT)
用来表示数字系统中的信号值。位值用字符‘0’或 者‘1’(将值放在引号中)表示。与整数中的1和0不同, ‘1’和‘0’仅仅表示一个位的两种取值。 位数据可以用来描述数字系统中总线的值。位数据不 同于布尔数据,可以用转换函数进行转换。
第3讲 VHDL字符及数据类型
词法规则
注释
为了提高VHDL源程序的可读性,在VHDL中可以 写入注释。 注释以- -开头直到本行末尾的一段文字。在 quartusⅡ中可以看见,敲入- -之后,后面字体的 颜色就发生改变。 注释不是VHDL设计描述的一部分,编译后存入 数据库中的信息不包含注释。
字符也是一种数据类型,所定义的字符量通常用单引号括起 来,如‘a‟。一般情况下VHDL对大小写不敏感,但对字符量中 的大小写则认为是不一样的。例如,‘B‟不同于‘b‟。
第3讲 VHDL字符及数据类型
字符量中的字符可以是从a到z中的任一个字 母,从0到9中的任一个数以及空格或者特殊字符, 如$,@,%等等。 包集合standard中给出了预定义的128个 ASCⅡ码字符,不能打印的用标识符给出。

【字符串】字符数组及其定义和初始化详解

【字符串】字符数组及其定义和初始化详解

【字符串】字符数组及其定义和初始化详解字符串的存储⽅式有字符数组和字符指针。

因为字符串是由多个字符组成的序列,所以要想存储⼀个字符串,可以先把它拆成⼀个个字符,然后分别对这些字符进⾏存储,即通过字符数组存储。

字符数组是⼀个数组,且是存储字符的数组,该数组中⼀个元素存放字符串的⼀个字符。

字符数组的定义因为字符数组⾸先是⼀个数组,所以前⾯讲的数组内容通通都适⽤。

其次它是存放字符的数组,即数组的类型是char型。

⽐如:1char name[10];表⽰定义了10字节的连续内存空间。

1)如果字符串的长度⼤于10,那么就存在语法错误。

这⾥需要注意的是,这⾥指的“字符串的长度”包括最后的‘\0’。

也就是说,虽然系统会⾃动在字符串的结尾加‘\0’,但它不会⾃动为‘\0’开辟内存空间。

所以在定义数组长度的时候⼀定要考虑‘\0’。

2)如果字符串的长度⼩于数组的长度,则只将字符串中的字符赋给数组中前⾯的元素,剩下的内存空间系统会⾃动⽤‘\0’填充。

字符数组的初始化字符数组的初始化与数组的初始化⼀样,要么定义时初始化,要么定义后初始化,下⾯写⼀个程序来说明这个问题:1 #include <stdio.h>2 #include <stdlib.h>3int main(void)4 {5char a[10];6 a[0] = 'i'; a[1] = ''; a[2] = 'l'; a[3] = 'o'; a[4] = 'v';7//空格字符的单引号内⼀定要敲空格8 a[5] = 'e'; a[6] = ''; a[7] = 'y'; a[8] = 'o'; a[9] = 'u';9//空格字符的单引号内⼀定要敲空格10 a[10] = '\0';11char b[10];12 b[0] = 'i'; b[1] = ''; b[2] = 'm'; b[3] = 'i'; b[4] = 's';13//空格字符的单引号内⼀定要敲空格14 b[5] = 's'; b[6] = ''; b[7] = 'y'; b[8] = 'o'; b[9] = 'u';15//空格字符的单引号内⼀定要敲空格16char c[] = "i believe you";17char d[] = {'i', '', 'l', 'i', 'k', 'e', '', 'y', 'o', 'u','\0'};18//空格字符的单引号内⼀定要敲空格19char e[] = {'H', 'e', 'l', 'l', 'o', '', 'W', 'o', 'r', 'l', 'd'};20//空格字符的单引号内⼀定要敲空格21char f[] = "上课睡觉觉, 下课打闹闹, 考试死翘翘";22char g[10] = "";23 printf("a = %s\n", a); //输出字符串⽤%s, 输出参数必须写数组名24 printf("b = %s\n", b);25 printf("c = %s\n", c);26 printf("d = %s\n", d);27 printf("e = %s\n", e);28 printf("f = %s\n", f);29 printf("g = %s\n", g);30return0;31 }⾸先要说明的是,这个程序只有在.cpp⽂件中才能运⾏,在.c⽂件中会有很多错误。

数组字符串精讲PPT课件

数组字符串精讲PPT课件
Hello world. This is c language.
• 输出样例:
Hello world. This is c language.
第26页/共36页
字符串
• 分析:
• 如何判断读入结束? while (cin>>temp)的功能是 循环读入数据,在读不到的 时候停止循环。
• 字符串如何连接? 用“+”连接两个字符串。 注意:两个字符串常量是不能 用“+”连接的。例:string s=“abc”+“def”;
第32页/共36页
字符串
第33页/共36页
字符串
• 例3.19 提取整数。有1行由小写字母和数字组成的字符串, 请求出其中所有数的和。
• 输入格式:一个字符串,长度小于100000。
• 输出格式:输出一个整数。数据保证答案不超过2^62。
• 输入样例: ab123cde45enf
long long
第10页/共36页
一维数组
• 例3.7 从键盘读入10个数,然后从小到大输出。
第11页/共36页
一维数组
• 例3.8 从键盘读入10个数,然后从大到小输出。
第12页/共36页
一维数组
• 例3.9 成绩排序。给出班里某门课程的成绩单,请你按成绩从高到低 对成绩单排序输出,如果有相同分数则名字字典序小的在前。
• 例3.11 写出下面程序的在运使行用结双引果号。初始化时,字符个
数必须比所定义的数组元素个数 少1,因为数组的最后一个位置
用来存放字符“\0”。
第18页/共36页
字符数组
• 例3.12 在应用计算机编辑文档的时候,我们经常遇到替换任务。例 如把文档中的“电脑”都替换成“计算机”。现在请你模拟一下这个 操作。

CSharp_03_数组与字符串

CSharp_03_数组与字符串
等价于 string s = string.Format("{0:N}", 12345678); Console.WriteLine(s);
例3-7 格式化字符串(续)
string s = string.Format(“{0:F}”, 1234);//保留小数点后两位
string s = string.Format("{0:E}", 12345678);//科学计数法 string s = string.Format("{0:P}", 0.64);//百分比的形式 string s = string.Format("{0:x}", 255);//16进制小写 string s = string.Format("{0:X}", 255);//16进制大写 string s = string.Format(“{0:X4}”, 255);//4位16进制 string s = string.Format(“{0:F}”, 1234);//保留小数点后两位 string s = string.Format("{0:C}", 9999);//货币格式,默认2位小数 string s = string.Format("{0:C4}", 255);//货币格式,4位小数
“”、string.Empty、null的区别
string.Empty等价于”” string str = ””;
☺表示str指向首元素为’\0’(字符串结束标志) 的字符数组。会分配内存空间,但是该内存空 间的首位为’\0’。 ☺TextBox1.Text的默认值为零长度字符串 ""。
string str = null;

第三讲-数据类型课程教案

第三讲-数据类型课程教案
第3章 数据类型、运算符 与表达式
C语言程序设计
第3
C语言程序设计
教学要求:
1. 掌握C语言数据类型分类。 2. 掌握整型数据、实型数据、字符数据使用规则。 3.掌握C语言常量、变量的使用。 4.掌握各种运算符的优先级、结合方向。 5.掌握各种数据运算的运算符的运算。 6.掌握混合运算时的类型转换规则。
变量具有保持值的性质。给一变量赋值后,每次使用该变 量时总得到这个值。这种情况一直延续到下次给该变量赋 值为止。
由于有赋值,在程序执行中,一个变量在各时刻所存的值 可能不同(与数学的变量不同)。
C 语言基本类型与数据的表示
C语言程序设计
“类型名”:类型的称呼。 一个基本类型的名字由一个或几个标识符表示。 类型名也是一种标识符,属于 C 语言的关键字。
C语言程序设计
程序中处理到的每个基本数据都属于一个确定的基本数 据类型;所有数据必须指定其数据类型;
类型确定了有关数据的表示范围。 在一个具体的 C 语言系统里,每个基本类型都有固定的 表示方式,这个编码方式实际上也确定了可能表示的数据 的范围。
例如:一个整数类型(能表示的所有整数)只能是数学的 整数的一个子集合,其中只能包含有限个整数值;
标识符例子
C语言程序设计
正确的标识符例子:
Abcd Beijing a3b06 xt386ex Small_talk_80
C_Programming _xy sin A_great_machine FORTRAN_90
错误的标识符例子:
x3+5 8x 郑大 M.D.John $123 #33
C语言程序设计
3.2.2 变量
C语言程序设计
定义:在程序运行过程中其值可以改变的量称为变量。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

的姓名XXX,在屏幕上输出:my name is:XXX。 头文件
定义
cin读入字符串时,空 格和换行符都被认为 是字符串的结束
江苏省青少年信息学奥林匹克冬令营(C语言班)-金中河西
字符串

例3.16 过滤多余的空格。一个句子中也许有多个连续空
格,过滤掉多余的空格,只留下一个空格。

输入格式:1行,一个字符串(长度不超过200),句子的 头和尾都没有空格。
第三讲
数组、字符串
江苏省青少年信息学奥林匹克冬令营(C语言班)-金中河西
一维数组

同类型变量或对象的集合称为数组。 定义:类型名 数组名[元素个数]

元素个数必须是常数或常量表达式; 数组下标取值从0开始,使用数组时下标不能越界; 同一数组的所有数组元素在内存中占用一片连续的存储单元。
为:apples,bananas,peaches,cherries,pears,oranges,
strawberries。

输入格式:有多行,每行是一个字符串(长度不超过200)。每行输入中只 会有一个水果名称,不会存在1行输入包含多种水果名称或重复水果名称的 情况。 输出格式:如果包含水果单词,则用词组“Brussels sprouts”替换句子中 出现的水果单词,并输出替换后的句子。如果句子中没有出现这些水果的
江苏省青少年信息学奥林匹克冬令营(C语言班)-金中河西


二维数组

分析:从第3行开始,每行第1个和最后1个值为1,其他
值为其上方和左上方数字和。

设二维数组c[i][j]存储行坐标为i、列坐标为j位置上元 素值,则c[i][j]=c[i-1][j-1]+c[i-1][j]。
江苏省青少年信息学奥林匹克冬令营(C语言班)-金中河西

输出样例: I really love Brussels sprouts on my cereal.
You must not enjoy fruit.

输出样例: 4
江苏省青少年信息学奥林匹克冬令营(C语言班)-金中河西
字符串

分析

读入1行字符放入一个字符串变量,再判断每个字符是否是数字。 如果输入的1行字符串中有空格,可以用getline函数读入, getline函数默认是碰到换行符才结束。
江苏省青少年信息学奥林匹克冬令营(C语言班)-金中河西
江苏省青少年信息学奥林匹克冬令营(C语言班)-金中河西
一维数组

例3.4 写出下面程序的运行结果。

当给数组的部分元素赋初值后,其他元素的初值自动赋0值。
江苏省青少年信息学奥林匹克冬令营(C语言班)-金中河西
一维数组

可以使用memset函数给数组变量赋初值。

需要#include <cstring>头文件

引用:数组名[下标]

下标可以是任何值为整型的表达式,可以包含变量和函数调用; 下标值应在数组定义的下标值范围内。
江苏省青少年信息学奥林匹克冬令营(C语言班)-金中河西
一维数组

例3.1斐波那契数列指的是这样一个数列:0、1、1、2、3、 5、8、13、21、……求数列的前20项并按从大到小的顺序输 出。
江苏省青少年信息学奥林匹克冬令营(C语言班)-金中河西
注意参数
江苏省青少年信息学奥林匹克冬令营(C语言班)-金中河西
二维数组

定义: 类型名 数组名[常量表达式1][常量表达式2];
例如:int num[4][6];
[0,0] [0,1] [0,2] [0,3] [0,4] [0,5] [1,0] [1,1] [1,2] [1,3] [1,4] [1,5] [2,0] [2,1] [2,2] [2,3] [2,4] [2,5] [3,0] [3,1] [3,2] [3,3] [3,4] [3,5]

输入两行内容,第1行是原文(长度不超过200个字符),第2行包含以空 格分隔的两个字符A和B,要求将原文中所有的字符A都替换成字符B。

输入样例: I love China. I love Beijing. I U

输出样例:
U love China. U love Beijing.
江苏省青少年信息学奥林匹克冬令营(C语言班)-金中河西
字符数组

字符数组的定义格式: char 数组名[元素个数];

例3.11 写出下面程序的运行结果。 在使用双引号初始化时,字符个
数必须比所定义的数组元素个数 少1,因为数组的最后一个位置 用冬令营(C语言班)-金中河西
字符数组

例3.12 在应用计算机编辑文档的时候,我们经常遇到替换任务。例如把 文档中的“电脑”都替换成“计算机”。现在请你模拟一下这个操作。
字符串

例3.18 选择你喜爱的水果。程序中保存了七种水果的名字,要求用户输入 一个与水果有关的句子。程序在已存储的水果名字中搜索,以判断句子中
是否包含七种水果的名称。如果包含,则用词组“Brussels sprouts”替换
句子中出现的水果单词,并输出替换后的句子。如果句子中没有出现这些 水果的名字,则输出“You must not enjoy fruit.”。假设七种水果的名字
江苏省青少年信息学奥林匹克冬令营(C语言班)-金中河西
字符数组
函数格式
strcat(字符串名1,字符串名2) strncat(字符串名1,字符串名2,长度n) strcpy(字符串名1,字符串名2)
函数功能
将字符串2连接到字符串1后边 将字符串2前n个字符连接到字符串1 后边 将字符串2复制到字符串1
江苏省青少年信息学奥林匹克冬令营(C语言班)-金中河西
二维数组

例3.10 杨辉三角是一个由数字排列成的三角形数表,一
般形式如下:
1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 输入数据:一个正整数n,表示三角形的行数。 输出数据:n行杨辉三角形

输出格式:过滤之后的句子。 输入样例: Hello world. This is c language.

输出样例: Hello world. This is c language.
江苏省青少年信息学奥林匹克冬令营(C语言班)-金中河西
字符串

分析:

如何判断读入结束?
while (cin>>temp)的功能是 循环读入数据,在读不到的 时候停止循环。
江苏省青少年信息学奥林匹克冬令营(C语言班)-金中河西
一维数组

初始化:在定义一个一维数组的同时,可以给数组中的元 素赋初值。

格式:类型名 数组名[常量表达式]={值1,值2,……} 例如:

int a[10]={0,1,2,3,4,5,6,7,8,9}

相当于:a[0]=0;a[1]=1;a[2]=2;……;a[9]=9
strncpy(字符串名1,字符串名2,长度2) 将字符串2前n个字符复制到字符串1 strcmp(字符串名1,字符串名2) strncmp(字符串名1,字符串名2,长度2) strlen(字符串名) strwr(字符串名) strupr(字符串名) 比较字符串1和字符串2的大小
比较字符串1和字符串2的前n个字符 进行比较
字符数组

分析:先将给定的原文保存在字符数组里,然后从头开始寻
找字符A,找到一个字符A,便将其替换成B输出。
循环体为空
可以省略吗?
江苏省青少年信息学奥林匹克冬令营(C语言班)-金中河西
字符数组

字符数组可以作为字符串整体进行输入和输出。 scanf(“%s”,字符串名称);


字符串名称前不加&;
江苏省青少年信息学奥林匹克冬令营(C语言班)-金中河西
一维数组

例3.2 输入年、月、日,输出该天是这一年的第几天。
为什么多了一个0?
江苏省青少年信息学奥林匹克冬令营(C语言班)-金中河西
一维数组

例3.3 下面两个程序没有初始化数组,观察程序默认的数 组变量初值。

如果数组定义放在int main()之内,其初始值是随机的。
字符串

string类型的成员函数:


成员函数是指某个类型的特有函数;
成员函数调用方式是:变量名.函数名(参数)。 格 式 求字符串长度 说 明
size() substr(开始位置i,子串长度len)
取字符串的子串,当i+len超过原字符 串长度时,只取剩下的。
删除字符串的第i个位置后的len个字符
江苏省青少年信息学奥林匹克冬令营(C语言班)-金中河西
一维数组

例3.7 从键盘读入10个数,然后从小到大输出。
江苏省青少年信息学奥林匹克冬令营(C语言班)-金中河西
一维数组

例3.8 从键盘读入10个数,然后从大到小输出。
江苏省青少年信息学奥林匹克冬令营(C语言班)-金中河西
一维数组

例3.9 成绩排序。给出班里某门课程的成绩单,请你按成绩从高到低对 成绩单排序输出,如果有相同分数则名字字典序小的在前。

名字,则输出“You must not enjoy fruit.”。
江苏省青少年信息学奥林匹克冬令营(C语言班)-金中河西
字符串

输入样例: I really love peaches on my cereal. I’d rather have a candy bar apples are wonderful with lunch
相关文档
最新文档