第10章+字符串

合集下载

C语言程序设计_谭浩强_第二版_CH10

C语言程序设计_谭浩强_第二版_CH10

}
第十章 指针 10.3 数组的指针和指向数组的指针变量 10.3.2 通过指针引用数组元素 例10.5输出数组中的全部元素。 ②通过数组名计算数组中元素的地址,找出元素的值。
main() {
int a[10],i; for(i=0;i<10;i++){scanf(“%d”,&a[i]);} print(“\n”); for(i=0;i<10;i++){printf(“%d”,*(a+i));} print(“\n”);
}
运行结果为: 100,10 100,10
第十章 指针 10.2 变量的指针和指向变量的指针变量
10.2.1指针变量的引用 例10.1 通过指针变量访问整型变量
pointer_1 &a
a 100 *pointer_1
pointer_2 &b
b 10 *pointer_2
第十章 指针 10.2 10.2 变量的指针和指向变量的指针变量
10.2.1指针变量的引用 例10.3 通过指针变量访问整型变量
pointer_1 &a
a 5 *pointer_1
pointer_2 &b
b 9 *pointer_2
第十章 指针 10.2 变量的指针和指向变量的指针变量
10.2.1指针变量的引用 例10.3 通过指针变量访问整型变量
b 5 *pointer_2
&b
第十章 指针 10.2 变量的指针和指向变量的指针变量
10.2.1指针变量的引用 例10.3 通过指针变量访问整型变量
pointer_1 &a
a 9 *pointer_1

C语言全国计算机二级等级考试教程第一二章(章节带习题)

C语言全国计算机二级等级考试教程第一二章(章节带习题)
10
2.2 标识符、常量和变量
2.2.3 符号常量
在C语言中,可以用一个符号名来代表一个常量,称为符号常
量。但是这个符号名必须在程序中用(#define)进行特别的“
指定"。 例2.2 计算圆面积和周长,此程序中将如何教大家使用符号常量。
#include “stdio.h” /*包含头文件*/
#define PI 3.14159 /*定义符号常量,符号常量名为PI,用PI来代表3.14159*/
main()
/*主函数,程序的入口*/
{double r,s,l;
/*声明部分,定义了3实型个变量*/
r
r=5.0;
/*给变量r赋值*/
函 s=PI*r*r;
数 体
l=2*PI*r;
/*计算圆的面积*/ /*计算圆的周长*/
s
printf(“s=%f,l=%f\n”,s,l/)*;分别圆的面积和周长*/
/*给变量b赋值*/
数 体
area=a*b;
/*将a*b的结果赋值给变量area*/
printf(“a=%f,b=%f,area=%f\n”,a,b,area/)*;分别输出矩形的两条边长和面积*/
1.2
}
3.6
a=1.200000,b=3.600000,area=4.320000
4.32
注意:
1. C程序由函数组成,一个程序必须有一个且只能有一个主函数(main),C程
a
b
1.5000002.500000 2.5000003.500000
a b
内存空间
2.在程序中,声明变量就是在计算机内存中申请了某个内存单元。对变量 进行赋值,实质上就是把数据存入该变量所代表的存储单元中。

第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章  流类库与输入输出

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章 字符串

计算机二级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常用函数

《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个字节

第10章 预处理命令

第10章 预处理命令

第十章预处理命令所谓编译预处理是指,在对源程序进行编译之前,先对源程序中的编译预处理命令进行处理;然后再将处理的结果,和源程序一起进行编译,以得到目标代码。

一、宏定义与符号常量在C语言中,“宏”分为无参数的宏(简称无参宏)和有参数的宏(简称有参宏)两种。

无参宏定义1.无参宏定义的一般格式#define 标识符字符串其中:“define”为宏定义命令;“标识符”为所定义的宏名,通常用大写字母表示,以便于与变量区别;“字符串”可以是常数、表达式、格式串等。

2.使用宏定义的优点(1)可提高源程序的可维护性(2)可提高源程序的可移植性(3)减少源程序中重复书写字符串的工作量例9.1 输入圆的半径,求圆的周长、面积和球的体积。

要求使用无参宏定义圆周率。

/*程序功能:输入圆的半径,求圆的周长、面积和球的体积。

*/#define PI 3.1415926 /*PI是宏名,3.1415926用来替换宏名的常数*/void main(){float radius,length,area,volume;printf("Input a radius: ");scanf("%f",&radius);length=2*PI*radius; /*引用无参宏求周长*/area=PI*radius*radius; /*引用无参宏求面积*/volume=PI*radius*radius*radius*3/4; /*引用无参宏求体积*/printf("length=%.2f,area=%.2f,volume=%.2f\n", length, area, volume);}3.说明(1)宏名一般用大写字母表示,以示与变量区别。

但这并非是规定。

(2)宏定义不是C语句,所以不能在行尾加分号。

否则,宏展开时,会将分号作为字符串的1个字符,用于替换宏名。

(3)在宏展开时,预处理程序仅以按宏定义简单替换宏名,而不作任何检查。

FlashMX动画设计教程第10章 ActionScript的语法规范

FlashMX动画设计教程第10章  ActionScript的语法规范

10.1.3 “{ }”语法(大括号语法) 语法( 语法 大括号语法)
大括号“{}”可以把一段Actions代码括起来,用于 分割一段程序区。括号中的代码组成一个相对完整的 代码段来完成一个相对独立的功能。在子程序、函数 或者函数组中,这种代码用得比较多。
语法( 10.1.4 “( ) 语法(圆括号语法) ( )”语法 圆括号语法)
10.2.5 影片剪辑 影片剪辑(MovieClip)类型 类型
10.3 ActionScript变量
10.3.1 命名变量
变量的命名规则如下: 开头的第一个字符必须是字母,不能是非字母元件。 变量名必须是一个合法的ActionScript标识符,不可 以是关键字或文字标识值。 变量必须有唯一的自身变量范围。 如果在定义时不明确一个变量的类型,则Flash MX 会在为变量赋值时自动确定它的数据类型。例如: x="hello"会将x的类型设定为字符串。尚未赋值的变 量的类型为“undefined”。
10.2 ActionScript的数据类型
10.2.1 字符串 字符串(String)类型 类型
10.2.2 数值类型
10.2.3 布尔 布尔(Boolean)类型 类型
布尔类型的值只能为“真”或“假”。在 ActionScript中的“真”、“假”也可以和“1”,“0” 进行转化。同样的,也可以用“1”,“0”来给布尔类 型变量赋值。
第10章 ActionScript的语法规范 章 的语法规范
本章要点: ActionScript的基本语法 ActionScript的数据类型 ActionScript程序中的变量 ActionScript程序中的操作符
10.1 ActionScript的基本语法

18 字符数组与字符串

18 字符数组与字符串

•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",str); }
•7
团队作业2:输入一句话,统计 这句话中有多少单词?

主函数思路:
定义数组sentence 输入sentence 统计单词个数number(数空格的个数即可) (定义函数实现) 输出number

•8
团队作业2
#include <stdio.h> #define N 500 //N应该能够容纳最大的数据+1 int Count( char a[], int n, char x) ;//可以使用上一题定义的函数 void main() { int i,num; char sentence[N]; printf("please input a sentence:"); gets(sentence); //一次性输入字符串,不能循环输入 for(i=0; sentence[i]!=„\0‟; i++ ); //数实际字符个数 num=Count(sentence, i, „ ‟); //i是实际长度 printf("单词个数是:%d \n",num); } •9
•3
预习检查(Q&A)

C语言第十章复习题(含答案)

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 )。

C语言程序设计第10章文件及其应用

C语言程序设计第10章文件及其应用

学一学
1.定义文件指针 一般形式为: FILE * fp; 其中fp就是所定义文件指针。 FILE类型 以及所有的文件读写函数和相关常量都定 义在文件stdio.h中,在源程序的开头要 包含头文件 stdio.h 。
学一学
2.打开文件 C语言中,使用fopen函数来打开文件。打开文件是使 一个文件指针变量指向被打开文件的结构变量,以便通 过该指针变量访问打开的文件。fopen函数的调用形式 如下: fopen(chFileName,mode); 以mode 方式打开文件chFileName。其中,参数 chFileName 是将要读写文件的文件名,mode为文件 的操作方式。若文件打开成功,返回一个文件指针,若 打开失败,则返回空值NULL,NULL在stdio.h中被定 义为0。文件操作方式mode是一个整数,其取值及含 义如表10-1所示。

流程图
开始 定义文件指针fp,定义整型数组 iArray[5],定义循环变量i 以写二进制文件方式打开文件 fp=fopen("test.dat","wb") N i=0
fp==NULL Y
i<5 Y 输入1个整数存入 数组元素iArray[i]
N
i++
把数组iArray中5 个整数写入文件
显示出错信息 关闭文件 exit(0)
试一试
问题10.1编一程序从键盘输入一串字符“may friendship forever! ”,然后保存在文件myInfo.txt中。 【解题步骤】 1.定义文件指针fp; 2.定义字符数组chInfo用来存输入的字符串; 3.以写文本文件方式打开文件myInfo.txt; 4.如果打开文件失败,则输出错误信息并结束程序; 5.否则,打开文件成功,则从键盘输入数据; 5.将字符数组chInfo中的字符写入文件myInfo.txt; 6.关闭文件。

C语言全国计算机二级等级考试教程第10章 字符串(章节带习题)

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!

Vue第10章 计算属性

Vue第10章 计算属性

Vue计算属性计算属性的关键词为:computed计算属性在处理一些复杂逻辑时是很有用的。

我们来看一个字符串逆序的示例:<div id="app"><h3>原始字符串:{{message}}</h3><h3>逆序字符串:{{message.split("").reverse().join("")}}</h3> </div>new Vue({el:'#app',data:{message:"江山如此多娇,引无数英雄竞折腰"}})1、使用计算属性上述示例html部分看起来比较复杂,我们通过计算属性实现如下:<div id="app"><h3>原始字符串:{{message}}</h3><h3>逆序字符串:{{reversedMessage}}</h3></div>var vm=new Vue({el:'#app',data:{message:"江山如此多娇,引无数英雄竞折腰"},computed:{//计算属性的getterreversedMessage(){return this.message.split("").reverse().join("");}}})上述实例中声明了一个计算属性reversedMsg。

提供的函数将用作属性vm.reversedMsg的getter。

你可以像绑定普通属性一样在模板中绑定计算属性。

Vue知道依赖于发生改变时,所有依赖的绑定也会更新。

而且最妙的是我们已经以声明的方式创建了这种依赖关系:计算属性的getter函数是没有副作用(side effect)的,这使它更易于测试和理解。

[汇编]《汇编语言》第10章CALL和RET指令

[汇编]《汇编语言》第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)转移。

第10章 sed 用 法 介 绍

第10章 sed 用 法 介 绍

这个模式查询以ing结尾的任意单词。
10.4.8 首行
要打印文件第一行,使用行号:
93
第10章 sed 用 法 介 绍
g 将模式2粘贴到/pattern n/
y 传送字符
n 延续到下一输入行;允许跨行的模式匹配语句
如果不特别声明,sed例子中使用下述文本文件quote.txt。
10.3 sed和正则表达式
sed识别任何基本正则表达式和模式及其行匹配规则。记住规则之一是:如果要定位一特
殊字符,必须使用(\)屏蔽其特殊含义,如有必要请参照第 7章正则表达式。第7章使用的所
p 打印匹配行
= 显示文件行号
a\ 在定位行号后附加新文本信息
示打印定位(匹配)行。
Hale Waihona Puke 10.4.2 打印范围 可以指定行的范围,现打印1到3行,用逗号分隔行号。
92
第二部分 文 本 过 滤
下载
sed脚本文件 [选项] 输入文件
不管是使用shell命令行方式或脚本文件方式,如果没有指定输入文件, sed从标准输入中
接受输入,一般是键盘或重定向结果。
sed选项如下:
n 不打印;sed不写编辑行到标准输出,缺省为打印所有行(编辑和未编辑)。p命令可以
91
第10章 sed 用 法 介 绍
有正则表达式在sed中都是合法的。
10.4 基本sed编程举例
下面通过例子实际检验一下sed的编辑功能。
10.4.1 使用p(rint)显示行
print命令格式为[address[,address]P。显示文本行必须提供sed命令行号。
错误在哪儿?原意只打印第二行,但是却打印了文件中所有行,为此需使用 -n选项,显

C语言“字符串”

C语言“字符串”
2013/7/25
程序运行过程: 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章 字符串数组(培训)

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

c语言课件《字符串》概述

c语言课件《字符串》概述
或者char c[6]=“China”;
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章补充习题及答案

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"文件不存在,则返回。

第10章 文件和异常习题及答案

第10章 文件和异常习题及答案

1、关于以下代码的描述,错误的选项是?with open('abc.txt','r+') as f:lines = f.readlines()for item in lines:print(item)A、执行代码后,abc.txt文件未关闭,必须通过close()函数关闭。

B、打印输出abc.txt文件内容。

C、item是字符串类型。

D、lines是列表类型。

答案:A2、以下关于Python 文件的描述,错误的是:A、open()函数的参数处理模式’ b ‘表示以二进制数据处理文件。

B、open()函数的参数处理模式’ + ‘表示可以对文件进行读和写操作。

C、readline()函数表示读取文件的下一行,返回一个字符串。

D、open()函数的参数处理模式’ a ‘表示追加方式打开文件,删除已有内容。

答案:D3、有关异常说法正确的是?A、程序中抛出异常终止程序。

B、程序中抛出异常不一定终止程序。

C、拼写错误会导致程序终止。

D、缩进错误会导致程序终止。

答案:B4、对以下程序描述错误的是?try:#语句块1except IndexError as i:# 语句块2A、该程序对异常处理了,因此一定不会终止程序。

B、该程序对异常处理了,不一定不会因异常引发终止。

C、语句块1,如果抛出IndexError 异常,不会因为异常终止程序。

D、语句块2 不一定会执行。

答案:A5、程序如下,输入的是1a 结果是:( )try:number = int(input("请输入数字:"))print("number:",number)print("=======hello======")except Exception as e:# 报错错误日志print("打印异常详情信息:",e)else:print("没有异常")finally:#关闭资源print("finally")print("end")A、number: 1打印异常详情信息:invalid literal for int() with base 10:finallyendB、打印异常详情信息:invalid literal for int() with base 10:finallyendC、========hello===========打印异常详情信息:invalid literal for int() with base 10:finallyEndD、以上都正确答案:B6、编写程序,在D盘根目录下创建一个文本文件test.txt,并向其中写入字符串hello world。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

用printf( )对字符数组输出字符串时,用%s控制格式;
说明:
• 1.用%s输入字符串时,空格和回车都作为输入数 据的分隔符而不能被读入。 • 2.输入字符串的长度超过字符数组所能容纳的字 符个数时,系统不报错,但是下标越界,要注意。 • 3.输入控制项可以是“字符数组名”,字符数组 元素的地址,或字符指针变量。如果是元素地址 则从这个元素地址开始依次放入数组中;如果是 指针变量,那么该指针必须已经指向有足够空间 的连续存储单元。 • 4.输出时,用%s可以实现字符串整体输出,直到 遇到‘\0‟为止。但‘\0‟本身不输出,输出结束后 不自动换行。
例题4. 输出字符串中部分字符
#include <stdio.h>
#include <string.h>
void main( )
{ char a[ 20]=“ABCDEFG”, *ps; ps=a+strlen(a); while( --ps>&a[0]) putchar(*ps); putchar(„\n‟); while( *ps) { printf(“%s\n”,ps); ps=ps+2; } }
strcat (str1 ,str2);
printf (“str1:%s\n”, str1); strcat (str1 ,”C language”); puts(str1); 输出结果: } program Basic program Basic C language
3)求字符串长度:
形式:strlen(s);
其中:s可以是字符数组或字符串。
作用:求s中字符个数,不包括‘\0‟。 例:char str[ ]=”programming”; int a;
a=strlen (str);
a中为11
例题:输入一字符串(<80),将该字符串反序输出.
void main()
{ char str1[80];int i,n;
使用gets( ) 和puts( )函数输入输出字符串:
gets( )和 puts( )专用于输入输出字符串: 字符串输入函数使用形式: gets( 字符数组名) 作用: 输入一字符串给字符数组。 例如: char ss[10]; gets (ss); 从键盘输入一串字符给ss,直到输入一个换行符为止,换行 符读入后,不作为字符串的内容,而是系统将其自动用‘\0‟ 代替。 注意: 用gets( )可以输入带有空格的字符串, 而用scanf( )则不能输入带有空格的字符串。
字符串输出函数使用形式:
puts (字符数组名) 作用:将字符数组中字符输出。输出时候从字符 串起始地址开始,依次输出字符,直到遇到第一个 ‘\0‟为止,并自动输出一个换行符! 例如: char str[ ]={“book\n pen\n”}; puts (str) ;
结果:book
pen
例题:gets( )和 puts( )使用
1)字符串拷贝函数: 形式: strcpy ( s1,s2); 其中: s1 字符数组, s2 字符数组或字符串 作用: 将s2拷贝到s1中。(s1≥s2) 例:char sx[10]=“abc”, sy[ ]=”string”; strcpy(sx,sy);
puts(sx);
输出结果:string
2.使指针指向一个字符串:
可以在定义字符指针时赋一个字符串: char *p1=“string”, *p2=“abc123”;
可以通过赋值语句给字符指针赋值: char *pa, *pb; pa=“Sunday”; pb=“week”;
字符数组与字符指针的区别:
① 字符数组中每个元素存放一个字符。 字符指针仅存字符串的首地址。 ② 都可以在定义时赋字符串。但在程序中字符数组 名不能赋字符串,而字符指针可以。例如: char str[10], *ps str =”abcd”; ps =”china”; // 错 // 对
2)字符串连接函数: 形式:strcat (s1,s2); 其中:s1 字符数组名。 s2 字符数组名或字符串。 作用: 将 s2字符串连接到s1后边 例如: char s1[20]=”china ”; strcat(s1,”people”); 执行后s1中为: china people
例题: void main() { char str1[30]=”program”, str2[ ]=”Basic”;
}输Leabharlann 结果: BeijingShanghai
Tianjin Chongqing
例题6:字符数组作函数参数 (注意数组实参的变化) #include <stdio.h> void fun( char *s1, char *s2, int n) { int k; for(k=0; k<n; k++) s2[k]=(s1[k]-‟A‟-3+26)%26+‟A‟; s2[k]=„\0‟; } void main( ) { char a[5]=“ABCD”, b[5]; fun(a, b, 4); puts(b); }
例题3: 用指针实现两个字符串的连接. #include <stdio.h> void main() { char p1[20]="abcde", *p2="fghi"; int i=0; while(p1[i]!='\0') i++; while(p1[i++]=*p2++); printf(“%s\n”,p1); printf(“%s\n”,p2); }
又如:char str[10]; strcpy(str,“china”); 或:strcpy(str,“china”,2); str 中为“ch\0” 使用注意: ① 拷贝时连同‘\0‟一起拷贝。
例题:字符串拷贝函数使用
#include <stdio.h> #include <string.h> void main() { char str1[ ]=“C++ programming”; char str2[20]; strcpy(str2,str1); puts(str2); //输出 C++ programming strcpy(str2, “china”); puts(str2); //输出china(注意) }
单个字符的输入输出:
#include <stdio.h> void main( ) { char ss[10]; int i; for(i=0;i<10;i++) scanf(“%c”,&ss[i]); for(i=9;i<=0;i--) printf(“%c”,ss[i]); }
字符串的输入输出:
1.用一维字符数组处理字符串:
以下是对一维字符数组赋值的形式:
char s1[6]={„a‟,‟b‟,‟c‟,‟d‟,‟!‟,‟5‟};
char s2[ ]={„C‟,‟h‟,‟i‟,‟n‟,‟a‟,‟\0‟};
char s3[10]={„s‟,‟s‟,‟d‟,‟d‟,‟\0‟}; char s4[20]=“programming”; char s5[ ]=“programming”; 讨论对应的存放形式!!
例题1:输入一字符串,输出其中的大写字母:
#include <string.h> #include <stdio.h> void main( ) { char str[80];int i, n;
gets(str); //输入一串字符 (<80个字符)
n=strlen(str);
for(i=0; i<n; i++) if(str[i]>=„A‟&&str[i]<=„Z‟) printf(“%3c”,str1[i]); printf(“\n”);
}
例题2:字符指针作函数参数 #include <stdio.h> int flen(char *s) { int n=0; while(*(s+n)!=„\0‟) n++; return n; } main( ) { char s1[ ]=“ABCDEFG”, *ps1=“abcdefg”; int len1, len2,len3; len1=flen(s1); len2=flen(ps1); len3=flen(ps1+3); printf(“%d %d %d\n”,len1,len2,len3); }
第10章
字符串
字符串处理: 1)用数组
2)字符型指针 例如: char a1[ ]=“abcde”; char *p1=“asdfgh”; printf(“%s\n”,a1); 或:puts(a1); //输出字符串 printf(“%s\n”,p1); 或:puts(p1); //输出字符串 …. printf(“%c\n”,a1[3] ); //输出一个字符 printf(“%c\n”,*(p1+4) ); //输出一个字符
字符串数组:
字符串数组:数组中的每个元素是个字符串,或称由 字符串组成的数组。 1)用二维数组实现: char as[4][10]={“abcd”,”xyz”,”string123”,”A”}; //每行可以存放一个字符串 含义: as[0] a b c d \0 as[1] x y z \0 as[2] s t
例题5. 字符型指针数组的使用
#include <stdio.h> void main( ) { int i; char *a[ ]={“Beijing”,”Shanghai”,”Tianjin”,”Chongqing”}; for(i=0;i<4;i++)
相关文档
最新文档