第10章-字符串
第10章成绩统计——数组与字符串
10.4.2 数组排序
• 按从小到大的顺序进行排序方法sort,调用形式主要有二: Arrays.sort(数组实例名) Arrays.sort(数组实例名, 起始索引, 终止索引) • 第二种形式元素范围从起始索引到终止索引减1之间的元素。 • 【例10-5】编程,按升序输出int[]型数组的所有元素。 int[] nums = {71, 62, 93, 84, 95, 56, 87, 78, 69, 80}; System.out.println("排序之前的数组元素:"); System.out.println(Arrays.toString(nums)); System.out.println("排序之后的数组元素:"); Arrays.sort(nums); System.out.println(Arrays.toString(nums));
【例10-2】编程,使用声明、创建、元素赋值3个步 骤建立学生成绩数组,并统计平均成绩。
… int[] nums; //声明数组变量 nums = new int[10]; //创建数组实例 nums[0] = 71; nums[1] = 62; nums[2] = 93; nums[3] = 84; nums[4] = 95; nums[5] = 56; nums[6] = 87; nums[7] = 78; nums[8] = 69; nums[9] = 80; int sum = 0; double average;
【例10-3】编程,创建int[][]类型的二维数组,计算每行 元素的平均值。 int[][] nums = new int[][]{ //声明、创建二维数组 {71, 62, 93, 84}, //第0行4个元素 {95, 56, 87, 78}, //第1行4个元素 {69, 80} }; //第2行2个元素 System.out.println("二维数组所有元素值如下:"); for(int i=0; i<nums.length; i++){ //i控制行 double rowSum = 0; for(int j=0; j<nums[i].length; j++){ //j控制列 System.out.print(nums[i][j]+ " "); rowSum += nums[i][j]; } System.out.println("\t\t本行平均值" + rowSum/nums[i].length ); }
《C++程序设计》电子教案第10章 流类库与输入输出
C++中所有流都是相同的 , 但文件可以不同 。 中所有流都是相同的, 但文件可以不同。 中所有流都是相同的 使用流以后, 使用流以后 , 程序用流统一对各种计算机设备 和文件进行操作,使程序与设备、 和文件进行操作 , 使程序与设备 、 程序与文件 无关,从而提高了程序设计的通用性和灵活性。 无关 , 从而提高了程序设计的通用性和灵活性 。 也就是说, 也就是说 , 无论与流相联系的实际物理设备差 别有多大,流都采用相同的方式运行。 别有多大 , 流都采用相同的方式运行 。 这种机 制使得流可以跨越物理设备平台, 制使得流可以跨越物理设备平台 , 实现流的透 明运作,而与实际的物理设备无关。例如, 明运作 , 而与实际的物理设备无关 。 例如 , 往 显示器上输出字符和向磁盘文件或打印机输出 字符,尽管接受输出的物理设备不同, 字符 , 尽管接受输出的物理设备不同 , 但具体 操作过程是相同的。 操作过程是相同的。
返回本节
10.2 格式化 格式化I/O
10.2.1 10.2.2 10.2.3 10.2.4 ios类中的枚举常量 类中的枚举常量 使用ios成员函数 使用 成员函数 使用I/O操作符 使用 操作符 检测流操作的错误
返回首页
10.2.1 ios类中的枚举常量 类中的枚举常量
在根基类ios中定义有三个用户需要使用的枚举类型, 在根基类 中定义有三个用户需要使用的枚举类型,由 中定义有三个用户需要使用的枚举类型 于它们是在公用成员部分定义的, 于它们是在公用成员部分定义的,所以其中的每个枚举类 型常量在加上ios::前缀后都可以为本类成员函数和所有外 型常量在加上 前缀后都可以为本类成员函数和所有外 部函数访问。 部函数访问。 在三个枚举类型中有一个无名枚举类型, 在三个枚举类型中有一个无名枚举类型,其中定义的每个 枚举常量都是用于设置控制输入输出格式的标志使用的。 枚举常量都是用于设置控制输入输出格式的标志使用的。 该枚举类型定义如下: 该枚举类型定义如下: enum { skipws,left,right,internal,dec,oct,hex,sh owbase,showpoint, uppercase,showpos,scientific,fixed,unitbuf, stdio };
计算机二级C语言辅导 10章 字符串
例2. 删除一个字符串中的一个字符。 字符串由标准输入得到,欲删除的字符也由标准输入得到
main ( ) { char s[20],c; int i,j; gets(s); c=getchar( ); for (i=j=0;s[i]!=„\0‟;i++) if (s[i]!=c) s s[j++]=s[i]; s[j]=„\0‟; c=l }
p
i j
i j
i j
i
j
i
W
0
o
1
r
2
l
3
d
4
\0
5
例2. 删除一个字符串中的一个字符。 字符串由标准输入得到,欲删除的字符也由标准输入得到
main ( ) { char s[20],c; int i,j; gets(s); c=getchar( ); for (i=j=0;s[i]!=„\0‟;i++) if (s[i]!=c) s s[j++]=s[i]; s[j]=„\0‟; c=l }
H o w \0
0 1 2 3 4 5 6 7 8 9 10 11 12
字符数组
五、字符串处理函数: 1.puts(字符数组); 将字符串输出到终端,在输出时将字符串结束标记‘\0‟转换成‘\ char str[ ]={“China\nBeijing”}; puts(str); 输出:China Beijing 2.gets(字符数组)--读入全部字符(包括空格),直到遇到回车符为止 从终端输入一个字符串到字符数 如果输入以下12个字符: 组,并且得到一个函数值,该函 数值是字符数组的起始地址。
第十章 字符串
在C语言中,没有字符串这种数据类型, 因此可以将字符串存放在字符数组中。 这是处理字符串的方法之一。
《MySQL数据库应用案例教程》教学课件 第10章 MySQL常用函数
执行SQL语句,使用函数ROUND(x)和ROUND(x,y)对数值进行四舍五入操 作,执行结果如下:
mysql> SELECT ROUND(100.144),ROUND(100.568),ROUND(100.144,2),ROUND(100.568,2);
+------------------------------+-----------------------------+------------------------------+-----------------------------+
—9—
10.1 数值函数
➢ 10.1.6 截取小数函数
函数TRUNCATE(x,y)的作用是对数值x进行截取,保留小数点后y位。其与ROUND()函数的区别是, ROUND()函数在截取值时会四舍五入;而TRUNCATE(x,y)函数直接截取值,并不进行四舍五入。
【实例10-7】
执行SQL语句,使用函数TRUNCATE(x,y)和ROUND(x,y)分别截取数值,执 行结果如下:
| ROUND(100.144) | ROUND(100.568) | ROUND(100.144,2) | ROUND(100.568,2) |
+------------------------------+-----------------------------+------------------------------+-----------------------------+
表102mysql中常用的字符串凼数及其功能lengthstrcharlengthstr返回字符串长度戒字符个数concatstr1str2strnconcatwsxstr1str2strn合并字符串insertstrxyinstrreplacestrab替换字符串lowerstrupperstr字符大小写转换leftstrxrightstrxsubstringstrxy获取字符串的一部分lpadstr1nstr2rpadstr1nstr2填充字符串ltrimstrrtrimstrtrimstr删除字符串左侧右侧戒两侧空格repeatstrn返回字符串str重复n次的结果locatestr1str返回子字符串的开始位置reversestr反转字符串13102字符串函数102字符串函数1021返回字符串长度和字符串中字符个数的函数凼数lengthstr用于返回字符串的长度一个汉字占用2个字节一个英文字符和数字占用1个字节
C语言第十章复习题(含答案)
1.若有说明:int i,j=7, *p=&i;,则与i=j;等价的语句是(B )。
(A)i= *p; (B)*p=*&j; (C)i=&j; (D)i=* *p;2.若有以下说明:int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为6的表达式是( C)。
(A)*p+6 (B)*(p+6) (C)*p+=5 (D)p+53.若有以下定义和语句:char *s1="12345",*s2="1234";printf("%d\n",strlen(strcpy(s1,s2)));则输出结果是( A)。
(A)4 (B)5 (C)9 (D)104.以下不能正确进行字符串赋初值的语句是(A )。
(A) char str[5]="good!"; (B) char str[]="good!";(C) char *str="good!"; (D) char str[5]={‘g',‘o',‘o',‘d'};5.若定义:int a=511,*b=&a;, 则printf("%d\n",*b);的输出结果为( D )。
(A) 无确定值 (B) a的地址 (C) 512 (D) 5116.下面程序的输出是( A )。
(A) 3 (B) 4 (C) 1 (D) 2main(){ int a[10]={ 1,2,3,4,5,6,7,8,9,10},*p=a;printf("%d\n",*(p+2));}7.若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句是(D )。
(A) p=q; (B) *p=*q; (C) n=*q; (D) p=n;8.有如下说明int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为9的表达式是( B )。
第10章-编译预处理ppt课件(全)
-8-
带参数的宏定义(续)
【例10-3】用宏来定义多个语句的例子。
宏的使用有很多好处,不仅可以简化程序的书写,而且便于程序的 修改和移植,使用宏名来代替一个字符串,可以减少程序中重复书写某 些字符串的工作量。
根据宏定义中是否有参数,可以将宏分为不带参数的宏定义与带参 数的宏定义两种,下面分别讨论这两种宏的定义与调用。
-4-
10.1.1 不带参数的宏定义
不带参数的宏的宏名后面没有参数,不带参数的宏定义又称简单宏 定义。其定义的一般形式为:
宏定义是用一个标识符来表示一个字符串,这个字符串可以是常量、变量或表 达式。在宏替换时,用该字符串代换宏名。根据宏定义中是否有参数,可以将宏分 为不带参数的宏定义与带参数的宏定义两种。在写带有参数的宏定义时,宏名与带 括号参数间不能有空格,否则将空格以后的字符都作为了替换字符串的一部分,这 样就变成不带参数的宏定义了。不要把带参数的宏定义与带参数的函数混淆,带参 的宏定义在预处理时只是字符串的替换,而带参的函数却是将实参的值一一对应的 传递给形参。
#define 宏名 字符串 其中,“#”表示预处理命令。define是关键字,表示该命令为宏定 义。为了与一般的普通变量相区别,宏名一般使用大写。“字符串”一 般为常量、表达式或字符串。 在进行预处理时,系统会将程序中的“宏名”用“字符串”来替换。
-5-Biblioteka 10.1.1 不带参数的宏定义
第10章 文件---习题
第10章文件一、选择题1.设fp是指向某个文件的指针,且已读到文件尾,则库函数feof(fp)的返回值是___ __。
A) EOF B) -1 C) 非零值 D) NULL2.若要指定打开C盘上子目录myfile下的二进制文件test.bin,在调用函数fopen时,第一个参数的正确格式是___________。
A) “c:myfile\test.bin” B)“c:\myfile\\test.bin”C) “c:\\myfile\\test.bin” D)“c:\myfile\test.bin”3.若执行fopen函数时发生错误,则函数的返回值是_____________________。
A) 地址值 B) 0 C)1 D) EOF4.若要用fopen函数打开一个新建立的二进制文件,该文件既要能读也要能写,则文件方式字符串应是_________________。
A) “ab+” B) “wb+” C)“rb+” D) “ab”5.若以”a+”方式打开一个已存在的文件,则以下叙述正确的是_______________。
A) 文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可做添加和读操作B) 文件打开时,原有文件内容不被删除,位置指针移到文件开头,可做添加和读操作C) 文件打开时,原有文件内容被删除,只可作写操作D) 以上各种说法皆不正确6.正常执行文件关闭操作时,fclose函数的返回值是____________________。
A) -1 B) TRUE C)0 D) 17.已知函数的调用形式是: fread(buffer,size,count,fp); 其中buffer代表的是_________。
A) 一个整形变量,代表要读入的数据项总数B) 一个文件指针,指向要读的文件C) 一个指针,指向要读入数据的存放地址D) 一个存储区,存放要读的数据项8.fscanf函数的正确调用形式是________________________。
C语言全国计算机二级等级考试教程第10章 字符串(章节带习题)
输出时直到遇第一 char str[ ]=“I love you!” , *p=str; 个‘\0‟结束输出。 字符指针变量 printf(“%s\n” , p); 字符数组名
输入项 字符指针变量
转去介绍
10.3 字符串的输入和输出
字符数组名
输入项
字符指针变量 当字符数组名作为输入项: char str[15]; scanf(“%s”,str); 在内存中的形式是: P R 输入形式为: PROGRAMMING<CR> O G R A M M I N Ga赋初值后的存储示意图
10.4 字符串数组
可以定义字符型指针数组并通过赋初值来构成一个类似的字符串数组。 例如:char *pa[3]={“a”, ”bb”, ”ccc”}; 定义了一个字符型指针数组,该数组中含有3个元素pa[0] 、pa[1]、 pa[2],且每一个 元素都是一个指向字符串的指针。
则在str中存入的只是字符串“APROGRAM”,而不是字符串“APROGRAM MING
10.3 字符串的输入和输出
10.3.3 调用gets、puts函数在终端输入或输出一行字符串
调用gets函数来输入字符串,例如: char str[15]; gets( str ); 在内存中的形式是: A P 若从键盘上依次输入: APROGRAM MING<CR> R O G R A M M I N G \0 \0
★ 两个字符串分别占有不同的存储空间。 ★ 指针变量pmark中的地址可以改变而指向另外一个长度 不同的字符串。
10.3 字符串的输入和输出
10.3.1 输入和输出字符串时的必要条件
输入和输出的格式说明符为 %s 对字符串输入输出时的必要条件: 字符串常量 输出项 字符数组名 printf(“%s\n” , ”I love you!”); char str[ ]=“I love you!”; printf(“%s\n” , str); I love you!
18 字符数组与字符串
两者的区别比较明显,主要体现在:
练习1
将原来的字符串逆序存放,即: 原来:
a b c d e f g h \0
逆序后:
h g f e d c b a \0
•16
练习1程序
void Reverse(char a[]) { int i,n=strlen(a); char temp; for(i=0;i<n/2;i++) { temp=a[i]; a[i]=a[n-i-1]; a[n-i-1]=temp; } }
•23
写函数,计算字符串长度
#include<stdio.h> 算法: unsignedint My_strlen(char a[]); /*函数功能:求一个字符串中字符个数 */ 输入字符串 unsigned int My_strlen(char a[]) 计算其中的字符个数 {int i,number=0; void main() 从第一个字符数起,只要不到末尾,就加 1 for(i=0;a[i]!=0;i++) { {number++; 输出 char str[50]; } int n; return number; puts(“please input a string”); /*直接返回i也行*/ scanf("%s",str); } n=My_strlen(str); printf("strlen(\" %s\")=%d.\n",str,n); }
•17
相应主函数
#include<stdio.h> #include<string.h> void Reverse(char a[]); void main() { char str[100]; printf(" please input a string: "); scanf("%s",str); Reverse (str); printf("after reverse,the string is:%s.\n",s有两种用途
[汇编]《汇编语言》第10章CALL和RET指令
[汇编]《汇编语⾔》第10章CALL和RET指令王爽《汇编语⾔》第四版超级笔记⽬录第10章 CALL和RET指令call和ret指令都是转移指令,它们都修改IP,或同时修改CS和IP。
它们经常被共同⽤来实现⼦程序的设计。
这⼀章,我们讲解call和ret指令的原理。
10.1 ret和retf、call指令ret指令⽤栈中的数据,修改IP的内容,从⽽实现近转移;retf指令⽤栈中的数据,修改CS和IP的内容,从⽽实现远转移。
CPU执⾏ret指令时,进⾏下⾯两步操作:(IP)=((ss)x16+(sp))(sp)=(sp)+2CPU执⾏retf指令时,进⾏下⾯4步操作:(IP)=((ss)x16+(sp))(sp)=(sp)+2(CS)=((ss)x16+(sp))(sp)=(sp)+2可以看出,如果我们⽤汇编语法来解释ret和retf指令,则:CPU执⾏ret指令时,相当于进⾏:pop IPCPU执⾏retf指令时,相当于进⾏:pop IPpop CS下⾯的程序中,ret指令执⾏后,(IP)=0,CS:IP指向代码段的第⼀条指令。
assume cs:codestack segmentdb 15 dup (0)stack endscode segmentmov ax,4c00hint 21hstart: mov ax,stackmov ss,axmov sp,16mov ax,0push axmov bx,0retcode endsend start下⾯的程序中,retf指令执⾏后,CS:IP指向代码段的第⼀条指令。
assume cs:codestack segmentdb 16 dup (0)stack endscode segmentmov ax,4c00hinc 21hstart: mov ax,stackmov ss,axmov sp,16mov ax,0push cspush axmov bx,0retfcode endsend startCPU执⾏call指令时,进⾏两步操作:(1)将当前的IP或CS和IP压⼊栈中;(2)转移。
C语言字符串
字符串与数组
• 字符数组与字符串的区别 字符数组的每个元素可存放一个字符,但它并不限定最后 一个字符应该是什么。在C语言中,因为有关字符串的大 量操作都与串结束’\0’有关,因此,在字符数组中的有效 字符后面加上’\0’,可以把这种一维数组“看做”字符串 变量。 总之,仅可以在字符数组内存放字符串,不能通过赋值语 句直接将字符常量或其它字符数组字符串直接付给字符串 变量。 字符串是字符数组的一种具体应用。
字符串数组定义同时赋初值
• 若定义 char name[3][5]={“A”,”BB”,”CCC”}; 也可写成char name[3][5]={“A”,”BB”,”CCC”}; 各元素在数组中的存储情况如图
ca[0] A \0 ca[1] B B \0 ca[2] C C C \0
各字符串是从每行的第0个元素开始存放一个新的串。 可以通过二维数组元素的形式, 如ca[i][j]等来直接引用字符串中的每个字符。
经典例题
• 设有数组定义:char arry[]=“china”;则数组arry所占的空间为 A 4个字节 B 5个字节 C 6个字节 D 7个字符
分析:本题是利用字符串初始化字符数组。字符串的存储长度为 个字节 个字节, 分析:本题是利用字符串初始化字符数组。字符串的存储长度为5个字节, 系统自动增加’ ,因此数组初始化后的空间应为6个字节 个字节。 系统自动增加’\0’,因此数组初始化后的空间应为 个字节。
定义字符型指针数组 • char *pa[3]={“a”,”bb”,”ccc”};
指针数组pa的每个元素指向一个字 符串即数组pa的每个元素中存放着 一个字符串的首地址。 由于指针数组元素已指向确定的存 储空间,因此,也可以用输入语句 给这些字符串重新赋值。 gets(pa[2]); 注意:pa[2]中的地址未变,扔指向 具有4个元素的无名字符数组。 可用表达式:*(pa[2]+1)、 pa[2][1]、等形式引用pa数组所指 字符串中的字符
C程序设计 第10章 对文件的输入输出
例如:
fopen(“a1”,”r”); 表示要打开名为“a1”的文件,使用文件方 式为“读入” fopen函数的返回值是指向a1文件的指针
10.2.1 用fopen函数打开数据文件
通常将fopen函数的返回值赋给一个指向 文件的指针变量。如:
FILE *fp; fp=fopen(“a1”,”r”); fp和文件a1相联系,fp指向了a1文件
终端键盘是输入文件 显示屏和打印机是输出文件
10.1.1 什么是文件
“文件”指存储在外部介质上数据的集合
一批数据是以文件的形式存放在外部介质上的 操作系统是以文件为单位对数据进行管理 想找存放在外部介质上的数据,先按文件名找
到所指定的文件,然后再从该文件读数据 要向外部介质上存储数据也必须先建立一个文 件(以文件名作为标志),才能向它输出数据
本章主要讨论的是数据文件
10.1.1 什么是文件
在以前各章中所处理的数据的输入和输出, 从终端的键盘输入数据,运行结果输出到 终端显示器上 常常需要将一些数据输出到磁盘上保存起 来,以后使用 这就要用到磁盘文件
10.1.1 什么是文件
操作系统把各种设备都统一作为文件处理 从操作系统的角度看,每一个与主机相联 的输入输出设备都看作是文件。例如,
说明:
(4) 用r+、w+、a+方式打开的文件既可以用来 输入数据,也可以用来输出数据。 用r+方式时该文件应该已经存在。 用w+方式则新建立一个文件,先向此文件写 数据,然后可以读此文件中的数据。 用a+方式打开的文件,原来的文件不被删去, 文件读写位置标记移到文件末尾,可以添加, 也可以读。
C语言“字符串”
程序运行过程: How do you do?↙ How s=do,s1=you
□do? 注:□代表空格
C语言程序设计教程
第10章 字符串
12
10.1.4 字符串处理函数 C语言库函数中除了前面用到的库函数 gets()与puts()之外,还提供了一些常用的库 函数,其函数在string.h中 1.字符串拷贝函数:strcpy() 调用格式:strcpy(d_str,s_str); 功 能:将以s_str为起始地址的字符串或字 符串常量(连同‘\0’)复制到以d_str为起始地 址的、连续的内存中。 说 明:d_str在内存中所占的字节数应不 小于s_str在内存中所占的字节数。
第10章 字符串
1
第十章 字符串
10.1 字符数组与字符串 10.2 指针与字符串
2013/7/25
C语言程序设计教程
第10章 字符串
2
10.1 字符数组与字符串
10.1.1 字符数组的定义与初始化
1. 字符数组的定义 字符数组:其元素类型为字符类型的数组,其定义与前面介 绍的数组定义相同。 例如: char str[40]; 定义一个有40个元素的字符数组,每个元素相当于一个字 符变量。 char ch[5][30];
15
3.字符串比较函数strcmp()
调用格式:strcmp(str1,str2); 功能:若str1=str2,则函数返回值为0; 若str1>str2,则函数返回值为正整数; 若str1<str2,则函数值返回为负整数。 比较规则: ● 两个字符串自左至右逐个字符比较,直到出现不同字符 或遇到‘\0’为止。 ● 如字符全部相同且字符串的长度相等,则两个字符串相 等; 若出现不同字符,则遇到的第一对不同字符的ASCⅡ大者 为大,返回值为两者ASCII码值之差。 比较两字符串是否相等一般用以下形式: if (strcmp(str1,str2)==0){…}; 而 if(str1==str2){…};是错误的。
第10章 字符串数组(培训)
C语言程序设计
国家等级考试练习 1.有以下程序: main() {char ch[ ]="uvwxyz",*pc; pc=ch; printf("%c\n",*(pc+5)); printf("%c\n",*pc++); printf("%c\n",*pc++); } z 输出结果是: u v
C语言程序设计
C语言程序设计
10.2
使指针指向一个字符串
1 通过赋初值的方式使指针指向一个字符串 char *ps1="form one"; char str[]="form one",*ps2=str; 指针变量中保存的是字符串常量或字符串数组的首地址
C语言程序设计
2 通过赋值运算使指针指向一个字符串 char *ps1; ps1="form one"; char str[ ]="form two",*ps2; ps2=str; 3 用字符数组作为字符串和用指针指向字符串之间 的区别 char mark[ ]="program"; char *pmark[ ]="program";
C语言程序设计
4.以下程序运行后的输出结果是: bcdefgha #include <string.h> char *ss(char *s) { char *p,t; p=s+1; t=*s; while(*p) {*(p-1)=*p; p++; } *(p-1)=t; return s; } main() {char *p ,str[10]="abcdefgh"; p=ss(str); printf("%s\n",p); }
java PPT 教学10
– 变量strlen1中保存myStr的长度,值为5 – 变量strlen2中保存myStr2的长度,值为 7
字符串类
• 字符串的访问操作
– 汉字的字数统计问题: – 在很多编程语言中,一个汉字算作两个英 文字母 – Java中的字符串都是16位的Unicode格式, 其中每个汉字和英文字母都算作一个字符 – 这样避免了在汉字字数统计、中英文混杂 的文本处理、文本分割中出现的问题
– 程序显示结果: 34
字符串类
• 字符串长度和字符串容量
– append函数的作用是在当前字符串的末 尾添加新的字符串 – 添加的字符串长度为24,超过了16个字 符 – StringBuffer对象自动将容量由16扩充到 34,以完整地放下添加的字符串 – 出于预留余地的考虑,扩充后的容量一般 都大于需要的容量
0 五 1 岳 2 归 ↑ 3 来 4 不 5 看 6 山 7 ↑
字符串类
• 字符串的访问操作
– indexOf和lastIndexOf函数:搜索字符位 置 – 适用于String对象和StringBuffer对象 – indexOf函数的作用是从前往后搜索字符 第一次出现的位置 – lastIndexOf函数的作用是从后往前搜索字 符第一次出现的位置 – indexOf和lastIndexOf函数有很多种用法
字符串类
• 字符串的访问操作
– capacity函数:得到字符串容量 – 仅适用于StringBuffer对象 – charAt()函数:获得字符串中的某个字符 – 适用于String对象和StringBuffer对象
char myChar1, myChar2; String myStr = "僧游云隐寺"; StringBuffer myStr2 = new StringBuffer("五岳归来不看山"); myChar1 = myStr.charAt(0); myChar2 = myStr2.charAt(6);
c语言课件《字符串》概述
C h i n a \0
是字符串
注:以字符串方式赋值时,必须保证数组元素个数 ≥字 符个数+1,(字符串后面需自动加上一个'\0')。
2019/3/14 8/
8
一维字符数组的初始化
省略数组长度 如: char c[ ]={'C', 'h', 'i', 'n', 'a'};
第10章 字符串
本章学习内容
字符串常量 字符串处理函数 字符数组和字符指针 向函数传递字符串
从函数返回一个字符串指针
2019/3/14
2/
10.1字符串常量
"How are you"
ASCII码值为0
用双引号括起的一串字符
是字符串常量,C语言自 动为其添加'\0'结束符 一串以‘\0’结尾的字符序列在C语言中被看作
字符数组元素的访问
c2赋值’A’~’Z’,然后输出c1和c2中的数据
#include <stdio.h> void main () { char c1[10], c2[26]; int i; for(i=0; i<10; i++) c1[i]=i+48; for(i=0; i<26; i++) c2[i]=i+'A'; for(i=0; i<10; i++) printf("%c ",c1[i]); printf("\n"); for(i=0; i<26; i++) printf("%c ",c2[i]); printf("\n"); }
C语言程序设计(第3版)第10章补充习题及答案
第10章补充习题及答案习题10.1 选择题(1)当已存在一个abc.txt文件时,执行函数fopen("abc.txt","r+")的功能是。
A.打开abc.txt文件,清除原有的内容B.打开abc.txt文件,只能写入新的内容C.打开abc.txt文件,只能读取原有内容D.打开abc.txt文件,可以读取和写入新的内容(2)若用fopen()函数打开一个已存在的文本文件,保留该文件原有内容,且可以读,可以写。
则文件打开模式是。
A."ab+" B."w+" C."a+" D."a"(3)以下不能将文件指针重新移到文件开头位置的函数是。
A.rewind(fp); B.fseek(fp,0,SEEK_SET);C.fseek(fp,-(long)ftell(fp),SEEK_CUR); D.fseek(fp,0,SEEK_END);(4)若用fopen()函数打开一个新二进制文件,该文件可以读也可以写,则文件的打开模式为 B 。
A."ab+" B."wb+" C."rb+" D."a+"(5)fread(buffer,64,2,fp)的功能是。
A.从fp所指的文件中读取64并存入buffer中B.从fp所指的文件中读取64和2并存入buffer中C.从fp所指的文件中读取64个字节的数据并存入buffer中D.从fp所指的文件中读取2个64字节的数据并存入buffer中(6)以下程序的功能是。
提示:PRN是打印设备。
#include <stdio.h>void main(){ FILE * fp;char chStr[]="HELLO";fp=fopen("PRN","w");fputs(chStr,fp);fclose(fp);}A.在屏幕显示HELLO B.把HELLO存入PRN文件中C.在打印机上打印出HELLO D.以上都不对10.2 填空题(1)使用fopen("abc","r+")打开文件时,若"abc"文件不存在,则返回。
字符串
3.常用字符串处理函数 例 #include <stdio.h> 包含在头文件 string.h ) main( 字符串输出函数puts { char string[80]; printf(“Input a string:”); 格式:puts(字符数组) 功能:向显示器输出字符串(输出完,换行) gets(string); 说明:字符数组必须以‘\0‟结束 puts(string); } 字符串输入函数gets 输入: How are you? 格式:gets(字符数组) 输出: How are you ? 功能:从键盘输入一以回车结束的字符串放入字符数组中,
} 用字符数组名,不要加& 输入串长度<数组维数 遇空格或回车结束 自动加‘\0‟
用字符数组名, 遇‘\0‟结束
例 main( ) { char a[5]={„H‟,‟e‟,‟l‟,‟l‟,‟o‟}; printf(“%s”,a); } 结果:Hello#-=* 例 main( ) { char a[ ]=“Hello”; printf(“%s”,a); } 结果:Hello
#include <string.h> 例 strcmp与strlen举例 #include <stdio.h> main() { char str1[] = ”Hello!", str2[] = ”How are you?”,str[20]; int len1,len2,len3; len1=strlen(str1); len2=strlen(str2); if(strcmp(str1, str2)>0) { strcpy(str,str1); strcat(str,str2); } else if (strcmp(str1, str2)<0) { strcpy(str,str2); strcat(str,str1); } else strcpy(str,str1); How are you?Hello! len3=strlen(str); Len1=6,Len2=12,Len3=18 puts(str); printf(”Len1=%d,Len2=%d,Len3=%d\n”,len1,len2,len3); }
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第十章一、选择题。
10.1以下能正确进行字符串赋值、赋初值的语句组是()。
A)char s[5] = {…a‟,‟e‟,‟i‟,‟o‟,‟u‟};B)char *s ;s =“good!”;C)char s[5] = “good!”;D)char s[5] ; s=“good!”;10.2设有定义:char str[]=”ABCD”;*p = str;则语句printf(“%d\n”, *(p+4));的输出结果是();A)68 B)0 C)字符D的地址D)不确定的值10.3语句printf(“%d\n”,strlen(“AST\n012\1\\”));的输出结果是();A)11 B)10 C)9 D)810.4有以下程序:#include <stdio.h>char fun( char *c){ if ( *c<=‟Z‟&& *c>=‟A‟) *c - =‟A‟-…a‟;return *c; }main(){ char s[81], *p = s;gets( s );while( *p ){ *p = fun( p ); putchar( *p ); p++; }putchar( …\n‟); }若运行是从键盘输入:OPEN THE DOOR <CR>(此处<CR>代表Enter键),则程序运行后的输出结果是()。
A)oPEN tHE dOOR B)open the doorC)OPEN THE DOOR D)Open The Door10.5有以下程序:#include <stdio.h>#include <string.h>void fun( char *w, int m){ char s, *p1, *p2;p1 = w; p2 = w + m – 1;while( p1<p2 ){ s = *p1++; *p1 = *p2--; *p2 = s ;}}main(){ char a[] = “ABCDEFG”;Fun( a, strlen(a) ); puts ( a ); }程序运行后的输出结果是()。
A)GFEDCBA B)AGADAGA C)AGAAGAG D)GAGGAGA 10.6有以下程序:#include <stdio.h>main(){ char s[] = “ABCD”, *p;for( p = s; p< s+4; p++) printf(“%s\n”, p); }程序运行后的输出结果是()。
A)ABCD B)A C)D D)ABCDBCD B C ABCCD C B ABD D A A10.7设有定义语句:char *aa[] = {“abcd”,”ABCD”};则以下叙述中正确的是()。
A)aa数组元素的值分别是字符串“abcd”和“ABCD”B)aa是指针变量,它指向含有两个数组元素的字符型一维数组C)aa数组的两个元素分别存放的是含有四个字符的一维数组的首地址D)aa数组的两个元素中各自存放了字符…a…和…A‟的地址10.8有以下程序:#include <stdio.h>main(){ char ch[2][5] = {“6937”,”8254”}; *p[2]; int i, j, s = 0;for( I = 0; i<2;i++) p[i] = ch[i];for( I = 0;I<2;i++)for(j = 0;p[i][j]>‟\0‟&&p[i][j]<=‟9‟;j+ = 2)s = 10 * s +p[i][j] –…0‟;printf(“%d\n”,s);}程序欲行的输出结果是()。
A)6385 B)69825 C)63825 D)69382510.9有以下程序:#include <stdio.h>main(){ char *alpha[6] = {“ABCD”,”EFGH”,”IJKL”,”MNOP”,”QRST”,”UVWX”}, * *P;int i; p =alpha;for( I = 0;i<4;i++) printf(“%s”, p[i]);printf(“\n”);}程序运行后的输出结果是()。
A)ABCDEFGHIJKL B)ABCD C)ABCDEFGHIJKLMNOPD)AEIM10.10库函数strcpy用以复数字符串。
若有定义和语句:Char str1[]=”string”.str2[8], *str3, *str4 =”string”;则以下对库函数strcpy的运用中错误的是()。
A)strcpy( str1,”HELLO1”) B)strcpy( str2,”HELLO2”)C)st rcpy( str3,”HELLO3”) D)strcpy( str4,”HELLO4”)二、填空题。
10.11以下程序运行后的结果是()。
#include <stdio.h>main(){ char b[]=”ABCDEFG”, *chp = &b[7];while( --chp> &b[0]) putchar( *chp );putchar(…\n‟);}10.12以下程序运行后的输出结果是()。
#include <stdio.h>void fun( char *a1, char *a2, char *a3 ){ int k ;for( k = 0; k < n; k++)a2[k] = ( a1[k]-…A‟-3+26)%26 +‟A‟;a2[n] = 0}main(){ char s1[5]=“ABCD”,s2[5];fun( s1,s2,4 ); puts(s2);}10.13以下程序运行后的输出结果是()。
#include <stdio.h>main(){ char *p[] = { “BOOL”,”OPK”,”H”,”SP”}; int i;for( I = 3;I >= 0;i--,i--)printf(“%c”, *p[i]); printf( “\n” );}10.14有以下程序,若运行时从键盘输入字符串qwerty<回车>和abcd<回车>,则程序的输出结果是()。
#include <stdio.h>#include <stdio.h>strle( char a[],char b[] ){ int num = 0, n = 0;while( *(a+num)!=‟\0‟) num++;while( b[n]){ *(a+num) = b[n]; num++; n++;}reture ( num );}main(){ char str1[81], char str2[82], *p1 = str1, *p2 = str2;gets( p1 ); gets( p2 ); printf(“%d\n”, strle( p1,p2 ));}10.15以下程序运行后的输出结果是()。
#include <stdio.h>#include <strng.h>#include <ctype.h>void fun( char str[] ){ int I, j;for( I =0,j = 0;str[i]; i++ ) if( isalpha( str[i])) str[j++]=str[i];str[j] = …\0‟;}main(){ char ss[80] = “It is!”;fun(ss); printf(“%s\n”,s s);}10.16以下fun函数的功能是将一个字符串的内容颠倒国哀,请填空。
#include <stdio.h>#include <string.h>void fun( char str[] ){ int I,j,k;for(i=0,j=( );i<j;i++,( )){ k = str[i]; str[i] =str[j]; str[j] =k;}}10.17以下程序运行后的输出结果是()。
#include <stdio.h>#include <string.h>main(){ printf( “%d\n”, strlen(“s\d\016\0end”)); }10.18以下程序运行后的输出结果是()。
#include <string.h>#include <stdio.h>main(){ char s[20] = “goodgood!”, *sp = s;sp = sp + 2; sp = “ to”; puts(s);}三、编程题。
10.19请编写函数mygets和myputs,其功能分别与gets和puts相同,函数中用getchar和putchar读入和输出字符。
10.20请编写函数,判断一字符串是否是回文。
若是回文函数返回值为1,;否则返回值为0.回文诗顺读和倒读都一样的字符串。
10.21请编写函数,删除字符串中指定位置(下标)上的字符。
删除成功函数返回被删除字符;否则返回空值。