实验五字符数组一实验目的1)理解字符数组的概念、定义和初始化;熟悉常用字符数组操作的函数。2)二程序示例[源程序2-1]编写函数实现任意两字符的连接。1#include<string.h>//引用操作字符数组库函数2#include<stdio.h>3void str_connect(chars1[81],chars2[20])//函数定义4{5inti=o,j=0;6while(s1[i])/ /循环至s1字符数组末尾7i++;8while(s1[i++]=s2[j++]);//字符数组连接9110 int main()11{12charstr1[81],str2[20]13gets(str1);gets(str2);//获取两个字符串并分别存放于str1和str2中14str_connect(str1,str2);//调用函数实现字符数组连接15puts(str1);//输出字符数组连接后结果16return O;171[程序输入]Hello<回车>World<回车>[程序输出]HelloWorld
实验五 字符数组 一 实验目的 1) 理解字符数组的概念、定义和初始化; 2) 熟悉常用字符数组操作的函数。 二 程序示例 [源程序 2-1] 编写函数实现任意两字符的连接。 1 #include <string.h> //引用操作字符数组库函数 2 #include <stdio.h> 3 void str_connect(char s1[81], char s2[20]) //函数定义 4 { 5 int i = 0, j = 0; 6 while(s1[i]) //循环至 s1 字符数组末尾 7 i++; 8 while(s1[i++]=s2[j++]); //字符数组连接 9 } 10 int main() 11 { 12 char str1[81], str2[20]; 13 gets(str1);gets(str2); //获取两个字符串并分别存放于 str1 和 str2 中 14 str_connect(str1,str2); //调用函数实现字符数组连接 15 puts(str1); //输出字符数组连接后结果 16 return 0; 17 } [程序输入] Hello<回车> World<回车> [程序输出] HelloWorld
[程序分析]该程序展示了如何使用数组名作为函数参数将两个字符串传递到函数中,以及通过数组名将函数中处理后的字符串返回该函数的调用处并输出的方法。程序中第1-2行为预编译指令,包含系统库头文件string.h和stdio.h,其中string.h中主要包含对字符串操作的函数。程序第3-9行为函数str_connect的定义,该函数无返回值,输入参数为两个字符型数组,其中:1、函数体中第5行定义两个整型变量i和j并分别初始化为0;2、第6-7行为while循环,主要目的是将i索引至s1数组中最后一个字符的位置,循环中止的条件是索引到s1最后一个元素后;3、第8行通过while循环将s2中的字符赋予s1数组,注意此时的j从0开始,而i从s1的最后一个位置开始索引,while循环中止的条件是复制到s2数组最后一个元素后,连接后的结果存放于s1数组中。程序第10-17行为主函数,其中:1、第12行定义两个字符型数组str1和str2,用于存储用户输入的两个字符串;2、第13行通过gets函数获取用户输入字符串并存储与str1和str2中,字符串的最后一个字符是"lo,这个字符是函数str_connect用于找到str1末尾和连接两个字符数组的判断条件:3、第14行调用自定义函数str_connect连接字符串str1和str2;4.第15行调用系统库函数puts输出连接后的结果;5、第16行的return语句返回整型值0,表示主程序运行正常。大家可以思考为什么str1数组的长度要比str2数组的长度长?[源程序2-2]编写程序,实现字符串的复制1#include<string.h>2#include <stdio.h>3#defineN100//宏定义4int main()5-6char s[N], t[N];7int i=0, j=0;8printf("input a string:");9gets(s);10for(;t[j++]=s[i++];);
[程序分析] 该程序展示了如何使用数组名作为函数参数将两个字符串传递到函数中,以 及通过数组名将函数中处理后的字符串返回该函数的调用处并输出的方法。 程序中第 1-2 行为预编译指令,包含系统库头文件 string.h 和 stdio.h,其中 string.h 中主要包含对字符串操作的函数。 程序第 3-9 行为函数 str_connect 的定义,该函数无返回值,输入参数为两 个字符型数组,其中: 1、 函数体中第 5 行定义两个整型变量 i 和 j 并分别初始化为 0; 2、 第 6-7 行为 while 循环,主要目的是将 i 索引至 s1 数组中最后一个字 符的位置,循环中止的条件是索引到 s1 最后一个元素后; 3、 第 8 行通过 while 循环将 s2 中的字符赋予 s1 数组,注意此时的 j 从 0 开始,而 i 从 s1 的最后一个位置开始索引,while 循环中止的条件 是复制到 s2 数组最后一个元素后,连接后的结果存放于 s1 数组中。 程序第 10-17 行为主函数,其中: 1、 第 12 行定义两个字符型数组 str1 和 str2,用于存储用户输入的两个 字符串; 2、 第 13 行通过 gets 函数获取用户输入字符串并存储与 str1 和 str2 中, 字符串的最后一个字符是’\0’,这个字符是函数 str_connect 用于找 到 str1 末尾和连接两个字符数组的判断条件; 3、 第 14 行调用自定义函数 str_connect 连接字符串 str1 和 str2; 4、 第 15 行调用系统库函数 puts 输出连接后的结果; 5、 第 16 行的 return 语句返回整型值 0,表示主程序运行正常。 大家可以思考为什么 str1 数组的长度要比 str2 数组的长度长? [源程序 2-2] 编写程序,实现字符串的复制。 1 #include <string.h> 2 #include <stdio.h> 3 #define N 100//宏定义 4 int main() 5 { 6 char s[N], t[N]; 7 int i=0, j=0; 8 printf("input a string:"); 9 gets(s); 10 for(;t[j++]=s[i++];);
11printf("t string is:");12puts(t);13return O;141[程序输入]inputastring:computer<回车>[程序输出]t string is: computer[程序分析]程序中第1-2行为预编译指令,包含系统库头文件string.h和stdio.h,其中string.h中主要包含对字符串操作的函数。程序中第6行两个字符数组s和t,数组长度均为N,s用来存储源串,t用来存储目的串,程序第9行调用字符串输入gets输入源串存入s中,程序第10行使用for循环完成将s中对应元素赋值给t中对应元素,当循环至s中元素的结束符0时,循环停止。三、程序编写初始化一个字符数组为"Thebestornothing",并将其中每个单词的字母顺序翻转后打印输出到屏幕。要求:1、字符数组的初始化在程序运行时由用户输入;2、字符数组的翻转和结果输出功能通过函数实现;3、字符数组不能定义成全局变量
11 printf("t string is:"); 12 puts(t); 13 return 0; 14 } [程序输入] input a string: computer<回车> [程序输出] t string is: computer [程序分析] 程序中第 1-2 行为预编译指令,包含系统库头文件 string.h 和 stdio.h,其中 string.h 中主要包含对字符串操作的函数。 程序中第 6 行两个字符数组 s 和 t,数组长度均为 N,s 用来存储源串,t 用 来存储目的串,程序第 9 行调用字符串输入 gets 输入源串存入s中,程序第 10 行使用 for 循环完成将 s 中对应元素赋值给 t 中对应元素,当循环至 s 中元素的 结束符'\0'时,循环停止。 三、程序编写 初始化一个字符数组为"The best or nothing",并将其中每个单词的字母 顺序翻转后打印输出到屏幕。要求: 1、 字符数组的初始化在程序运行时由用户输入; 2、字符数组的翻转和结果输出功能通过函数实现; 3、字符数组不能定义成全局变量