当前位置:首页 > 实验05 数组
实验五 数组
一、实验目的
1、熟练掌握一维数组、二维数组的定义、赋值和输入输出方法; 2、熟练掌握字符数组和字符串函数的使用;
3、掌握与数组有关的常用算法(如查找、排序等)。
二、实验预习
1、阅读教材中数组部分内容。 2、编写好所需要的程序。
三、实验指导
1、输入一长度不超过10 的字符串,判断它是否回文。(51.c) 如:ab22ba,level 均为回文。 (1)算法分析:
回文其实就是字符串中的字符对称相等,所以就要判断对称的字符是否都相等,需 要用循环来控制。可设一字符数组a,长度为10,用来存放此字符串,再设循环变量 i,j,兼做数组下标,进入循环时i 的值为0,指向第零个元素,j 的值为数组长度减1,指向最后一个元素,判断a[i]和a[j]是否相等,如出现不等就退出循环,下次循环时i 增1,j 减1,继续判断a[i]和a[j]的关系,若没出现过不等的情况就是回文。另外应注意循环条件,如上例: 长度为偶数ab22ba,当i=3,j=2 时停止
长度为奇数level, 当i=2,j=2 时停止,故i (2)根据分析结果编写源程序。 #include \ /* 程序中要用到字符串处理函数*/ #include char a[10]; int i,j,f=1 ; /* f 用做标志,若发现某一a[i]与a[j]不等,就置f 为0, 退出循环,若f 为1就是回文,否则不是*/ scanf(\ /*用格式符s 整体输入字符串,因a 为数组名, 已代表数组起始地址,所以输入时不必加取地址符*/ for(i=0,j=strlen(a)-1;i if(a[i]!=a[j])f=0 ; if(!f)break ; } /* 若f 为0 提前退出循环,不是回文*/ if(f) printf(\ else printf(\} (3)在c 编辑环境下编辑源程序。 (4)编译【F9】,直到没有错误。 (5)运行【Ctrl+F9】,输入: wh33hw↙ (6)查看结果【Alt+F5】,输出:Y 2、编一个程序,将两个字符串s1 和s2 进行比较。如果s1>s2,输出一个正数;s1=s2,输出0;s1 两个字符串从第一个字符开始一一对应进行比较,直到不相等的那个字符,从而求得它们的ASCII 码的差值。比如,‘A’与‘C’相比,由于‘A’< ‘C’, 应输出负数,由于‘A’与‘C’的ASCII 码的差值为2,因此,应输出“-2”。同理,“And”和“Aid”比较,根据第2 个字符比较结果,‘n’比‘i’大5,因此应输出‘5’。 (2)程序如下: #include int i,resu ; char s1[100],s2[100]; printf(\gets(s1); /*输入串1*/ printf(\gets(s2); /*输入串2*/ i=0 ; While((s1[i]==s2[i]&&(s1[i]!='\\0'))i++; if(s1[i]=='\\0'&&s2[i]=='\\0')resu=0 ; /*如果相等, 输出0*/ else resu=s1[i]-s2[i]; /*如果不等,输出ASCII 码的差值*/ printf(\} (3)在C 编辑环境下输入源程序。 (4)编译【F9】,直到程序无错误。 (5)运行【Ctrl+F9】,输入: Input string1: aid<回车> input string2: and<回车> (6)查看运行结果【Alt+F5】: result: -5 四、实验内容 1、在C 编辑环境下编辑实验指导中给出的程序,编译并运行。 2、输入一个0 到255 之间的十进制整数,要求把此数转化为二进制形式。如:127↙ 01111111 提示:十进制转化为二进制用倒序取余法,可将每次产生的余数依次存入一数组中,输出时将数组倒序输出。(53.c) 3、编一个程序,将两个字符串连接起来,不要用strcat 函数。(例:输入china 和pliceman 两个字符串,结果应为chinapliceman 字符串)(54.c) 根据以上题目要求编程并上机调试运行。 五、实验报告要求 实验结束后,应整理实验报告,其内容应包括: 1、实验题目 2、设计思路 3、写出程序源代码 4、写出程序运行结果 5、对实验结果进行分析、总结
共分享92篇相关文档