第六章:数组
更新时间:2023-11-08 23:15:01 阅读量: 教育文库 文档下载
一维数组:
1、 定义一个10个元素的整数数组,赋值为1-10,按如下格式输出数组中的全部数据。
a[0]=1 a[1]=2 ????
2、 打印出Fibonacci数列:从第3个数开始的每个数的值为前两个数之和。
1 1 2 3 5 8 ??
3、 输入10个学生的成绩到一个数组中,查找出最低分数及最高分数,计算出总分以及平
均分,计算出及格人数以及成绩在平均分以上的人数。 4、 有一个数组,内放10个整数。要求找出最小的数和它的下标,然后把它和数组中最前
面的元素对换位置,找出最大的数和它的下标,然后把它和数组中最后面的元素对换位置。
5、 利用随机函数产生10个1-100随机数,并存入数组中。
注解:产生随机数的方法
1)包含库文件 #include \
使用用randomize()随机种子函数 及 随机数生产函数random(101),参数表示范围 2)使用用randomize()随机种子函数
随机数生产函数rand (),无参数,产生int数据类型范围内的随机数
6、 将数组中所有元素的值向后移动一位,最后一个元素的值移动到第一个元素中;(将数
组中所有元素的值向前移动一位,第一个元素的值移动到最后一个元素中)
7、 将数组中元素的值先按原序输出,逆置(第一个与最后一个交换,第二个与倒数第二个
交换,依次类推)后再输出一次;
8、 将一个数组中的元素反向复制到另一个数组中,输出这两个数组。
9、 编程输入一个小写字母,以该字母为第一个字母按字母表逆序输出字母表中所有小写字
母。(例:输入 m ,则输出:mlkjihgfedcbazyxwvutsrqpon)(利用数组或不利用数组两种方式编程) 10、 输入一个数,在数组中找到第一个比它大的数,将输入的数据插入到这个数的前面。 11、 将两个数组中的元素交叉复制到一个新的数组中。 12、 定义一个整数数组,求出奇数和偶数个数 13、 有30个 0-9之间的数字,分别统计0-9出现的次数 14、 用筛选法求100之内的素数
筛选法又称筛法,是求不超过自然数N(N>1)的所有质数的一种方法。据说是古希腊的埃拉托斯特尼(Eratosthenes,约公元前274~194年)发明的,又称埃拉托斯特尼筛子。 具体做法是:先把N个自然数按次序排列起来。1不是质数,也不是合数,要划去。第二个数2是质数留下来,而把2后面所有能被2整除的数都划去。2后面第一个没划去的数是3,把3留下,再把3后面所有能被3整除的数都划去。3后面第一个没划去的数是5,把5留下,再把5后面所有能被5整除的数都划去。这样一直做下去,就会把不超过N的全部合数都筛掉,留下的就是不超过N的全部质数。 15、 下面的程序从键盘接收任意5个数放入数组A中,假设这5个数为:8 1 4 2 5,则要输
出一个具有如下内容的方阵。
16、 十五个猴子围成一圈选大王,依次1-7 循环报数,报到7 的猴子被淘汰,直到最后一
只猴子成为大王。问,哪只猴子最后能成为大王?(有17个人围成一圈(编号为0~16),从第 0号的人开始从 1报数, 凡报到 3的倍数的人离开圈子,然后再数下去,直到最后只剩下一个人为止。 问此人原来的位置是多少号?) 17、 有 N个数已按由小到大的顺序排好,要求输入一个数, 把它插入到原有序列中,而且
仍然保持有序。 18、 查找出圆环中(一维数组)中任意四个相邻数之和的最大值,输出起始位置和终止位置
以及这四个数。 19、 将一个数组中序号为单和双的分别复制到另外两个数组中。 20、 将一个数组中的最大数和第二大数分别找出来。 21、 数组中记录有一个单位200职工的年龄,编程统计出各年龄段的人数。 22、 将数组中每一个数出现的次数统计出来。
字符串专题:
23、 编写程序将字符串中的元音字母输出。例如字符串为“boy and girl”, 则输出为: oai 24、 从键盘上任意输入一个字符串S,输出其中的数字字符。例如输入为:sd12we$*55abc8,
则输出结果为:12558 25、 统计26个英文字符在一个字符串中出现的次数。 26、 将两个字符串连接起来。(连接到第一个字符串的后面,不使用strcat函数) 27、 编程:在一字符串中查找某个指定的字符,找到则输出字符第一次出现的位置,未找到
则输出“not found”。 28、 判断字符串sub是否是字符串str的子串。 29、 将两个字符串合并到一个新的字符串中。 30、 删除一个字符串中所有数字字符。(注意删除后字符的移位) 31、 统计一个字符串中单词的个数。(以空格作为分隔符) 32、 比较三个字符串,将最大的字符串输出。 33、 将输入的10个字符串的字符数保存在一个数组中。
排序专题:
34、 冒泡排序:
(1)从第一个开始,每相邻两个数进行比较,较小的排前面,大的放后面,第一轮后最大的排最后;第二轮除最后一个数,前面的数按第一轮方式交换,依次类推,完成排序。
(2)将数组中第一个数与后面的每一个数比较,如果较小就交换,第一轮结束后,最小的数在最前面;第二轮从第二个数开始,将第二个数与其后每一个数比较,较小就交换,依次类推,完成排序。 35、 对100个100以内的随机数按从大到小的顺序排序,输出所有不重复的数据。(去除重
复数据后输出。) 36、 统计一个单位职工的年龄,要求把相同年龄最多的那个年龄找出来(可能有几个这样的
年龄),并统计出现的次数。
37、 选择法排序:是对冒泡法排序的改进,在每一轮的比较中找到最小值(或最大值),然
后与最前面的元素进行交换,第二轮排除第一个元素继续上述算法,相对于冒泡排序在于减少了很多不必要的数据交换。 38、 利用选择法对100个学生成绩按照从大到小的顺序排序,并统计及格与不及格成绩的人
数、总分、平均分。 39、 插入法排序:将10个-50到+50之间的随机数按从小到大的顺序插入到数组中。(插入
法是一种比较直观的排序方法。它首先把数组头两个元素排好序,再依次把后面的元素插入适当的位置。把数组元素插完也就完成了排序) 40、 利用插入法将数组a中的所有元素按顺序插入到数组b中(a数组保持不变,b数组排
序),输出两个数组的值。
(shell排序法不常用到,学生自查资料;另外在函数讲解后再学习快速排序法)
二维数组:
41、 定义一个五行六列的二维数组,给每一个元素赋值为一个100以内的随机数(赋值为行
号与列号之和),按矩阵形式输出该数组。 42、 定义a数组为三行五列,定义b数组为五行三列,将a数组的值转置后赋值给b数组。
按矩阵形式打印出两个数组。 43、 将含100个元素的一维数组的值按顺序复制到二维数组中,打印出两个数组出来。 44、 查找二维数组中最大值的行号与列号。 45、 查找二维数组中每一行的最大值,并求出它们的和。 46、 打印杨辉三角形的前10行。
47、 打印如下图所示数字方阵:
48、 把一个二维实型数组a按照第0列的元素进行排序(由小到大排序,用冒泡法或选择法)。
例如:如果a[i][0]大于a[i+1][0],则i行与i+1行中所有元素都要进行对换。 49、 查找二维数组中每一列的最小值,打印出它的位置和值。(扩展:查找二维数组中的鞍
点:一个数在行中是最大的,在列中是最小的) 50、 有 N个国家名,要求按字母先后顺序排列(用起泡排序法)后输出。 51、 输出“魔方阵(奇数)”。
介绍:
魔方阵,古代又称“纵横图”,是指组成元素为自然数1、2…n的平方的n×n的方阵,其中每个元素值都不相等,且每行、每列以及主、副对角线上各n个元素之和都相等。
如3×3的魔方阵: 8 1 6 3 5 7 4 9 2
魔方阵的排列规律如下:
(1)将1放在第一行中间一列; (2)从2开始直到n×n止各数依次按下列规则存放;每一个数存放的行比前一个数的行数减1,列数加1(例如上面的三阶魔方阵,5在4的上一行后一列);
(3)如果上一个数的行数为1,则下一个数的行数为n(指最下一行);例如1在第一行,则2应放在最下一行,列数同样加1;
(4)当上一个数的列数为n时,下一个数的列数应为1,行数减去1。例如2在第3行最后一列,则3应放在第二行第一列;
(5)如果按上面规则确定的位置上已有数,或上一个数是第一行第n列时,则把下一个数放在上一个数的下面。例如按上面的规定,4应该放在第1行第2列,但该位置已经被占据,所以4就放在3的下面; 简单图示如下:
填魔术方阵的方法以奇数最为简单,第一个数字放在第一行第一列的正中央,然后向右(左)上填,如果右(左)上已有数字,则向下填,如下图所示:
数组复习
52、 从键盘输入若干个整数,其值在0至4范围内,用-1作为输入结束的标志。统计每个
整数的个数。 53、 定义一个含有30个整型元素的数组,按顺序分别赋予从2开始的偶数;然后按顺序每
五个数求出一个平均值,放在另一个数组中并输出。 54、 通过赋初值按行顺序为一个二维数组赋予2、4、6、...等偶数,然后按列的顺序输出该
数组。 55、 通过循环按行顺序为一个5×5的二维数组a赋1到25的自然数,然后分别输出该数组
的左下半三角、右上半三角、对角线、最外圈数值。 56、 数组a包括10个整数,把a中所有的后项除以前项之商保留2位小数存入数组b,并
按每行3个元素的格式输出数组b。 57、 从键盘输入两个字符串a和b,要求不用库函数strcat把串b的前五个字符连接到串a
中;如果b的长度小于5,则把b的所有元素都连接到a中。
58、 若输入7 4 8 9 1 5,则输出:
5 7 4 8 9 1 1 5 7 4 8 9 9 1 5 7 4 8 8 9 1 5 7 4 4 8 9 1 5 7 7 4 8 9 1 5
59、 把两个已按升序排列的数组合并成一个升序数组 60、 编程打印用户指定的n阶顺时针螺旋方阵(n<10)。 61、 生成并打印某数列的前20项,该数列第1,2项分别为0和1,以后每个奇数编号的项是前
两项之和,偶数编号的项是前两项差的绝对值。生成的20个数存在一维数组x中,并按每行4项的形式输出。
参考答案
第9题:
(1)不使用数组: int main(void) { char c; int i=0; c=getch(); while(i<26) { printf(\ i++; c--; if(c<'a') c='z'; } getch(); return 0; } (2)应用一维数组 int main(void) { char c[26],in; int i,count=0,start; in=getch(); start=in-'a'; for(i=0;i<26;i++) c[i]='a'+i; while(count<26) { printf(\ count++; start--; if(start<0) start=25; } getch(); return 0; }
第13题:
#include \int main(void) {
int a[30],b[10]={0},i; randomize();
for(i=0;i<30;i++){ a[i]=random(10); printf(\ }
for(i=0;i<30;i++){ b[a[i]]++; }
正在阅读:
第六章:数组11-08
电大《政府与非盈利组织会计》考核册答案11-09
红领巾入队仪式作文300字06-25
青岛旅游01-22
2017年临床助理医师《综合笔试》模拟试题及答案(6)02-26
新东方英语笔记12-17
成语故事大全08-18
围棋文化知识竞赛题101-28
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 数组