C 语言实训教程
----数组专项练习
能够熟练并正确定义、初始化、输入、输出并使用一维数组解决实际问题。
能够正确定义、初始化、输入、输出并使用二维数组解决实际问题。
求数列1,3,3,3,5,5,5,5,5,7,7,7,7,7,7,7……的第 40 项。 2.字符串倒置与连接
输入两个字符串 str1 和 str2,将字符串 str2 倒置后接在字符串 str1 后面。
(要求:自己写字符串连接函数,不能调用系统函数) 3.矩阵旋转
将一个4×4 的数组进行逆时针旋转90 度后输出,要求原始数组的数据随机输入,
原始数组和新数组以 4 行 4 列的方式在屏幕输出。
输入一个有 10 个元素的数组,最大的与第一个元素交换,最小的与最后一个元
素交换,输出数组,每行显示 5 个。
程序扩展:从键盘输入数组元素个数和数组元素 5. 部分数组元素整体移动
有 n 个整数,使其前面各数顺序向后移 m 个位置,最后 m 个数变成最前面的 m个数 ,要求从键盘输入 n 和 m。分别输出移动以前的数和移动以后的数。 6.有序数组中插入值
有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。 扩展:从键盘输入数组元素个数和数组元素,由大到小排序后再按规律将它插入数组中。
1. 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。



青年歌手参加歌曲大奖赛,有 10 个评委进行打分,要求去掉一个最高分,去掉一个最低分,试编程求这位选手的平均得分,并输出排序好的分数。
3 种方法:分别要求使用到排序,数组,函数,指针。
排序,将评委打的 10 个分数利用数组按增序排列,计算数组中除了 第一个和最后一个分数以外的数以外的数的平均分。
甲、乙、丙三位鱼夫出海打鱼,他们随船带了 21 只箩筐。当晚返航时,他们发现有七筐装满了鱼,还有七筐装了半筐鱼,另外七筐则是空的,由于他们没有秤,只好通过目测认为七个满筐鱼的重量是相等的,7 个半筐鱼的重量是相等的。在不将鱼倒出来的前提下,怎样将鱼和筐平分为三份?
算法分析:
根据题意可以知道:每个人应分得七个箩筐,其中有 3.5 筐鱼。采用一个 3*3 的数组 a 来表示三个人分到的东西。其中每个人对应数组 a 的一行,数组的第 0 列放分到的鱼的整筐数,数组的第 1 列放分到的半筐数,数组的第 2 列放分到的空筐数。由题目可以推出:
数组的每行或每列的元素之和都为 7;
对数组的行来说,满筐数加半筐数=3.5;
每个人所得的满筐数不能超过 3 筐;
每个人都必须至少有 1 个半筐,且半筐数一定为奇数
对于找到的某种分鱼方案,三个人谁拿哪一份都是相同的,为了避免出现重复的分配方案,可以规定:第二个人的满筐数等于第一个人的满筐数;第二个人的半筐数大于等于第一个人的半筐数。
五个小朋友围成一圈分糖果,老师分给第一个小孩 10 块,第二个小孩 14 块,第三个小孩 8 块,第四个小孩 22 块,第五个小孩 16 块。然后所有的小孩同时将手中的糖分一半给右边的小孩,糖块数为奇数的人向老师要一块后再分。问经过这样几次后大家手中的糖的块数一样多?每人各有多少块糖?
某果园要举行摘果子比赛,参赛选手一共有三名,分别是小明(2011),小强(2012)和小梅(2013),比赛规则是:一共有三场比赛,每场比赛各 30 分钟,分别摘三种果实:葡萄、鸭梨和桃子。三场比赛摘得果子总重量最多的人赢得比赛。具体数据如表 5-1,假如你是裁判,编写一个程序来计算谁是冠军吧!