实验5数组 习题及问题详解
数据结构与算法实践练习题目及解答

数据结构与算法实践练习题目及解答以下是一些数据结构与算法的实践练题目及其解答。
1. 数组相关题目题目一给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回它们的索引。
def twoSum(nums, target):nums_dict = {}for i in range(len(nums)):nums_dict[nums[i]] = i题目二给定一个整数数组 nums,将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
def moveZeroes(nums):count = 0for i in range(len(nums)):if nums[i] != 0:nums[count] = nums[i]count += 1while count < len(nums):nums[count] = 0count += 12. 链表相关题目题目三反转一个单链表。
class ListNode:def __init__(self, val=0, next=None): self.val = valself.next = nextdef reverseList(head):prev = Nonecurr = headwhile curr is not None:next_node = curr.nextcurr.next = prevprev = currcurr = next_nodereturn prev题目四给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
def deleteDuplicates(head):curr = headwhile curr is not None and curr.next is not None:if curr.val == curr.next.val:curr.next = curr.next.nextelse:curr = curr.nextreturn head以上是一些数据结构与算法的实践练习题目及其解答。
C程序设计(数组)习题与答案

C程序设计(数组)习题与答案C程序设计(数组)习题与答案数组是C语言中常用的数据结构之一,它可以存储多个相同类型的元素。
掌握数组的使用对于C程序设计至关重要,下面将为大家介绍一些关于C数组的习题及其答案。
1. 习题一:计算数组元素的和题目描述:编写一个程序,计算给定数组中所有元素的和,并输出结果。
解题思路:```c#include <stdio.h>int main() {int arr[5] = {1, 2, 3, 4, 5}; // 定义一个包含5个元素的整型数组int sum = 0; // 用于存储和的变量// 遍历数组,累加每个元素的值for (int i = 0; i < 5; i++) {sum += arr[i];}printf("数组元素的和为:%d\n", sum);return 0;}```2. 习题二:查找数组中的最大值题目描述:编写一个程序,找出给定整型数组中的最大值,并输出结果。
解题思路:```c#include <stdio.h>int main() {int arr[7] = {4, 7, 2, 9, 1, 5, 8}; // 定义一个包含7个元素的整型数组int max = arr[0]; // 假设第一个元素为最大值// 遍历数组,比较每个元素的值与当前最大值的关系for (int i = 1; i < 7; i++) {if (arr[i] > max) {max = arr[i];}}printf("数组中的最大值为:%d\n", max);return 0;}```3. 习题三:查找数组中的特定元素题目描述:编写一个程序,在给定整型数组中查找是否存在指定元素,并输出结果。
解题思路:```c#include <stdio.h>int main() {int arr[6] = {3, 6, 9, 2, 5, 8}; // 定义一个包含6个元素的整型数组 int target = 2; // 指定要查找的元素int found = 0; // 用于标记是否找到目标元素的变量// 遍历数组,比较每个元素的值与目标值的关系for (int i = 0; i < 6; i++) {if (arr[i] == target) {found = 1;break;}}if (found) {printf("数组中存在目标元素:%d\n", target);} else {printf("数组中不存在目标元素:%d\n", target);}return 0;}```4. 习题四:数组元素逆序排列题目描述:编写一个程序,将给定整型数组的元素逆序排列,并输出结果。
C语言实验五实验报告——数组

C语言实验五实验报告——数组实验五:数组实验目的:1.掌握数组的定义和使用;2.熟悉数组在函数中的传递;3.练习编写使用数组的程序。
实验原理:数组是一组相同类型的变量的集合,这些变量称为数组的元素。
数组的名字是一个指针常量,它存放的是数组首个元素的地址。
数组元素在内存中是连续存放的,可以通过下标访问每一个元素。
数组的定义:数组的定义格式为:数据类型数组名[数组长度];数组的初始化:数组可以在定义时进行初始化,也可以在定义之后通过赋值进行初始化。
数组作为函数参数:数组可以作为函数的形参进行传递,可以通过指针传递整个数组,也可以传递数组的部分元素。
实验步骤:1.编写一个程序,实现对学生成绩的管理。
要求如下:-使用一个数组保存学生的成绩;-能够动态添加学生的成绩,并显示添加成功的信息;-能够计算学生的平均成绩,并显示;-能够根据用户输入的学号查找对应学生的成绩,并显示。
2.编写一个程序,实现对一组整数进行排序。
要求如下:-首先自定义一个整数数组,数组元素个数为用户输入;-编写一个函数,实现对数组进行排序,要求使用选择排序算法;-在主函数中调用该函数,对数组进行排序后显示。
实验结果与分析:1.学生成绩管理程序运行结果如下:```-------学生成绩管理系统-------[1]添加学生成绩[2]计算平均成绩[3]查找学生成绩[4]退出系统请输入选项:1请输入成绩:90添加成功![1]添加学生成绩[2]计算平均成绩[3]查找学生成绩[4]退出系统请输入选项:1请输入成绩:85添加成功![1]添加学生成绩[2]计算平均成绩[3]查找学生成绩[4]退出系统请输入选项:2平均成绩为:87.5[1]添加学生成绩[2]计算平均成绩[3]查找学生成绩[4]退出系统请输入选项:3 [1]添加学生成绩[2]计算平均成绩[3]查找学生成绩[4]退出系统请输入选项:4退出系统。
```2.整数排序程序运行结果如下:```-------整数排序-------请输入待排序的整数个数:6请输入第1个整数:5请输入第2个整数:3请输入第3个整数:9请输入第4个整数:2请输入第5个整数:7请输入第6个整数:1排序前的整数序列为:539271排序后的整数序列为:123579 ```实验总结:通过本次实验,我深入理解了数组的原理和用法,并且掌握了数组在函数中的传递。
习题五--数组

习题五--数组⼀、A类程序设计题1、求⼀个4x4矩阵对⾓线元素之和。
2、⽤数组的⽅法求Fibonacci数列的值(要求输出前20个数)。
3、将⼀个3x4矩阵转置(⾏列互换)存放。
4、将⼀个数组中的数按逆序存放,例如原来的顺序为8,7,6,4,2,要求改为2,4,6,7,8。
5、⽤选择法对10个整数进⾏降序排序。
6、⽤冒泡法对10个整数进⾏升序排序。
7、编写⼀个简单程序,要求:(1)从键盘上输⼊8个整数放⼊数组a[8]中(⽤for循环实现);(2)求出数组元素的最⼤值及数组的平均值。
8、求3×4矩阵中每⼀列元素的最⼤值并输出。
9、求4×4矩阵中每⼀⾏元素的最⼩值并输出。
10、某班有30个学⽣,进⾏了数学考试,编写程序将考试成绩输⼊⼀维数组,并求数学的平均成绩及不及格学⽣的⼈数。
11、有⼀个3x4矩阵,求出最⼤元素,以及其所在的⾏号和列号。
12、从键盘上输⼊10个实数,然后按输⼊顺序的逆序输出这10个数。
13、从键盘输⼊10个整数,找出其中最⼤值和最⼩值。
14、输⼊10个学⽣的姓名、学号和成绩,将其中不及格者的姓名、学号和成绩输出。
15、输⼊字符串 s,统计出 s 中共出现了多少个数字字符。
⼆、B类程序设计题1、对⼀个已按由⼩到⼤排好顺序的整型数组,若从键盘输⼊⼀个数x,现要查询该数是否在此整型数组中,若存在则删除该数,否则显⽰“不存在”信息。
2、对⼀个已按由⼩到⼤排好顺序的整型数组,若从键盘输⼊⼀个数x,现要将该数插⼊到该数组中,使其插⼊后整个数组排序规律不变。
3、编写⼀程序,要求从键盘上输⼊10个整数放⼊⼀个数组中(⽤for循环实现),并编写求最⼤值的函数max,在主程序调⽤这个函数实现输出数组中10个整数的最⼤值,要求⽤数组名作为函数参数。
4、输⼊⼀个4⾏4列的⼆维数组,编程实现:(1) 求出其中的最⼤值和最⼩值及其对应的⾏列位置;(2) 求出对⾓线上各元素之和。
5、⽤筛选法求100之内的素数。
(参考答案)实验五 数组编程练习

实验五数组编程练习
注意:完成后需提交本次源程序及运行结果,提交时将所有源程序压缩为一个文件夹,命名为:学号后三位+姓名+实验x(x表示第几次实验,转专业学生写全部学号),如:012+张三+实验五,凡是未按该规则命名者,本次练习不计成绩。
1.已知一个班10个学生的成绩,要求输入这10个学生的成绩,存储在一个一维数组中,求出他们的平均成绩,最高成绩以及该生的序号。
2.已知5个学生的4门课的成绩,要求求出每个学生的平均成绩,然后对平均成绩从高到低将各学生的平均成绩排序记录(成绩最高的学生的排在数组最前面的行,成绩最低的学生的排在数组最后面的行)
3.排序:将一个数组中的值按逆序重新存放。
(例如:原来顺序为8,6,5,4,1,则改为1,4,5,6,8).
4.要求采用循环的方式打印输出如下图形:* * * * *
* * * * *
* * * * *
* * * * *
* * * * *。
C-数组上机作业和参考答案

实 验 报 告 五一【实验目的】1.掌握一维数组、二维数组的概念及元素的各种表示方法 2.正确掌握数组输入输出等的基本操作。
3.掌握数组和指针的关系和有关操作 4.掌握数组掌握字符串的处理方法 5.掌握数组中的一些常用算法。
二【实验内容】【实验5-1】从键盘输入6个同学计算机课程期末考试成绩,并统计出平均分、最高分、最低分,以及统计超过平均分的人数,并实现正确输出。
【实验5-2】随机产生10个学生的计算机课程的成绩(30~100),按照从大到小的顺序排序,分别显示排序前和排序后的结果。
提示:#include<stdlib.h>,包含实用工具函数后,可以使用随机函数产生成绩如:for(i=0;i<10;i++) score[i]=rand ( )%71+30;[真题17套] 请编写程序实现功能:把s 所指字符串中的内容逆置。
例如:字符串中原有的字符串为:abcdefg ,则执行后, 串s 中的内容为:gfedcba 。
[真题10套] 请编写程序实现,将s 所指字符串中下标为偶数的字符删除,串中剩余字符形成的新串放在t 所指数组中。
例如,当s 所指字符串中的内容为:"ABCDEFGHIJK",在t 所指数组中的内容应是:"BDFHJ"。
[真题13套]请编写程序实现功能:使数组左下三角元素中的值乘以n 。
例如:若n 的值为3,a 数组中的值为⎪⎪⎪⎭⎫⎝⎛654832791则返回主程序后a 数组中的值为⎪⎪⎪⎭⎫ ⎝⎛181512896793 [真题58、76套]请编写程序实现功能:求出一个2×4整型二维数组中最大元素的值,并将此值输出。
(int arr[2][4]={5,8,3,45,76,-4,12,82} ;)[真题65套] 请编写程序实现功能: 求出二维数组周边元素之和并输出。
610753189********97531则函数值为为例如:二维数组中的值⎪⎪⎪⎪⎪⎭⎫⎝⎛ [真题67套] 编写程序, 实现矩阵(3行3列)的转置(即行列互换)例如, 输入下面的矩阵: ⎪⎪⎪⎭⎫ ⎝⎛900800700600500400300200100 程序输出:⎪⎪⎪⎭⎫⎝⎛900600300800500200700400100 [真题68套] 编写程序, 实现:求出小于或等于lim (lim=50)的所有素数并放在aa 数组中,函数返回所求出的素数的个数。
实验五 数组实验
实验五数组的使用一实验目的要求1 掌握数组的概念和使用方法。
2 掌握数组初始化的方法。
3学会字符数组和字符串的应用。
4 学会用数组名作函数的参数。
二有关概念1 只有静态数组和外部数组才能初始化。
2 引用数组时,对下标是否越界不作检查。
如定义int a[5];在引用时出现a[5],不给出错信息,而是引a[4]下面一个单元的值。
3 字符串放在字符数组中,一个字符串以‘/o’结束,有一些字符串函数如strcpy,strcmp,strlen等可以方便一进行字符串运算。
4 如有如下定义:char *str=“I love china”;表示 str是一个字符型指针变量,它的值是一个字符数据的地址。
不要认为str是字符串变量,在其中存放一个字串“I love china”。
5 用数组名作函数实参时,传到形参的是数组的首地址。
三实验内容和步骤1 定义三个数组int a[5];int b[2][2];char c[10];(1)分别在函数体外和函数体内对它们进行初始化,然后输出它们的值。
(2)在程序中再加一语句,输出a[5],b[2][2] ,分析结果。
(3)对C数组改为用赋值语句给各元素赋初值:c[0] ~ c[9]各元素分别为:…I‟, …‟, …a‟, …m‟, …‟, …b‟, …o‟, …y‟。
然后用printf(“%s”,c)输出字符串,分析结果。
参考程序如下:(1)main(){ int i,x,y;static int a[5]={1,2,3,4,5};static int b[3][2]={{3,4},{6,7},{9,5}}static char c[10]={ …i‟, …l‟, …p‟, …q‟, …k‟, …s‟, …d‟, …e‟, …a‟};for(i=0;i<5;i++)printf( “%5d”,a[i]);for(x=0;x<3;x++)for(y=0;y<2;y++)printf(“%5d”,b[x][y]);for(i=0;i<10;i++)printf(“%3c”,c[i]);}(2)结果无此值,在上面程序中要输出a数组第5个元素,和b数组的第3行第2例元素,应加此程序行:Printf(“%d”,a[4]);Printf(“%d”,b[2][1]);2 有一数组,内放10个整数,要求找出最小的数和它的下标。
C语言实验五数组程序设计解答
C语言实验五数组程序设计解答本次实验旨在让学生熟悉和掌握C语言中关于数组的使用方法,通过编写一些数组程序来加深对数组的理解和应用。
在本次实验中,我们将涵盖一些常见的数组操作,例如数组的声明、初始化、遍历、元素访问、排序等。
通过实际编程练习,学生们将更加深入地理解数组的基本概念和用法。
以下是本次实验的具体内容和解答:一、数组的声明和初始化1. 编写一个程序,声明一个整型数组arr,包含10个元素,然后初始化数组中的元素为1到10的数字。
解答:```c#include <stdio.h>int maiint arr[10];for (int i = 0; i < 10; i++)arr[i] = i + 1;}for (int i = 0; i < 10; i++)printf("%d ", arr[i]);}return 0;```二、数组的遍历和元素访问2. 编写一个程序,声明一个字符数组str,包含5个元素,然后输入5个字符,并遍历输出这5个字符。
解答:```c#include <stdio.h>int maichar str[5];printf("请输入5个字符:\n");for (int i = 0; i < 5; i++)scanf(" %c", &str[i]);}printf("输入的字符为:\n");for (int i = 0; i < 5; i++)printf("%c ", str[i]);}return 0;```三、数组的排序3. 编写一个程序,声明一个整型数组arr,包含5个元素,然后输入5个整数,并对这5个整数进行从小到大的排序输出。
解答:```c#include <stdio.h>int maiint arr[5];printf("请输入5个整数:\n");for (int i = 0; i < 5; i++)scanf("%d", &arr[i]);}//冒泡排序for (int i = 0; i < 5; i++)for (int j = 0; j < 5 - 1 - i; j++)if (arr[j] > arr[j + 1])int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}printf("排序后的数组为:\n");for (int i = 0; i < 5; i++)printf("%d ", arr[i]);}return 0;```通过以上实验内容,学生们将能够熟练掌握C语言中关于数组的基本操作,并能够灵活运用在实际的编程任务中。
C 实验五 数组的程序设计解析
}
}
for(i=0;i<n;i++)
{
if (i>0)
printf(" ");
printf("%d",ascanf("%d",&m);
for(i=0;i<m;i++)
{
int t,mid;
scanf("%d",&t);
int s=0,e=n-1;
while(s<=e)
2.Problem Description如果矩阵A中存在这样的一个元素A[i][j]满足下列条件:A[i][j]是第i行中值最小的元素,且又是第j列中值最大的元素,则称之为该矩阵的一个马鞍点。编写一个程序计算出矩阵A的马鞍点的值。
Input输入数据首先包含一个整数T,表示测试实例的个数,然后是T组测试数据。
实验名称:实验五 数组的程序设计
班级学号姓名
实验地点完成日期成绩
(一)实验目的
1.掌握一维和二维数组定义、赋值和使用方法;
2.掌握字符数组和字符串函数的用法;
3.掌握与数组有关的算法(特别是排序算法)。
(二)实验内容
1.Problem Description对于输入的n个整数,先进行升序排序,然后进行二分查找。
Output对于每组测试数据,输出马鞍点的值,若不存在鞍点,输出Impossible。(1208)
运行结果:
3.对给定的数据进行排序。每组测试数据的结构是:第一行为一个整数N(0<N<100),表示后面有N个整数(每个整数最多可达80位)需要排序输出,先按长度排(短的在前),如长度一样则按大小排(小的在前)。若遇到N等于零,则运行结束。每组结果之间留一个空行。(1154)
第5章 数组习题参考答案
第5章数组习题参考答案第1题'方法1Dim a(), b(), c() '定义a,b数组用于存放两组数据,C数组存放a,b相加的结果a = Array(1, 3, 5, 2, 4, 18, 50, 25) 'a数组赋值b = Array(5, 27, 30, 35, 60, 41, 87, 33) 'b数组赋值n = UBound(a) '计算数组最大下标For i = 0 To n '输出数组aPrint a(i);Next iPrintFor i = 0 To n '输出数组bPrint b(i);Next iPrintReDim c(0 To n) '定义(确定)数组c实际大小For i = 0 To nc(i) = a(i) + b(i)Next iFor i = 0 To n '输出数组cPrint c(i);Next iPrint'方法2Dim a(0 To 7), b(0 To 7), c() '定义a,b数组存放两组数据,C数组存放a,b相加的结果n = UBound(a) '计算数组最大下标For i = 0 To n '数组a赋值、输出a(i) = Val(InputBox("输入数据"))Print a(i);Next iPrintFor i = 0 To n '输出数组bb(i) = Val(InputBox("输入数据"))Print b(i);Next iPrintReDim c(0 To n) '定义(确定)数组c实际大小For i = 0 To nc(i) = a(i) + b(i)Next iFor i = 0 To n '输出数组cPrint c(i);Next iPrint第2题'方法1Dim a() '定义a,b数组用于存放两组数据,C数组存放a,b相加的结果x = Val(InputBox("输入行数"))y = Val(InputBox("输入列数"))ReDim a(1 To x, 1 To y)For i = 1 To x '数组a赋值For j = 1 To ya(i, j) = Int(Rnd() * 100)Next jNext iFor i = 1 To x '输出a数组For j = 1 To yPrint a(i, j);Next jPrintNext iPrintMax = a(1, 1) '设最大数为a(1,1)row = 1 '则最大数行下标为1col = 1 '则最大数列下标为1For i = 1 To x '求最大数max及其所在的行row、列colFor j = 1 To yIf Max < a(i, j) ThenMax = a(i, j)row = icol = jEnd IfNext jNext iPrint "最大数为:"; Max; "行为:"; row; "列为:"; col'方法2Dim a() '定义a,b数组用于存放两组数据,C数组存放a,b相加的结果x = Val(InputBox("输入行数"))y = Val(InputBox("输入列数"))ReDim a(1 To x, 1 To y)For i = 1 To xFor j = 1 To ya(i, j) = Int(Rnd() * 100) '数组a赋值Print a(i, j); '数组a输出Next jPrintNext iMax = a(1, 1) '设最大数为a(1,1)row = 1 '则最大数行下标为1col = 1 '则最大数列下标为1For i = 1 To x '求最大数max及其所在的行row、列col For j = 1 To yIf Max < a(i, j) ThenMax = a(i, j)row = icol = jEnd IfNext jNext iPrint "最大数为:"; Max; "行为:"; row; "列为:"; col第3题'方法1Dim a(1 To 10) '定义a数组存放10个数据For i = 1 To 10 '数组a赋值a(i) = Int(Rnd() * 100)Next iFor i = 1 To 10 '输出数组aPrint a(i);Next iPrint'数组元素数值交换For i = 1 To 5t = a(i)a(i) = a(11 - i)a(11 - i) = tNext iFor i = 1 To 10 '输出交换后a数组各元素值Print a(i);Next iPrint'方法2Dim a(1 To 10) '定义a数组存放10个数据For i = 1 To 10 '数组a赋值a(i) = Int(Rnd() * 100)Print a(i); '输出数组aNext iPrint'数组元素数值交换For i = 1 To 5t = a(i)a(i) = a(11 - i)a(11 - i) = tNext iFor i = 1 To 10 '输出交换后a数组各元素值Print a(i);Next iPrint'方法3Dim a(1 To 10) '定义a数组存放10个数据For i = 1 To 10 '数组a赋值a(i) = Val(InputBox("输入数据"))Print a(i); '输出数组aNext iPrint'数组元素数值交换For i = 1 To 5t = a(i)a(i) = a(11 - i)a(11 - i) = tNext iFor i = 1 To 10 '输出交换后a数组各元素值Print a(i);Next iPrint'方法4 任意多个元素值交换Dim a()n = Val(InputBox("输入数据个数"))ReDim a(1 To n) '定义a数组存放n个数据For i = 1 To n '数组a赋值a(i) = Int(Rnd() * 100)Print a(i); '输出数组aNext iPrint'数组元素数值交换For i = 1 To n \ 2t = a(i)a(i) = a(11 - i)a(11 - i) = tNext iFor i = 1 To n '输出交换后a数组各元素值Print a(i);Next iPrint第4题'方法1Dim a(0 To 10) As Integer '定义a数组存放各分数段统计结果n = Val(InputBox("输入学生人数"))For i = 1 To n '数组a赋值score = Val(InputBox("输入学生成绩"))Print score;If score < 60 Thena(5) = a(5) + 1ElseIf score <= 69 Thena(6) = a(6) + 1ElseIf score <= 79 Thena(7) = a(7) + 1ElseIf score <= 89 Thena(8) = a(8) + 1ElseIf score <= 100 Thena(9) = a(9) + 1End IfNext iPrintPrint "输出各分数段统计结果如下:"Print "<60人数"; a(5)Print "60~69人数"; a(6)Print "70~79人数"; a(7)Print "80~89人数"; a(8)Print "90~100人数"; a(9)'方法2Dim a(0 To 10) As Integer '定义a数组存放各分数段统计结果n = Val(InputBox("输入学生人数"))For i = 1 To n '数组a赋值score = Val(InputBox("输入学生成绩"))Print score;m = score \ 10 '构造m与数组a元素下标对应If m < 6 Thena(5) = a(5) + 1ElseIf m < 7 Thena(6) = a(6) + 1ElseIf score < 8 Thena(7) = a(7) + 1ElseIf score < 9 Thena(8) = a(8) + 1ElseIf score <= 10 Thena(9) = a(9) + 1End IfNext iPrintPrint "输出各分数段统计结果如下:"Print "<60人数"; a(5)Print "60~69人数"; a(6)Print "70~79人数"; a(7)Print "80~89人数"; a(8)Print "90~100人数"; a(9)'方法3Dim a(0 To 10) As Integer '定义a数组存放各分数段统计结果n = Val(InputBox("输入学生人数"))For i = 1 To n '数组a赋值score = Val(InputBox("输入学生成绩"))Print score;m = score \ 10 '构造m与数组a元素下标对应a(m) = a(m) + 1 'm对应的分数段数组元素累加Next iFor i = 0 To 5 '<60分的分数段数组元素累加s = s + a(i)Next iPrintPrint "输出各分数段统计结果如下:"Print "<60人数"; sPrint "60~69人数"; a(6)Print "70~79人数"; a(7)Print "80~89人数"; a(8)Print "90~100人数"; a(9)第5题身份证号码数字编码表'方法1Dim ID As String '定义ID存放身份证号码Dim a(0 To 16) '定义a数组存放身份证号码数字Dim w() '定义w数组存放加权因子Dim y() '定义y数组存放第18位编码表校验码w = Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2) 'a数组赋值y = Array(1, 0, x, 9, 8, 7, 6, 5, 4, 3, 2) 'b数组赋值ID = InputBox("输入身份证号码")n = Len(ID) '计算身份证号码长度For i = 1 To n '输出数组aChar = Mid(ID, i, 1) '获得身份证号码每一位字符a(i - 1) = Val(Char) '将身份证号码字符转化为数值s = s + a(i - 1) * w(i - 1) '计算权求和sum(ai*wi)Next iy18 = s Mod 11 '计算模y=mod(s,11)Print y(y18) '输出校验码第6题Dim a(1 To 30) As Long '定义a数组存放数列各项a(1) = 1a(2) = 1For i = 3 To 30 '计算数列各项a(i) = a(i - 1) + a(i - 2)Next iFor i = 1 To 30 '输出数列各项Print a(i);Next i第7题Dim a(1 To 15) As String '定义a数组存放产生的字符a(1) = Chr(Int(Rnd() * (90 - 65 + 1) + 65)) '产生第一个字符For i = 2 To 15 '产生其它的字符,比较相同后重新产生a(i) = Chr(Int(Rnd() * (90 - 65 + 1) + 65)) '产生一个新的字符,For j = 1 To i - 1 '新产生的字符与其前产生的字符比较If a(i) = a(j) Then '若与其前产生的字符相同i = i - 1 '则i值减1,达到重新产生的目的Exit ForEnd IfNext jNext iFor i = 1 To 15 '输出数组Print a(i);Next iPrint第8题Dim a() '定义a数组存放数据n = Val(InputBox("数组大小")) '输入数组大小ReDim a(1 To n) '定义实际数组大小For i = 1 To na(i) = Int(Rnd() * 100) '数组赋值Next iFor i = 1 To n '数组输出Print a(i);Next iPrintx = Val(InputBox("插入数组的位置"))y = Val(InputBox("输入插入的数据"))n = n + 1 '计算新数组大小ReDim Preserve a(1 To n) '重新定义新数组大小,保留原数组元素值For i = n To x + 1 Step -1 '从后向前,数组元素值依次后移a(i) = a(i - 1) '数组元素值后移动1位Next ia(x) = y '将数据插入到指定的数组元素For i = 1 To n '数组输出Print a(i);Next iPrint第9题Dim a() '定义a数组存放数据n = Val(InputBox("数组大小")) '输入数组大小ReDim a(1 To n) '定义实际数组大小For i = 1 To na(i) = Int(Rnd() * 100) '数组赋值Next iFor i = 1 To n '数组输出Print a(i);Next iPrinty = Val(InputBox("输入删除的数据"))p = 0 '默认删除的数不在数组中For i = 1 To n '查找删除的数是否在数组中If a(i) = y Then '若删除的数在数组中存在p = 1 '则标记p为1m = i '记录删除的数在数组中的位置m(下标)Exit For '结束查找End IfNext iIf p = 1 Then '若删除的数在数组中存在,则进行删除n = n - 1 '重新设定数组元素个数For i = m To n '从m位置处,数组元素值依次前移a(i) = a(i + 1) '数组元素值前移动1位Next iReDim Preserve a(1 To n) '重新定义新数组大小,保留原数组元素值End IfFor i = 1 To n '数组输出赋值Print a(i);Next iPrint第10题'方法1Dim a() '定义a数组用于存放m*n矩阵数据m = Val(InputBox("输入行数没m"))n = Val(InputBox("输入列数n"))ReDim a(1 To m, 1 To n)For i = 1 To m '数组a赋值For j = 1 To na(i, j) = Int(Rnd() * 100)Next jNext iFor i = 1 To m '输出a数组For j = 1 To nPrint a(i, j);Next jPrintNext iPrints1 = 0 's1存放所有元素的和For i = 1 To m '求所有元素的和For j = 1 To ns1 = s1 + a(i, j) '所有元素累加Next jNext is2 = 0 's2存放非四周的所有元素和For i = 2 To m - 1 '求除去四周的所有元素的和For j = 2 To n - 1s2 = s2 + a(i, j) '非四周元素累加Next jNext is = s1 - s2 '求四周元素的和Print "四周元素和为:"; s'方法2Dim a() '定义a数组用于存放m*n矩阵数据m = Val(InputBox("输入行数没m"))n = Val(InputBox("输入列数n"))ReDim a(1 To m, 1 To n)For i = 1 To m '数组a赋值For j = 1 To na(i, j) = Int(Rnd() * 100)Next jNext iFor i = 1 To m '输出a数组For j = 1 To nPrint a(i, j);Next jPrintNext iPrints1 = 0 's1存放第一行所有元素的和s2 = 0 's2存放最后一行所有元素的和For j = 1 To n '求第一行、最后一行元素的和s1 = s1 + a(1, j) '第一行所有元素累加s2 = s2 + a(m, j) '最后一行所有元素累加Next js3 = 0 's3存放第一列、最后一列元素和For i = 2 To m - 1 '求第一列、最后一列除去第一行、最后一行元素的和s3 = s3 + a(i, 1) + a(i, n) '第一列、最后一列元素累加Next is = s1 + s2 + s3 '求四周元素和Print "四周元素和为:"; s, s1, s2, s3第11题'方法1 定义a、b分别存放运动员号码、成绩Dim a() '定义a数组号码Dim b() '定义b数组存放成绩a = Array("011", "095", "041", "070", "008", "009", "021", "061", "006", "004") 'a数组赋值b = Array(12.4, 11.1, 13.4, 12.1, 12.4, 10.4, 14.4, 15.1, 15.4, 11.4) 'b数组赋值n = UBound(a) '计算数组长度For i = 0 To n '输出数组a,bPrint a(i); b(i)Next i'比较交换法排序For i = 0 To n - 1For j = i + 1 To nIf b(i) > b(j) Thent = b(i): b(i) = b(j): b(j) = t '成绩交换s = a(i): a(i) = a(j): a(j) = s '对应的号码交换End IfNext jNext iPrint "排序后成绩为:"For i = 0 To n '输出数组a,bPrint a(i); b(i)Next i'方法2 选择法排序,定义a、b分别存放运动员号码、成绩Dim a() '定义a数组号码Dim b() '定义b数组存放成绩a = Array("011", "095", "041", "070", "008", "009", "021", "061", "006", "004") 'a数组赋值b = Array(12.4, 11.1, 13.4, 12.1, 12.4, 10.4, 14.4, 15.1, 15.4, 11.4) 'b数组赋值n = UBound(a) '计算数组长度For i = 0 To n '输出数组a,bPrint a(i); b(i)Next i'选择法排序For i = 0 To n - 1k = iFor j = i + 1 To nIf b(k) > b(j) Thenk = jEnd IfNext jt = b(i): b(i) = b(k): b(k) = t '成绩交换s = a(i): a(i) = a(k): a(k) = s '对应的号码交换Next iPrint "排序后成绩为:"For i = 0 To n '输出数组a,bPrint a(i); b(i)Next i'方法3 选择法排序,定义a数组为自定义数据类型,数组元素存放运动员号码与成绩Private Type sport '自定义数据类型,ID存放运动员号码、score存放运动员成绩id As String * 3 '定义运动员号码字段score As Single '定义运动员成绩字段End TypePrivate Sub Command1_Click()Dim a(1 To 10) As sport '定义a数组为自定义类型Dim s As sport '定义s变量自定义类型n = 3 'UBound(a) '计算数组长度For i = 1 To n '数组a元素赋值a(i).id = InputBox("输入第" & i & "个号码")a(i).score = Val(InputBox("输入第" & i & "个成绩"))Next iPrint "排序前成绩为:"For i = 1 To n '输出数组a元素值Print a(i).id; a(i).scoreNext i'比较交换法排序For i = 1 To n - 1k = iFor j = i + 1 To nIf a(k).id > a(j).id Thenk = jEnd IfNext js = a(i): a(i) = a(k): a(k) = s 'a数组元素值交换Next iPrint "排序后成绩为:"For i = 1 To n '输出数组aPrint a(i).id; a(i).scoreNext iEnd Sub。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
for(n=0;n<SIZE;n++)
scanf("%d",&a[m][n]);
sum1=sum2=__0__;
for(m=0;m<SIZE;m++)
{
sum1=sum1+a[m][m];
sum2=sum2+a[m][SIZE-1-m];
}
printf("sum1=%d sum2=%d\n",sum1,sum2);
int i,j,s1=0,s2=0;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
if(i==j) s1=s1+a[i][j];
if(i+j==2) s2=s2+a[i][j];
}
printf("s1=%d s2=%d",s1,s2);
}
(4)#include "stdio.h"
#include "stdio.h"
#define n 10
main()
{
int a[n],find;
int x,i,top,bottom,mid;
printf("input the sorted numbers:\n");
for(i=0;i<n;i++)
scanf("%d",__&a[i]___);
printf("input the number to find:\n");
scanf("%d",&x);
find=0;top=0;bottom=n-1;
if(x<=a[0] &&top<=bottom)
while(!find && top<=bottom)
{
mid=mid=(bottom+top)/2;
#include <stdio.h>
scanf("%d",&x);
for(i=0,p=N;i<N;i++)
if(x<a[i])
{
p=i;
_break_;
}
for(i=N-1;i>=p; _i--__)
a[i+1]=a[i];
_a[p]=x___;
printf("%d",x);
for(i=0;i<=N;i++)
printf("%5d",a[i]);
printf("%2d",a[i][j]);
printf("\n");
}
}
2
(1)程序说明:下列程序完成的是插入排序功能:数组a中存放一个递增数列,输入一个整数x,将它插入到数组中,使之仍为一个有序数列。
#include "stdio.h"
#define N 10
void main()
{
int a[11]={1,10,20,30,40,50,60,70,80,90} ,x,i,p;
实验
班级:
学号:
:
日期:
一、
(1)掌握一维数组和二维数组的定义、赋值和输入输出方法;
(2)掌握字符数组和字符串函数的使用;
(3)掌握与数组有关的算法(特别是排序算法)。
二、
1
(1) #include"stdio.h"
void main()
{
int i,n[4]={0,0,0,0};
for(i=1;i<4;i++)
}
(4)程序说明:下面程序打印出如下所示的辉三角行(打印10行)。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
…….
#include"stdio.h"
void main()
{
int i,j,a[10][10]={{1},{1,1}};
for(i=2;i<10;i++)
if(x==a[mid])
{
find=1;
printf("x=%d position=%d\n",x,mid);
}
else if(x>a[mid])
bottom=mid-1;
else
top=mid+1;
}
if(find==0) printf("the number %d is not in the table",x);
{
if }
printf("n[i-1]=%d n[i]=%d\n",n[i-1],n[i]);
}
(2)#include "stdio.h"
void main()
{
char ch[]={'0','1','2','3','4','5','6','7','8','9'};
void main()
{
int r[5]={1,2,3,4,5};
int i,j,a[5][5];
for(i=0;i<=4;i++)
{ for(j=i;j<=4;j++)
a[i][j]=r[j-i];
for(j=0;j<i;j++)
a[i][j]=r[i-j];
}
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
}
(3)程序说明:下面程序分别输出方阵中主对角线、副对角线上元素的和suml和sum2(主对角线为从矩阵的左上角至右下角的连线,副对角线为从矩阵的右上角至左下角的连线).
#include"stdio.h"
#define SIZE 5
void main()
{
int a[SIZE][SIZE],m,n,sum1,sum2;
{
a[i][0]=1;_a[i][i]=1;
for(j=0;j<i;j++)
a[i][j]=a[i-1][j]+a[i-1][j-1];
}
for(i=0;i<10;i++)
{
for(j=0;j<=i;j++)
printf("%4d",a[i][j]);
printf("\n");
}
}
3
(1)编写程序完成如下功能:输入10个数存入一维数组,然后再按逆序重新存放后输出。
int i=0,m=2,r,x=42; char b[80];
while(x)
{
r=x%m; x/=m;
b[i++]=ch[r];
}
for(--i;i>=0;i--)
printf("%c",b[i]);
printf("\n");
}
(3)#include "stdio.h"
void main()
{
int a[][3]={9,7,5,3,1,2,4,6,8};
printf("\n");
}
(2)程序说明:下面程序完成的是折半查找。A数组中存放的是n个由大到小已经排好序的数列,从这n个数中查找x的值是否存在。
其基本思想是:在查找围里,将x与处于中间位置上的数比较,如果相等,则查找成功,如果小于该元素,则在较小的一半元素里再进行折半查找;如果x大于该元素,则在较大的一半元素里再进行折半查找。变量top,bottom,mid分别指向查找围的顶部、底部和中间位置。