第八次课作业 请预习第七章:指针 上课已讲例题: 例题8-1
题码:章节:数组 考查点:键盘输入技巧的掌握和二维数组的应用 难度:2 编写一程序p216.C实现以下功能
求任意的一个m×m矩阵的最大数及其所在的行列数,m(2<=m<=20)及矩阵元素从键盘输入(只考虑int型)。编程可用素 材:printf(“Please input m: ”)...、printf(“\\nPlease input array:\\n”)...、 printf(“\\nmax=...,i=...,j=...\\n”...。 程序的运行效果应类似地如图1所示,图1中的 1 45 67 235 464 35 6 89 32342 8 347 9346 47 95 746 46 785 436 19434 634 3235 567 24 8465 25 是从键盘输入的内容。
图1 程序运行效果示例 类似题:
题码:章节:考查点:二维数组名作为函数参数 难度:0 根据要求编写程序P818.C的指定部分:
程序P818.C已编写部分代码(单击此处下载),请根据程序中的要求完善程序——注意,除指定位置外,不能对程序中已有部分作任何修改或重新编写一个程序,否则作0分处理。
程序的功能是:找出任意的一个m×n矩阵每一行上的最大值的列下标并按示例格式要求显示。m、n(2<=m<=20、2<=n& lt;=20)及矩阵元素从键盘输入。编程可用素材:printf(\。 程序的运行效果应类似地如图1所示,图1中的5 6和 31 42 36 74 2358 88 32 57 37 43 47 1447 97 51 257 7 445 459 33 65 44 3 425 43 68 3425 82 789 123 2134 是从键盘输入的内容。
图1 程序运行效果示例 例题8-2
题码: 章节:数组 考查点:数组、循环语句的使用、(折半查找法) 难度:5 编写一程序P7-747.C实现以下功能
有15个数已按由大到小的顺序存放在一个数组a[15]中,现再输入一个数,要求用折半查找法找出该数是数组中第几个(从0开始计数)元素a[i]的值。如果该数不在数组中,则打印出相应的提示信息。
1 / 6
程序的运行效果应类似地如图1和图2所示,图1中的30 28 26 25 24 23 22 21 19 15 13 10 8 6 4和13、图 2中的30 28 26 25 24 23 22 21 19 15 13 10 8 6 4和90是从键盘输入的内容。
图1 程序运行效果示例 图2 程序运行效果示例 例题8-3
题码:章节:数组 考查点:字符数组的处理,循环和判断 难度:2 编写一程序p220.C实现以下功能
从键盘读入一行字符(约定:字符数≤127字节),统计及输出其中的字母、数字、空格和其他符号的个数。编程可用素 材:printf(\、 printf(\。
程序的运行效果应类似地如图1所示,图1中的gfaskl45623cvsac,53dwafl faf32535是从键盘输入的内容。
图1 程序运行效果示例 类似题:
题码: 章节: 考查点:数组名作为函数参数、数组元素逆序存放算法 难度:0 根据要求编写程序P817.C的指定部分: 程序P817.C已编写部分代码(单击此处下载),请根据程序中的要求完善程序——注意,除指定位置外,不能对程序中已有部分作任何修改或重新编写一个程序,否则作0分处理。
程序的功能是:从键盘输入一行可带空格的字符串(约定:字符数≤127字节),按逆序输出该字符串。注意,程序中不能使用库函数strrev或使用同名的变量、函数、单词。
程序的运行效果应类似地如图1所示,图1中的abc xyz是从键盘输入的内容。
图1 程序运行效果示例 例题8-4
题码:章节:数组 考查点:排序算法,二维字符数组及字符串处理函数的应用, 难度:3 编写一程序p719.C实现以下功能
从键盘上输入5个字符串(约定:每个字符串中字符数≤80字节),对其进行升序排序并输出。编程可用素材:printf(“Input 5 strings:\\n”)...、printf(“---------------------------\\n”)...。 程序的运行效果应类似地如图1所示,图1中的 hello my friend
Are you ready? help!
是从键盘输入的内容。
2 / 6
图1 程序运行效果示例 课后习题 习题8-1
题码:章节:数组 考查点:键盘输入技巧的掌握和二维数组的应用,判断条件的设定 难度:3 编写一程序p313.C实现以下功能
求任意的一个m×n矩阵的鞍点——鞍点是指该位置上的元素在该行上为最大、在该列上为最小,矩阵中可能没有鞍点,但最多只有一个鞍点。m、 n(2<=m<=20、2<=n<=20)及矩阵元素从键盘输入(只考虑int型和每行、每列中没有并列最大/最小的情况)。
编程可用素材:printf(\、 printf(\、printf(\\\nmei you an dian.\\n\、printf(\。 程序的运行效果应类似地如图1和图2所示,图1中的5 6和 31 42 36 74 2358 88 32 57 37 43 47 1447 97 51 257 7 445 459 33 65 44 3 425 43 68 3425 82 789 123 2134 及图2中的5 6和
31 42 1136 74 2358 88 32 57 4137 43 47 1447 97 51 1257 7 445 459 33 65 744 3 425 43 68 3425 2182 789 123 2134 是从键盘输入的内容。
图1 程序运行效果示例(无鞍点) 提示:
图2 程序运行效果示例(有鞍点)
1、 用i控制行for(i=0; i maxj列用for(k=0; k 题码: 章节:程序的控制结构 考查点:基本输入/输出、if语句的使用、循环语句的使用、数组的正确使用 难度:2 编写一程序p701.C实现以下功能 从键盘读入10个数存放在一个数组中,要求用户由小到大输入。如果发现读入的某个数不是由小到大,则该数输入无效,继续读入后面的输入数据。再将这 10个数依次输出到屏幕上,要求每个数的输出宽度为5、不足5位的在其左边补上空格、数与数之间使用逗号(,)分隔。然后输入一个数,要求找出该数是数组中第几个(序号从1开始计算)元素的值,如果该数不在数组中,则输出“Not Find!”。 编程可用素材:printf(\、 printf(\、 3 / 6 printf(\、printf(\。 程序的运行效果应类似地如图1、图2和图3所示,图1中的1 2 9 10 20 30 80 90 100 101和80、图2中的 1 2 9 10 20 30 80 90 100 101和70、图3中的1 2 9 10 20 30 80 90 72 68 100 101和 100是从键盘输入的内容。 图1 程序运行效果示例 图2 程序运行效果示例 图3 程序运行效果示例 提示:顺序查找 1)、输入时,由于要求输入从小到大,因此先输入arr[0],再次输入数据时先暂时放在temp中,当temp>arr[0]时,则arr[1]=temp,依次循环输入 2)、查找某个数时采用了顺序查找法, 习题8-3 题码: 章节:数组 考查点:字符数组的处理,循环和判断 难度:1 编写一程序p221.C实现以下功能 从键盘读入一个字符串(约定:字符数≤127字节),检查该字符串是否是回文。所谓回文即正向与反向的拼写都一样,例如:adgda。编程可用素 材:printf(\、printf(\、 printf(\。 程序的运行效果应类似地如图1和图2所示,图1中的asdfghjhgfdsa和图2中的asdfghjhgfdsaa是从键盘输入的内容。 图1 程序运行效果示例(回文) 图2 程序运行效果示例(非回文) 习题8-4 题码: 章节:数组 考查点:字符数组的处理,循环和判断 难度:2 编写一程序p219.C实现以下功能 从键盘读入一行字符(约定:字符数≤127字节),将其中的数字字符以及这些数字字符的数量在屏幕上显示,注意:要求先显示这些数字字符的数量。编程 可用素材:printf(\、printf(\、 printf(\。 程序的运行效果应类似地如图1所示,图1中的gfaskl45623cvsac,53dwafl faf32535as3bf0是从键盘输入的内容。 图1 程序运行效果示例 习题8-5 题码: 章节:数组 考查点:字符数组的处理,循环和判断 难度:2 编写一程序p311.C实现以下功能 ①从键盘上先后读入两个字符串,假定存储在字符数组s1和s2中。注意,这两个字符串最长均可达到127个字符、最短均可为0个字符。 ②将字符串s2插入字符串s1中,插入方法为:s2的第i个字符插入到原s1的第i个字符后,如果s2比s1(假定s1的长度为L1)长,则s2 4 / 6 的第L1个字符开始到s2结尾的所有字符按在s2中的顺序放在新生成的s1后。提示,合并时可使用中间数组。例如: s1输入为\,S2输入为\,则输出的s1为: 1a2b3c4d5e6f7g8h9ijk ③在屏幕上输出新生成的s1。 编程可用素材:printf(\、printf(\、printf(\。 程序的运行效果应类似地如图1所示,其中的123456789和abcdefghijk是从键盘输入的内容。 图1 程序运行效果示例 习题8-6 题码:1 章节:字符串处理 考查点: 难度:2 编写一程序p771.C实现以下功能 编程在一个已知的字符串(约定:字符数≤127字节)中查找最长单词,输出最长单词的长度。 注意事项: (1)只考虑输入的字符串中仅含空格和其它可见字符,仅用空格用来分隔不同单词。 (2)字符串中可能只有1个单词。 (3)字符串中可能1个单词都没有,此时最长单词的长度为0。 (4)编程可用素材:printf(\、printf(\。 程序的运行效果应类似地如图1所示,图1中的hello welcome to chengdu-CUIT是从键盘输入的内容。 图1 程序运行效果示例 提示: 思路:找到一个单词将其放在temp[128]暂存数组中,并用count统计其长度,若count>maxlen,则将temp[128]中的暂存单词复制到max[128]中,并用maxlen(maxlen=count)记下该单词长度。 1、 定义变量: char str[128], temp[128], max[128]; int i, j = 0, count = 0, maxlen = 0; 数组str存放原始字符串,数组temp存放每次找到的单词,数组max存放到目前为止找到的最长单词,count计算数组temp中单词的长度,maxlen计算数组max中单词的长度。i、j分别控制数组str和temp的下标 2、 中心段程序: for (i = 0; str[i] != '\\0'; i++) { if (str[i] != ' ') { } else if (j != 0 ) { temp[j] = '\\0'; 5 / 6 /*处理的单词和单词之间有多个空格 */ temp[j] = str[i]; /*将str[i]赋值给temp[j]*/ j++; count++; /*count计数*/ /*当str[i]不为空格,即在一个单词中时*/ } } if (count > maxlen) { } j = 0; count = 0; strcpy(max, temp); maxlen = count; 注意:if (j != 0 )表示处理的单词和单词之间有多个空格的情况,若j!=0,那么表示str[i-1]不是空格而str[i]是空格,表示单词刚结束;若j=0,那么str[i-1]和str[i]都是空格,表示单词间有多个空格。 3、 另外,上面的中心段程序没有处理最后单词为最长单词的情况,所以在上述中心段程序之后,应补上相应的处理 习题8-7 题码: 章节:程序的控制结构 考查点:基本输入/输出、if语句的使用、switch语句的使用 难度:2 编写一程序p705.C实现以下功能 从键盘输入星期几的第一个字母(接收字符请用getchar()),由程序判断是星期几,并显示其对应的英文单词,如果第一个字母一样,则继续判断第二个字母。星期的第一个字母都为大写。如果输入的字符不能构成星期的英文单词,则输出“data error”。程序可重复判断,直至输入字母‘Y’。 注:星期一至星期日对应的单词为Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday。 编程可用素材:printf(\、 printf(\、printf(\、printf(\、 printf(\、printf(\、printf(\、 printf(\、printf(\。 程序的运行效果应类似地如图1所示,图1中的WSajTxMTTuY是从键盘输入的内容。 图1 程序运行效果示例 提示: 方法一、该题可以用字符数组存放字符串,但只能使用getchar()函数一个一个字符循环输入存入内存 方法二、 1、该题可以不使用字符数组存放字符串,而是让程序每次从键盘得到一个字符进行判断,若判断条件需要读入第二个字符则读入第二个字符,否则是不会读入第二个字符的,也就是程序最多读入两个字符。 2、对Monday, Wednesday, Friday的判断只需一个字符即可,而对Tuesday,Thursday,Saturday,Sunday的判断需要两个字符,例如:若当前读到的字符为T,则应再读入一个字符,并判断是否是u,如果是,则输出Tuesday,若判断结果是h,则输出Thursday,若不是则应将第二个字符通过调用函数ungetc(ch, stdin); 还给键盘 6 / 6