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

合集下载

《全国计算机等级考试二级教程——C语言程序设计》课后题及参考答案

《全国计算机等级考试二级教程——C语言程序设计》课后题及参考答案

本文由皓月90贡献 doc文档可能在WAP端浏览体验不佳。

建议您优先选择TXT,或下载源文件到本机查看。

《全国计算机等级考试二级教程——C 语言程序设计》课后题及参考答案 目 录 第一章、第二章、第三章、第四章、第五章、第六章、第七章、第八章、第九章、 第十章、第十一章、第十二章、第十三章、第十四章、第十五章、第十六章 第一章 程序设计基本概念 1.1 在 TRUBO C 环境中用 RUN 命令运行一个 C 程序时,所运行的程序的后缀是。

 答案:.exe 1.2 C 语言源程序文件的后缀是,经过编译后,生成文件的后缀是,经过连接后, 生成文件的后缀是。

 答案:.c .obj .exe 1.3 结构化程序由、、三种基本结构组成。

 答案:顺序、选择、循环 第二章 C 程序设计的初步知识 一、选择题 2.1 以下选项中正确的整型常量是 A)12. B)-20 C)1,000 D)4 5 6 答案:B 2.2 以下选项中正确的实型常量是 A)0 B)3. 1415 C)0.329×10(2)(10 的 2 次方) D).871 答案:D 2.3 以下选项中不正确的实型常量是 A)2.607E-1 B)0.8103e 2 C)-77.77 D)456e-2 答案:B 2.4 以下选项中不合法的用户标识符是 A)abc.c B)file C)Main D)PRINTF 答案:A 2.5 以下选项中不合法的用户标识符是 A)_123 B)printf C)A¥ D)Dim 答案:C 2.6 C 语言中运算对象必需是整型的运算符是 A)% B)/ C)! D)** 答案:A 2.7 可在 C 程序中用作用户标识符的一组标识符是 A)void define WORD B)as_b3 _123 If C)For -abc case D)2c DO SIG 答案:B 2.8 若变量已正确定义并赋值,符合 C 语言语法的表达式是 A)a=a+7; B)a=7+b+c,a++ C)int(12.3%4) D)a=a+7=c+b 答案:B 2.9 以下叙述中正确的是 A)a 是实型变量,C 允许进行以下赋值 a=10,因此可以这样说:实型变量中允许存放整 型值。

计算机二级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语言中,没有字符串这种数据类型, 因此可以将字符串存放在字符数组中。 这是处理字符串的方法之一。

《全国计算机等级考试二级教程——C语言程序设计》课后习题详细答案

《全国计算机等级考试二级教程——C语言程序设计》课后习题详细答案

《全国计算机等级考试二级教程——C语言程序设计》习题分析与详细解答第一章程序设计基本概念习题分析与解答1.1 【参考答案】EXE1.2 【参考答案】[1].C [2].OBJ [3].EXE1.3 【参考答案】[1]顺序结构[2]选择结构[3]循环结构第二章C程序设计的初步知识习题分析与解答一、选择题2.1 【参考答案】B)2.2 【参考答案】D)2.3 【参考答案】B)2.4 【参考答案】A)2.5 【参考答案】C)2.6 【参考答案】A)2.7 【参考答案】B)2.8 【参考答案】B)2.9 【参考答案】D)2.10 【参考答案】C)2.11 【参考答案】B)2.12 【参考答案】B)2.13 【参考答案】A)二、填空题2.14 【参考答案】[1]11 [2]122.15 【参考答案】[1]4.2 [2]4.22.16 【参考答案】[1]{ [2]} [3]定义[4]执行2.17 【参考答案】[1]关键字[2]用户标识符2.18 【参考答案】[1]int [2]float [3]double2.19 【参考答案】float a1=1.0, a2=1.0;或float a1=1, a2=1;(系统将自动把1转换为1.0)2.20 【参考答案】存储单元2.21 【参考答案】 3.52.22 【参考答案】[1]a*b/c [2]a/c*b [3]b/c*a2.23 【参考答案】把10赋给变量s2.24 【参考答案】[1]位[2]1位二进制数据(0或1)2.25 【参考答案】[1]8 [2]127 [3]01111111 [4]-128 [ 5 ] 10000000 2.26 【参考答案】[1]32767 [2]-32768 [3]100002.27 【参考答案】[1]十[2]八[3]十六三、上机改错题2.28 【分析与解答】第1行的错误:(1) include是一个程序行,因此在此行的最后不应当有分号(;)。

C语言计算机二级考试教程第10章

C语言计算机二级考试教程第10章

4
输入字符串的分隔符: scanf()函数的分隔符为:空格和回车键 gets()函数的分隔符为: 仅为回车键
例如:char a[10], b[10],c[10]; scanf(“%s%s”, a, b ); 输入:to ok<enter> a gets(c); 输入:to ok<enter>
t o \0
6
4个字符串函数
1.字符串复制函数strcpy(): strcpy(s1,s2); 将s2指针所指空间的字符串复制到s1所指空间。合法性: s1指针所指的内存空间必须是具体的,足够大的。 a b 例:char a[10]=“ok”,b[10],*p; p o o strcpy(b,a); 正确 k k \0 \0 strcpy (p, a); 错误 p=b; strcpy(p,a); 正确
o k \0
b
8
3.计算字符串长度函数strlen(): strlen(s) strlen(s)函数值为指针s所指串的长度,不包括 ‘\0‟。 例: char a[10]=“ok to”, b[5]=“s\016\t\0end”, char *p=“\101B\103D\n”; strlen(a) 函数值为5 strlen(b)函数值为3 strlen(p)函数值为5 strlen(“\b\n\t12345” )函数值为8
18
例:按字符串大小排序
void sort (char s[ ][5] , int n) { int i,j; char t[5]; strlen(s[i])> strlen(s[j]) for( i=0;i<=n-2;i++) for( j=i+1;j<=n-1;j++) if( strcmp(s[i],s[j])>0 ) { strcpy(t,s[i]); strcpy(s[i,]s[j]); strcpy(s[j] ,t); } } main( ) { char a[3][5]={“ok”,”to”,”yes”} ; sort(a,3); }

2019年最新-全国计算机等级考试实用应试教程二级C语言字符串-精选文档

2019年最新-全国计算机等级考试实用应试教程二级C语言字符串-精选文档
#include <string.h>
下面介绍几种常用的字符串处理函数。
1.字符串复制函数
作用是把一个字符串全部或部分复制到另一个字符 串尾部。其基本函数有两个。
(1) strcpy(字符数组1,字符串2)
功能:把字符串2复制到字符数组1中去(即给一个 字符数组赋值)。
(2)strncpy(字符数组1,字符串2,n)
我们还可以通过定义字符型指针数组并通过赋初 值来构成一个类似的字符串数组。例如:
char *p[3]={“a”,”bb”,”ccc”};
指针数组p的每个元素指向一个字符串,即p的 每个元素中存放着一个字符串的首地址。
此时,指针元素指向长度不同的无名一维字符 数组,各字符数组之间并不占连续的存储单元, 它们的联系全依赖与p指针数组元素,一旦p指针 数组中的元素地址被重新赋值,则相应的字符串 将丢失。
2.用给以一般数组赋初值的相同方式给一维字符数 组赋初值
按照一维数组的赋初值的方式,把初值依次放 入一对花括号内
3.在赋初值时直接赋字符串常量 可以直接用字符串常量给一维数组赋初值,例
如: char str[10]={“string”}; 或
char str[10]= “string”; 此时,由于“string”是字符串常量,系统已自
10.2 使指针指向一个字符串
10.2.1 通过赋初值的方式使指针指向一个字符串
可以在定义字符指针变量的同时,将存放字符 串的存储单元起始地址赋给指针变量。也可以先 定义一个存放字符串的字符数组,并将数组的首 字地址赋给指针变量。
10.2.2 通过赋值运算使指针指向一个字符串
若已定义一个字符指针变量,可以通过赋值运 算将某个字符串的起始地址赋给它,从而使其指 向一个具体的字符串

全国计算机等级考试二级c语言题库及答案

全国计算机等级考试二级c语言题库及答案

全国计算机等级考试二级c语言题库及答案一、单项选择题1. 在C语言中,以下哪个选项是正确的数据类型?A. 整型(int)B. 浮点型(float)C. 字符型(char)D. 所有选项都是答案:D2. 下列哪个函数用于计算两个数的和?A. max()B. min()C. sum()D. pow()答案:C3. 在C语言中,以下哪个关键字用于定义一个函数?A. ifB. whileC. returnD. void答案:D二、填空题1. 在C语言中,用于定义一个整型变量的关键字是________。

答案:int2. 字符串在C语言中是以________字符结尾的字符数组。

答案:'\0'3. C语言中,用于循环结构的关键字有________和________。

答案:for 和 while三、编程题1. 编写一个C语言程序,计算并输出1到100之间所有偶数的和。

```c#include <stdio.h>int main() {int sum = 0;for (int i = 1; i <= 100; i++) {if (i % 2 == 0) {sum += i;}}printf("The sum of even numbers from 1 to 100 is: %d\n", sum);return 0;}```2. 编写一个C语言函数,实现字符串的反转。

```c#include <stdio.h>#include <string.h>void reverseString(char str[]) {int len = strlen(str);for (int i = 0; i < len / 2; i++) {char temp = str[i];str[i] = str[len - i - 1];str[len - i - 1] = temp;}}int main() {char str[] = "Hello, World!";reverseString(str);printf("Reversed string: %s\n", str);return 0;}```以上是全国计算机等级考试二级C语言题库及答案的部分内容,涵盖了选择题、填空题和编程题。

二级全国c语言机试题及答案

二级全国c语言机试题及答案

二级全国c语言机试题及答案二级全国C语言机试题及答案1. 以下哪个选项是C语言中正确的字符串定义?A. char str[5] = "hello";B. char str[] = "hello";C. char str[6] = "hello";D. char str[5] = {'h', 'e', 'l', 'l', 'o'};答案:B2. 在C语言中,以下哪个关键字用于定义一个结构体?A. structB. unionC. enumD. typedef答案:A3. 以下哪个选项是C语言中正确的函数定义?A. int function(int a, int b) { return a + b; }B. int function(int a, int b) { return a - b; }C. int function(int a, int b) { return a * b; }D. All of the above答案:D4. 以下哪个选项是C语言中正确的数组初始化方式?A. int arr[5] = {1, 2, 3, 4, 5};B. int arr[5] = {1, 2, 3};C. int arr[5] = {};D. All of the above答案:D5. 在C语言中,以下哪个选项是正确的指针声明?A. int *p;B. int *p = 0;C. int *p = NULL;D. All of the above答案:D6. 以下哪个选项是C语言中正确的文件操作函数?A. fopenB. fcloseC. fprintfD. All of the above答案:D7. 在C语言中,以下哪个选项是正确的条件语句?A. if (a > b)B. if (a > b) { ... }C. if (a > b) { ... } else { ... }D. All of the above答案:D8. 以下哪个选项是C语言中正确的循环语句?A. for (int i = 0; i < 10; i++)B. while (condition)C. do { ... } while (condition);D. All of the above答案:D9. 在C语言中,以下哪个选项是正确的宏定义?A. #define PI 3.14159B. #define SQUARE(x) x * xC. #define MAX(a, b) ((a) > (b) ? (a) : (b))D. All of the above答案:D10. 在C语言中,以下哪个选项是正确的递归函数定义?A. int factorial(int n) {if (n == 0) return 1;else return n * factorial(n - 1);}B. int factorial(int n) {if (n == 0) return 1;else return n * factorial(n);}C. int factorial(int n) {if (n == 0) return 1;else return n * factorial(n - 1);}D. All of the above答案:A。

计算机二级第15讲

计算机二级第15讲
• 1 char *sp; • sp=“Hello!”; • 2 char *sp,s[10] =“Hello!”;; • sp=s;
10.3字符串的输入和输出
• 一、用printf输出时,输出项可以是字符串、字符 数组名、指向字符串的指针变量 • 1. scanf的s 格式串可以实现字符串的整体输入。 例: • char str[20]; • scanf(“%s”,str); /*str是地址 */ • • 2. printf的s格式串可以实现字符串的输出,例: • printf(“%s”,str); /*str是地址 */

char mark[10 ]; mark=“abcd”;错的 2.给字符元素逐个赋字符值,最后人为加入字符串结束标志 mark[9]=„\0‟;之前的元素可以逐个赋值也可以输入 值
for(i=0;i<=8;i++ )
scanf(“%c”,&mark[i]); mark[9]=„\0‟;
10.2使指针指向一个字符串
10.4 字符串数组
字符串数组就是数组中的每一个元素又都是存放字符串 的数组。 可以将一个二维字符数组看作一个字符串数组。 1.例:char line[10][80]; 数组line共有10个元素,每个 元素可以存放80个字符(79个普通字符,一个结束字 符),第一个下标决定字符串个数,第二个下标决定字 符串的最大长度。line是有10个字符串的数组,这些字 符串的最大长度为79。 2.字符串数组可以在定义的时候初始化: 例:char str[3][5]={“a”, “ ab”, “abc”}; /*根据定义的大小 初始化*/ char str[][5]={“a”, “ab”, “abc”}; /*根据右边字符串的 个数,定义数组大小*/
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

输出时直到遇第一 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!
10.2 使指针指向一个字符串
可以在定义字符指针变量的同时,将一个字符串赋值给指针变量。例如: char *ps1=“form one”; 如上,是把存放字符串常量的无名存储区的首地址赋给指针变量ps1,使ps1 指向字符串的第一个字符f。如下图所示: ps1 form one\0 无名存储区 又如: char str[]=“form two”, *ps2=str; 在定义指针变量的同时让指针变量指 向了str的首地址,即指向了字符串的 第一个字符f。
注意
10.1 用一维字符数组存放字符串
10.1.2 在C程序执行过程中给一维字符数组赋字符串
在定义时,给一维字符数组赋字符串: char mark[10]=“C Program”; (合法) 数组名为地址值,为一个 地址常量,不能被赋值。 char mark[10]; mark=“C Program”; (非法)
10.2 使指针指向一个字符串
用字符数组作为字符串和用指针指向的字符串之间的区别
若有以下定义: char mark[ ]= “PROGRAM”; char *pmark= “PROGRAM”; 它们在内存中的存储形式如下: mark pmark P R O G R A M \0
PROGRAM\0
区别
char str[10]={„s‟, ‟t‟, ‟r‟, ‟i‟, ‟n‟, ‟g‟, ‟!‟};
在内存中的存储形式是: s t r I n g ! \0 \0 \0
也可以按这种形式进行赋值: char str[10]={„s‟, ‟t‟, ‟r‟, ‟i‟, ‟n‟, ‟g‟, ‟!‟, „\0‟}; 在内存中的存储形式是: s t r I n g ! \0 \0 \0
调用puts函数来输出字符串,例如: char str[15]; gets( str ); puts( str );
空格一起 读入
系统自动会用’\0‟替代 最后的换行符<CR>。
若从键盘上依次输入: APROGRAM MING<CR> 输出结果为: APROGRAM MING
依次输出存储单元中的字符,遇到第一个’\0‟即结束输出,注意,调用该puts函数 输出时,系统并自动输出一个换行符。
注意
10.1 用一维字符数组存放字符串
10.1.1 通过赋初值的方式给一维字符数组赋字符串
★ 如下定义的是含有10个整型元素的一维数组,并初始化。 int a[10]={2,4,6,8,10}; 在内存中的存储形式是: 2 4 6 8 10 0 0 0 0 0
★ 如下定义的是含有10个元素的一维字符数组,并初始化。
第10章 字符串
10.1 10.2 10.3 10.4 10.5 10.6

用一维字符数组存放字符串 使指针指向一个字符串 字符串的输入和输出 字符串数组 用于字符串处理的函数 程序举例
10.1 用一维字符数组存放字符串
字符常量:是用单引号括起来的一个字符。 例如 „A‟ „C‟ „t‟ „!‟ „?‟
以下的赋值语句也是错误的: char str1[10]=“computer”, str2[10]; /*分别定义两个一维字符数组*/ str2=str1; /*赋值不合法*/
赋值号左边也为数组名
10.1 用一维字符数组存放字符串
10.1.2 在C程序执行过程中给一维字符数组赋字符串
例如,我们已经定义了一个一维字符数组,如下: char mark[10]; 我们也可以逐个给数组元素进行赋值,例如: mark[0]=„C‟; mark[1]=„ ‟; mark[2]=„P‟; mark[3]=„r‟; mark[4]=„o‟; mark[5]=„g‟; mark[6]=„r‟; mark[7]=„a‟; mark[8]=„m‟; mark[9]=„\0‟; 也可以在程序运行的过程当中,通过一个循环语句,从键盘上向数组中 输入指定的字符。如下: char mark[10]; int i; for(i=0;i<9;i++) scanf(“%c”,&mark[i]); /*通过键盘(终端)接收9个字符*/ mark[i]=„\0‟; 如从第一列输入: C Program<CR> 循环结束后,给mark[9]赋 予结束标志’\0‟。 在内存中的存储形式是: C P r o g r a m \0
此函数功能是计算出以s为起始地址的字符串的长度,并作为函数返回值。 注意:不包括串尾的结束标志’\0‟。 ★ 字符串比较函数strcmp。调用形式为: strcmp(s1,s2);
此函数功能是来比较s1和s2所指字符串的大小。若s1>s2,函数值为大于0(正数)的数; 若s1==s2,函数值等于0;若s1<s2,函数值为小于0(负数)的数。
当字符指针变量作为输入项:
char str[15] , *p=str; scanf(“%s”,p);
操作功能和上面相同
说明
① 当字符数组名作为输入项时,输入字符串的长度最好不要超过 字符数组的个数。 ② 当字符指针变量作为输入项时,该指针变量必须已指向确定的 有足够空间的连续存储单元。 ③ 用%s格式符输入字符串时,空格和回车符都作为输入数据的分隔符 而不能被读入。例如以上程序段输入:APROGRAM MING<CR>
元留给’\0‟,在二维字符数组中,每一行的最后一个存储单元都要有一个’\0‟。 字符串数组也可以在定义的同时赋初值。 例如:char ca[3][5]={“A”, ”BB”, ”CCC”}; ca[0][0] ca[0] ca[1] ca[2] A B C \0 B C \0 \0 C \0 \0 \0 \0 \0 \0 定义时赋初值时行下标可以省略: char ca[ ][5]={“A”, ”BB”, ”CCC”};
此函数功能是把s2所指字符串的内容复制到s1所指存储空间中,函数返回s1的值(即s1 的首地址)。注意:为保证复制的合法性,s1必须指向一个足够容纳s2串的存储空间。 ★ 字符串连接函数strcat。调用形式为: strcat(s1,s2);
此函数功能是把s2所指字符串的内容连接到s1所指的字符串后面,并自动覆盖s1串 末尾的’\0‟,函数返回s1所指的地址值。注意:s1所指字符串应有足够的空间容纳 两串合并后的内容。 ★ 求字符串长度函数strlen。调用形式为: strlen(s);
10.4 字符串数组
所谓字符串数组就是一个二维字符数组。 例如:char name[10][80]; /*定义了一个10行80列的二维字符数组*/ 也可以把该二维数组视为由10个一维数组构成,每一个一维数组中又包含 80个数组元素。
注意:作为字符串使用时,每一行最多可以存放79个有效字符,最后一个存储单
无论用上面哪中方式赋值,字符串中的结束标志总是为第一个。
10.1 用一维字符数组存放字符串
10.1.1 通过赋初值的方式给一维字符数组赋字符串
也可以用赋初值的方式来定义字符数组的大小,这时定义时一定要写成: char str[]={„s‟, ‟t‟, ‟r‟, ‟i‟, ‟n‟, ‟g‟, ‟!‟, „\0‟}; ★ 该字符串的实际长度为7。 ★ 该数组中包含了8个元素,在这种情况下,一定要人为的在后面加一个’\0‟。 否则该数组中就没有结束标志,就不能称数组中存放的是字符串了。 例如: char str[]={„s‟, ‟t‟, ‟r‟, ‟i‟, ‟n‟, ‟g‟, ‟!‟};
ps2
form two\0 str
10.2 使指针指向一个字符串
通过赋值运算使指针指向一个字符串
例如:char *ps1; ps1=“from one”; 使指针ps1指向字符 串的第一个字符f。
又如:char str[ ]=“from two”, *ps2; ps2=str; 使指针ps2指向了存放字 符串的字符数组str的首 地址。
相关文档
最新文档