实验5数组 习题及答案
数组练习及答案

数组练习及答案数组练习121、合法的数组定义是___ _____.A) int a[6]={"string"};B) int a[5]={0,1,2,3,4,5};C) char a={"string"};D) char a[]={0,1,2,3,4,5};122、要求下⾯的程序运⾏后,显⽰如下结果:2 10 4 61 52 32 4 7 85 1 3 2则程序中的划线处应填⼊___ _____.#include <>void main( ){ int a[4][4]={ ________ };int i,j;for(i=0;i<4;i++){for(j=0;j<4;j++) printf("%4d",a[i][j]);printf("\n"); }}A) {1,5,2,3},{2,4,7,8},{5,1,3,2}B) {2,10,4,6},{1,5,2,3},{2,4,7,8},{5,1,3,2}C) {5,1,3,2},{2,4,7,8},{1,5,2,3}D) {2,1,2,5},{10,5,4,1},{4,2,7,3},{6,3,8,2}123、给出以下定义:char x[ ]="abcdefg";char y[ ]={'a','b','c','d','e','f','g'};则正确的叙述为___ _____.A) 数组x和数组y等价B) 数组x和数组y的长度相同C) 数组x的长度⼤于数组y的长度D) 数组x的长度⼩于数组y的长度124、定义如下变量和数组:int i;int x[4][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};则下⾯语句的输出结果是___ _____.for(i=0;i<4;i++) printf("%3d",x[i][3-i]);A) 1 5 9 13 B) 1 6 11 16C) 4 7 10 13 D) 4 8 12 16126、若希望下⾯的程序运⾏后输出45,程序空⽩处的正确选择是___ _____.#include <>void main( ){ int i,j=10,a[ ]={1,3,5,7,9,11,13,15};for( ____________ )j+=a[i];printf("%d\n",j);}A) i=5;i>1;i-- B) i=0;i<7;++iC) i=5;i>=1;--i D) i=2;i<6;++i127、若有以下说明:char s1[ ]={"tree"},s2[]={"flower"}; ,则以下对数组元素或数组的输出语句中,正确的是__ ___.A) printf("%s%s",s1[5],s2[7]);B) printf("%c%c",s1,s2);C) puts(s1);puts(s2); D) puts(s1,s2);128、下列⼀维数组初始化语句中,正确且与语句float a[ ]={0,3,8,0,9};等价的是_____ ___.A) float a[6]={0,3,8,0,9};B) float a[4]={0,3,8,0,9};C) float a[7]={0,3,8,0,9};D) float a[5]={0,3,8,0,9};129、运⾏下⾯程序段的输出结果是___ _____.char s1[10]={'S','e','t','\0','u','p','\0'};printf("%s",s1);A) Set B) Setup C) Set up D) 'S''e''t'130、以下程序段的输出结果是____ ____.char s[ ]="an apple";printf("%d\n",strlen(s));A) 7 B) 8 C) 9 D) 10131、若有说明:char c[10]={'E','a','s','t','\0'};,则下述说法中正确的是_____ _____.A) c[7]不可引⽤B) c[6]可引⽤,但值不确定C) c[4]不可引⽤D) c[4]可引⽤,其值为空字符132、下列初始化语句中,正确且与语句char c[ ]="string";等价的是____ ____.A) char c[ ]={'s','t','r','i','n','g'};B) char c[ ]='string';C) char c[7]={'s','t','r','i','n','g','\0'};D) char c[7]={'string'};133、若有说明char c[7]={'s','t','r','i','n','g'};则对元素的⾮法引⽤是____ ____.A) c[0] B) c[9-6] C) c[4*2] D) c[2*3]134、如有说明:char s1[5],s2[7]; ,要给数组s1和s2整体赋值,下列语句中正确的是____ ____.A) s1=getchar(); s2=getchar();B) scanf("%s%s",s1,s2);C) scanf("%c%c",s1,s2);D) gets(s1,s2);135、下列⼀组初始化语句中,正确的是___ _____.A) int a[8]={ }; B) int a[9]={0,7,0,4,8};C) int a[5]={9,5,7,4,0,2}; D) int a[7]=7*6;136、以下程序输出的结果是____ _____.#include <>void main( ){ char str[ ]="1a2b3c"; int i;for(i=0;str[i]!='\0';i++)if(str[i]>='0'&&str[i]<='9') printf("%c",str[i]);printf("\n");}A) 9 B) 1a2b3cC) abc D) 123137、以下程序输出的结果是___ _____.#include <>void main( ){ int a[ ]={5,4,3,2,1},i,j;long s=0;for(i=0;i<5;i++) s=s*10+a[i];printf("s=%ld\n",s);}A) s=12345 B) s=5 4 3 2 1C) s=54321 D) 以上都不对138、以下程序输出的结果是____ ____.#include <>void main( ){ int a[ ]={1,2,3,4,5},i,j,s=0;for(i=0;i<5;i++) s=s*10+a[i];printf("s=%d\n",s);}A) s=12345 B) s=1 2 3 4 5C) s=54321 D) s=5 4 3 2 1139、在定义int a[5][6];后,数组a中的第10个元素是.________(设a[0][0]为第⼀个元素)A) a[2][5] B) a[2][4] C) a[1][3] D) a[1][5]140、当接受⽤户输⼊的含有空格的字符串时,应使⽤____ ____函数.A) gets( ) B) getchar( )C) scanf( ) D) printf( )141、以下程序执⾏时输⼊Language Programming<回车>,输出结果是____ ____.#include <>void main( ){ char str[30];gets(str);printf("str=%s\n",str);}A) Language ProgrammingB) LanguageC) str=LanguageD) str=Language Programming142、以下⼀维数组a的正确定义是___ _____ .A) int a(10); B) int n=10,a[n];C) int n; D) #define SIZE 10scanf("%d",&n); int a[SIZE];int a[n];143、以下对⼆维数组a进⾏正确初始化的是__ _____.A) int a[2][3]={ {1,2},{3,4},{5,6} };B) int a[ ][3]={1,2,3,4,5,6 };C) int a[2][ ]={1,2,3,4,5,6}; D) int a[2][ ]={ { 1,2},{3,4}};144、以下关于数组的描述正确的是____ ______.A) 数组的⼤⼩是固定的,但可以有不同类型的数组元素。
C语言实验册完整答案

实验2答案五.程序改错#include<stdi o.h>int main(void){int x=3,y;y = x*x;printf("%d = %d * %d\n",y,x,x); /* 输出*/printf("%d * %d = %d\n",x,x,y);return 0;}六、一般编程题6.1#include<stdio.h>int main(void){int x,y;printf("Input x: ");scanf("%d",&x);printf("Input y: ");scanf("%d",&y);printf("%d + %d = %d\n",x,y,x+y);printf("%d - %d = %d\n",x,y,x-y);printf("%d * %d = %d\n",x,y,x*y);printf("%d / %d = %d\n",x,y,x/y);printf("%d %% %d = %d\n",x,y,x%y);return 0;}6.2#include<stdio.h>int main(void){ float x; double y;printf("Input x: ");scanf("%f",&x);printf("Input y: ");scanf("%lf",&y);printf("%f + %f = %f\n",x,y,x+y);printf("%f - %f = %f\n",x,y,x-y);printf("%f * %f = %f\n",x,y,x*y);printf("%f / %f = %f\n",x,y,x/y);return 0;}6.3#include<stdio.h>int main(void){ char c;printf("Input c: ");scanf("%c",&c);printf("%c\n",c+32);return 0;}6.4#include<stdio.h>int main(void){int celsius,fahr;fahr = 150;celsius = 5*fahr/9 - 5*32/9;printf("fahr = %d, celsius = %d\n", fahr, celsius);return 0;} 如果使用公式9)32(5-⨯=f c 计算结果不一样,celsius = 65。
Vb实验五数组的应用

《Visual Basic 6.0程序设计》实验报告(五)一、实验名称:数组的应用(4学时)二、实验目的:1.掌握数组的声明和数组元素的引用;2.掌握静态数组和动态数组的声明和使用;3.学会应用数组解决与数组有关的常用算法问题;4.掌握控件数组的建立和应用。
三、实验环境多媒体计算机WindowsXP操作系统Visual Basic 6.0四、实验内容及实验步骤(或记录)1.输入10名同学的成绩,求平均分、最高分和最低分。
设计步骤如下:①在窗体上添加3个标签(Label1、Label2和Label3)和3个文本框(Text1、Text2和Text3),设计界面如图7.2所示。
各控件的主要属性和作用如表1所示。
控件的属性和作用②编写程序代码如下:Private Sub Command1_Click()Dim Score(1 To 10) As Integer '声明存放成绩的数组ScoreDim i As Integer,Max As Integer,Min As Integer,Average As SingleFor i = 1 To 10 '逐一输入每个同学的成绩Score (i) = Val (InputBox ("输入第" & Str(i)& "个学生的成绩","成绩统计",""))Next iEnd SubPrivate Sub Command2_Click()Dim i As IntegerDim sum As Single, aver As Singlesum = Score (1) ' sum 用于存放总成绩,初值为数组中的第一个元素Max = Score (1) ' 设变量Max的初值为数组中的第一个元素Min = Score (1) ' 设变量Min的初值为数组中的第一个元素For i = 2 To 10 ' 通过循环依次比较,求最大、最小值;求总和If Score(i) > Max Then Max = Score(i)If Score(i) < Min Then Min = Score(i)sum = sum + Score(i)Next iaver = sum / 10 ' 求平均值Text1.Text = Format (Average, "0.00 " ) ' 以两位小数显示平均值Text2.Text = MaxText3.Text = MinEnd Sub2.生成20个0到100之间的随机整数存于数组A,然后将这20个数按递增顺序排序。
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. 习题四:数组元素逆序排列题目描述:编写一个程序,将给定整型数组的元素逆序排列,并输出结果。
实验5-数组答案

VB程序设计实验五实验目的●掌握一维数组和二维数组的操作●学习跟数组相关的控件:列表框和组合框复习1.列表框列表框(ListBox)控件允许用户查看和选择列表中的多个元素。
表5-11 列表框的常用属性和事件2.组合列表框(ComboBox)整合了列表框和文本框的功能,以一个文本框控件(TextBox)右边加上一个向下箭头的样式显示。
有Simple(简单组合框)、DropDown(下拉组合框)和DropDownList(下拉列表框)。
其中,Simple选项不显示下拉箭头,而是在控件的旁边显示一个滚动条;DropDown风格(默认值)在单击向下箭头时显示一个下拉列表,且在ComboBox中输入一个值;DropDownList显示一个下拉列表,但不允许用户在ComboBox中输入。
表5-13 组合列表框的常用属性和事件(1) Items.Count属性:列表框或组合框中项目数量。
最后一项的序号为Items.Count-1,该属性只能在程序中设置或引用。
(2) Text属性:被选定的选项的文本内容。
该属性只能在程序中设置或引用。
注意:ListBox1.Items(ListBox1.SelectedIndex)等于ListBox1.Text。
(3) Items.Add方法把一个选项加入列表框,格式:对象.Items.Add(选项);如:ListBox1.Items.Add("周海涛")(4) Insert方法在指定位置插入一个项目。
格式:对象.Items.Insert(序号, 添加项内容)(5)Items.Remove方法从列表框中删除指定的项。
格式:对象. Items.Remove (选项)。
例如:ListBox1.Items.Remove ("华成")(6)Items.RemoveAt方法格式:对象.RemoveAt(Index)从列表框中删除指定的项。
Index表示被删除项目在列表框中的位置,从0开始。
C语言实验5-8答案(函数与数组)

任务
1.fact(j-1)*j
2.gcd(n,m%n)
m<n
3.//for(j=0;j<=n-i;j++)
//printf("");//删除这两行,因为顶格输出,不要空行了。
y==1||y==x
z=c(x-1,y-1)+c(x-1,y)
4.程序代码如下:
#include<stdio.h>
fib(int n)
#include <stdio.h>
main( )
{double fun(int m);//先调用再定义,且不是能缺省的int型,请加上函数说明。
int m;
printf("\n input m:");
scanf("%d",&m);
printf("\n t= %12.10lf \n",fun(m));
j=2
j—
i+j==2
输出为:a=13,b=14
4.i=1
x[i-1]
5.m<1000
m/10%10或m/10-x*10
a[i]=m
m<i
输出结果为:153 370 371 407
6.a
a
sum/n
x[i]<ave
任务
1.‘\0’
str1[i]-str2[i]
2.c[k]=a[i++];
c[k]=b[j++];
return yes;
}
main( )
{
int n;
scanf("%d",&n);
数据结构-第5章--数组练习题

数据结构-第5章--数组练习题第5章数组一、选择题3.设有数组A[i,j],数组的每个元素长度为3字节,i的值为1到8,j的值为1到10,数组从内存首地址BA开始顺序存放,当用以列为主存放时,元素A[5,8]的存储首地址为(A)。
A.BA+141B.BA+180C.BA+222D.BA+2254.假设以行序为主序存储二维数组A=array[1..100,1..100],设每个数据元素占2个存储单元,基地址为10,则LOC[5,5]=(A)。
A.808B.818C.1010D.10205.数组A[0..5,0..6]的每个元素占五个字节,将其按列优先次序存储在起始地址为1000的内存单元中,则元素A[5,5]的地址是()。
1195A.1175B.1180C.1205D.12107.将一个A[1..100,1..100]的三对角矩阵,按行优先存入一维数组B[1‥298]中,A中元素A6665(即该元素下标i=66,j=65),在B数组中的位置K为()。
供选择的答案:A.198B.195C.1972+64某3=19410.若对n阶对称矩阵A以行序为主序方式将其下三角形的元素(包括主对角线上所有元素)依次存放于一维数组B[1..(n(n+1))/2]中,则在B中确定aij(iA.i某(i-1)/2+jB.j某(j-1)/2+iC.i某(i+1)/2+jD.j某(j+1)/2+i11.设A是n某n的对称矩阵,将A的对角线及对角线上方的元素以列为主的次序存放在一维数组B[1..n(n+1)/2]中,对上述任一元素aij(1≤i,j≤n,且i≤j)在B中的位置为(C)。
A.i(i-l)/2+jB.j(j-l)/2+iC.j(j-l)/2+i-1D.i(i-l)/2+j-112.A[N,N]是对称矩阵,将下面三角(包括对角线)以行序存储到一维数组T[N(N+1)/2]中,则对任一上三角元素a[i][j]对应T[k]的下标k是(AB)。
数组题参考答案

数组题参考答案数组题参考答案在计算机科学中,数组是一种用于存储和管理一组相同类型数据的数据结构。
它是一种非常重要的数据结构,被广泛应用于各种编程语言和算法中。
在编程中,经常会遇到与数组相关的题目,这些题目既有基础的数组操作,也有一些较为复杂的问题。
下面,我将为大家提供一些常见数组题目的参考答案。
1. 数组反转题目描述:给定一个数组,将其反转。
解题思路:可以使用双指针法,一个指针指向数组的起始位置,另一个指针指向数组的末尾位置。
然后交换两个指针所指向的元素,并分别向中间移动,直到两个指针相遇。
```pythondef reverse_array(arr):left = 0right = len(arr) - 1while left < right:arr[left], arr[right] = arr[right], arr[left]left += 1right -= 1return arr```2. 数组去重题目描述:给定一个数组,删除其中重复的元素。
解题思路:可以使用一个集合来存储已经出现过的元素,然后遍历数组,将未出现过的元素添加到集合中。
```pythondef remove_duplicates(arr):unique_elements = set()result = []for num in arr:if num not in unique_elements:unique_elements.add(num)result.append(num)return result```3. 数组求和题目描述:给定一个数组,计算其中所有元素的和。
解题思路:可以使用一个变量来记录累加的和,然后遍历数组,将每个元素加到累加和中。
```pythondef array_sum(arr):sum = 0for num in arr:sum += numreturn sum```4. 数组中的最大值和最小值题目描述:给定一个数组,找出其中的最大值和最小值。
第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。
实验5数组习题及答案

实验 5 数组
班级: :
**: 日期:
一、实验目的
〔1〕掌握一维数组和二维数组的定义、赋值和输入输出方法; 〔2〕掌握字符数组和字符串函数的使用; 〔3〕掌握与数组有关的算法〔特别是排序算法〕。
二、实验容
1.阅读下面程序,写出程序运行结果,并且上机进展验证。
(1) #include "stdio.h" void main() { int i,n[4]={0,0,0,0}; for(i=1;i<4;i++) { if (i==3) break; n[i]=n[i-1]+1; } printf("n[i-1]=%d n[i]=%d\n",n[i-1],n[i]); }
2.程序填空〔根据题意在空白处填入适当的容,使程序变得完整。并上机进展调试验证〕
〔1〕程序说明:以下程序完成的是插入排序功能:数组 a 中存放一个递增数列,输入 一个整数*,将它插入到数组中,使之仍为一个有序数列。
#include "stdio.h" #define N 10 void main() {
〔4〕#include "stdio.h" 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++) printf("%2d",a[i][j]); printf("\n"); } }
数组练习题及答案

精品文档数组练习题及答案第五章一、选择题)b1、判断字符串a和是否相等,应当使用(if(strcmp(a,b)) 、C 、if(strcpy(a,b)) D A、if(a==b) B、if(a=b))2、以下正确的定义语句是(}; 、 B A、int a[1][4]={1,2,3,4,5};double y[][3]={0}; D、C、2,3}};)a的选项是(3、以下各组选项中,均能正确定义二维实型数组}; float a[ ][4]; A、float a[3][4];};float a[3][4]; B、float a(3,4);}; }; C、D、float a[3][4]; float a[3][ ]; float a[ ][4];4、下面程序的运行结果是()1—5 DDCBA 6—10 BDABB 11—15 CCCBC 16—20 DDCBB21—25 BBAAA 26—30 DBDDB#include stdio.hmain(){ char str[]=SSSWLIA,c;int k;for(k=2;((c=str[k])!='\0');k++){ switch(c){case 'I':++k;break;case 'L':continue;default:putchar(c);continue;}putchar('*');}}A、SSW*B、SW*C、SW*AD、SW5、下面程序段是输出两个字符串中对应相等的字符。
横线处应填入()char x[]=programming;char y[]=Fortran;int i=0;精品文档.精品文档while(x[i]!='\0'&&y[i]!='\0')if(x[i]==y[i]) printf(%c,《1》);else i++;A、x[i++]B、y[++i]C、x[i]D、y[i]6、有下面的程序段,则()char a[3],b[]=china;a=b;printf(%s,a);A、运行后将输出ChinaB、运行后将输出ChC、运行后将输出ChiD、编译出错7、下面程序的运行结果是()main(){ char ch[7]={ab56};int i,s=0;for(i=0;ch[i]>='0'&&ch[i]<='9';i+=2)s=10*s+ch[i]-'0';printf(%d\n,s);}A、1B、1256C、12ab56D、12568、定义如下变量和数组:则下面语句的输出结果是()int k;int a[3][3]={1,2,3,4,5,6,7,8,9,};for(k=0;k<3;k++)printf(%d,a[k][2-k]);A、3 5 7B、3 6 9C、1 5 9D、1 4 79、下面程序段的运行结果是()char c[5]={'a','b','\0','c','\0'};printf(%s,c);A、'a''b'B、abC、ab cD、abc10、若有说明:int a[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是()A、2B、3C、4D、无确定值精品文档.精品文档11、下面程序的运行结果是()main(){ int a[6],i;for(i=1;i<6;i++){ a[i]=9*(i-2+4*(i>3))%5;printf(-,a[i]);}}A、-4 0 4 0 4B、-4 0 4 0 3C、-4 0 4 4 3D、-4 0 4 4 012、下面程序的运行结果是()main(){int a[6][6],i,j;for(i=1;i<6;i++)for(j=1;j<6;j++)a[i][j]=(i/j)*(j/i);for(i=1;i<6;i++){ for(j=1;j<6;j++)printf(-,a[i][j]);printf(\);}}A、1 1 1 1 1B、0 0 0 0 1C、1 0 0 0 0D、1 0 0 0 11 1 1 1 1 0 0 0 1 0 0 1 0 0 0 0 1 0 1 01 1 1 1 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 01 1 1 1 1 0 1 0 0 0 0 0 0 1 0 0 1 0 1 01 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 113、下述对C语言字符数组的描述中错误的是()A、字符数组可以存放字符串。
数组练习题及答案

数组练习题及答案问题1:数组的基本操作题目:编写一个程序,实现以下功能:1. 初始化一个整型数组,大小为10,所有元素初始化为0。
2. 将数组中的元素依次设置为1到10。
3. 输出数组中的所有元素。
答案:```c#include <stdio.h>int main() {int arr[10] = {0};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:数组的反转题目:编写一个函数,实现对整数数组的反转。
答案:```cvoid reverseArray(int arr[], int size) {int start = 0;int end = size - 1;while (start < end) {int temp = arr[start];arr[start] = arr[end];arr[end] = temp;start++;end--;}}```问题3:数组的查找题目:编写一个函数,实现在数组中查找特定元素的索引,如果找到返回该元素的索引,如果未找到返回-1。
答案:```cint findElement(int arr[], int size, int element) {for (int i = 0; i < size; i++) {if (arr[i] == element) {return i;}return -1;}```问题4:数组的排序题目:使用冒泡排序算法对整数数组进行排序。
答案:```cvoid bubbleSort(int arr[], int size) {for (int i = 0; i < size - 1; i++) {for (int j = 0; j < size - i - 1; j++) {if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}}```问题5:数组的动态扩展题目:编写一个函数,实现对数组的动态扩展,使其能够存储更多的答案:```cvoid dynamicArrayExpansion(int *arr, int *size, int capacity, int newElement) {if (*size >= capacity) {int newCapacity = capacity * 2;int *newArr = (int *)malloc(newCapacity *sizeof(int));for (int i = 0; i < *size; i++) {newArr[i] = arr[i];}free(arr);arr = newArr;capacity = newCapacity;}arr[(*size)++] = newElement;}```结束语:这些练习题涵盖了数组的基本操作、查找、排序和动态扩展等常见问题,希望能够帮助您更好地理解和掌握数组的使用。
数组经典例题

1、以下哪个操作可以实现将数组arr中的所有元素向右旋转一个位置?A. arr.rotate(1)B. arr.shift()C. temp = arr.pop(); arr.unshift(temp);D. arr.push(arr.shift());(答案)D2、给定一个已排序的数组arr和一个目标值target,下列哪个方法能最高效地查找target在arr中的位置?A. 顺序查找B. 二分查找C. 哈希查找D. 插值查找(在均匀分布时)(答案)B(二分查找在已排序数组中通常最高效)3、以下哪个JavaScript方法可以用来合并两个数组arr1和arr2?A. arr1.merge(arr2)B. arr1.concat(arr2)C. arr1 + arr2D. arr1.join(arr2)(答案)B4、在Python中,如何创建一个包含10个元素,每个元素都初始化为0的列表?A. zeros_list = * 10B. zeros_list = [0 for _ in range(10)]C. zeros_list = list(0 * 10)D. zeros_list = (0,) * 10(虽然这是元组,但为干扰项)(答案)A, B(两者均可)5、下列哪项不是数组的优点?A. 随机访问速度快B. 插入和删除操作效率高C. 数据类型可以一致D. 可以存储大量数据(答案)B(插入和删除操作效率依赖于位置,通常在中间时较低)6、假设有一个整数数组nums,你想找到其中出现次数最多的元素,应该使用以下哪个数据结构来辅助?A. 栈B. 队列C. 哈希表D. 二叉搜索树(答案)C7、在C语言中,如何声明一个名为numbers,包含5个整数的数组?A. int numbers;B. int numbers;C. int numbers = ;D. int numbers[ ] = 5;(答案)A8、给定一个数组arr,你需要找到两个数使得它们的和等于一个给定的数k,以下哪种算法最适合解决这个问题?A. 暴力枚举法,检查每对组合B. 快速排序后双指针法C. 动态规划D. 二分查找(答案)B(快速排序后双指针法可以在O(n)时间内解决问题,前提是数组已排序)。
数组习题及答案

构造数据对象——数组一、填空题1.数组是一组相同的集合。
2.数组名代表数组的。
3.数组元素在数组中的位置序号称为它是从开始整数。
4.有int a[ ]={4,6,2,12,435,-9,76,0,0};该数组元素值最大的下标为。
5.定义数组tw,其能存储23个长整形数的语句为。
6.有说明语句int a[10]={1,2,3,4,5,6};则元素a[9]的值为。
7.数组char c[ ]=”abcd”中有个元素,最后一个元素是。
8.”a”在内存中占个存储单元。
9.定义一个能存放下字符串Vocation的字符数组enm的语句为。
10.定义一个可保存100个整型数的数组pn,并把每个元素初值设为0的语句是。
11.与puts(ss)等价的printf函数调用是。
二、选择题1.下面关于数组的说法,不正确的是()A.数组总为一个整体,可以参加算术运算B.数组中的数组元素相当于一个简单变量C.数组可以用来保存字符串D.数组是一组连续的,类型相同的数据集合2.下列说法不是数组特性的是()A.数组元素类型相同B.数组长度固定C.数组占用连续的内存空间D.数组可作为一个整体参与运算3.定义一个具有8个元素的整形数组,应使用语句()A.int a[8]; B.int a[2,4];C.int a[ ]; D.int *a[8];4. 以下能正确定义一维数组的选项是()A.int num[ ];B.#define N 100 int num[N];C.int num[0..100];D.int N=100;5.下面对s的初始化,不正确的是()A.char s[5]={“abcd”};B.char s[5]={‘a’,’b’,’c’};C.char s[5]=””;D.char s[5]=”abcd”;6.对以下说明语句正确的理解是()int a[10]={6,7,8,9,10,12};A.将6个初值依次赋值给a[1]至a[5];B.将6个初值依次赋值给a[0]至a[5];C.将6个初值依次赋值给a[5]至a[10];D.因数组长度和初值的个数不同,所以此语句不正确7.用scanf语句为数组a中的第二个数组元素输入数据,格式正确的是()A.scanf(“%d”,a[2]);B.scanf(“%d”,&a[2]);C.scanf(“%d”,&a[1]);D.scanf(“%d”,a(1));三、判断题1.数组在内存中占用的空间是不连续的。
实验5数组答案

实验5数组答案C语⾔程序设计实验报告实验五使⽤数组的程序设计班级学号姓名⼀、实验⽬的(1)掌握⼀维数组和⼆维数组的定义、赋值和输⼊输出⽅法。
(2)掌握字符数组的使⽤。
(3)掌握与数组有关的算法。
⼆、实验内容及步骤1、验证性实验输⼊已编好的源程序,然后进⾏编辑、编译、连接和运⾏,观察运⾏结果。
(1)某数列前两项为0,1,以后各项均为前相邻两项之和,输出该数列前20项。
#includemain(){long i,x[20];x[0]=0;x[1]=1;for(i=2;i<20;i++)x[i] =x[i-1]+x[i-2];for(i=0;i<20;i++)printf("% ld\t",x[i]);}输出结果:(2)从键盘输⼊N个⾃然数,然后按升序进⾏排列。
⽤“⽐较法”#include#define N 10main(){int a[N],t,i,j;for(i=0;iscanf ("%d", &a[i]);for(i=0;ifor(j=i+1;jif (a[j]for(i=0;iprintf(" %d",a[i]);}输出结果:2、完成以下程序,并进⾏调试(1)从键盘输⼊⼀个班(全班最多不超过30⼈)学⽣某门课的成绩,当输⼊成绩为负值时,输⼊结束,分别统计下列内容:a)统计不及格⼈数并打印不及格学⽣名单;b)统计成绩在全班平均分及平均分之上的学⽣⼈数并打印其学⽣名单;c)统计各分数段的学⽣⼈数及所占的百分⽐程序代码:#includeint F1(int i,int sum,int *a,int *counter){int j;printf("不及格学⽣名单:");for(j=1;j{sum+=a[j];if(a[j]<60){printf("%3d",j);counter[0]++;}}return sum;}F2(int i,float average,int *a,int *counter){int j;printf("average=%f,成绩⼤于等于平均分的学⽣名单:",average);for(j=1;j{if(a[j]>=average){printf("%3d",j);counter[11]++;}}}F3(int i,int *a,int *counter){int j;for(j=1;j{if(a[j]<=10) counter[1]++;else if(a[j]>10&&a[j]<=20) counter[2]++;else if(a[j]>20&&a[j]<=30) counter[3]++;else if(a[j]>30&&a[j]<=40) counter[4]++;else if(a[j]>40&&a[j]<=50) counter[5]++;else if(a[j]>50&&a[j]<=60) counter[6]++;else if(a[j]>60&&a[j]<=70) counter[7]++;else if(a[j]>70&&a[j]<=80) counter[8]++;else if(a[j]>80&&a[j]<=90) counter[9]++;else if(a[j]>90&&a[j]<=100) counter[10]++;}printf("各分数段⼈数: 百分⽐:\n");for(j=1;j<=10;j++)printf("%d %f\n",counter[j],(float)(counter[j])/(i-2)); } main(){static int a[31],counter[12],flag;int i=1,j=1,sum=0;float average;printf("请输⼊学⽣成绩并以负值结束: ");do{scanf("%d",&a[i]);if(a[i]<0)flag=1;i++;}while(flag==0);sum=F1(i,sum,a,counter);printf("不及格⼈数=%d\n",counter[0]);average=(float)sum/(i-2);F2(i,average,a,counter);printf("⼤于等于平均分⼈数=%d\n",counter[11]);F3(i,a,counter);}运⾏结果:(2)编写⼀个程序,利⽤字符数组实现两个字符串的⽐较。
数据结构课后习题答案第五章数组与广义表

第五章数组与广义表一、假设有二维数组A6*8,每个元素用相邻的6个字节存储,存储器按字节编址。
已知A的起始存储位置(基地址)为1000。
计算:1、数组A的体积(即存储量);2、数组A的最后一个元素a57的第一个字节的地址;3、按行存储时,元素a14的第一个字节的地址;4、按列存储时,元素a47的第一个字节的地址;答案:1、(6*8)*6=2882、loc(a57)=1000+(5*8+7)*6=1282或=1000+(288-6)=12823、loc(a14)=1000+(1*8+4)*6=10724、loc(a47)=1000+(7*6+4)*6=1276二、假设按低下标(行优先)优先存储整数数组A9*3*5*8时第一个元素的字节地址是100,每个整数占四个字节。
问下列元素的存储地址是什么?(1)a0000(2)a1111(3)a3125 (4)a8247答案:(1)100(2)loc(a1111)=100+(1*3*5*8+1*5*8+1*8+1)*4=776(3) loc(a3125)=100+(3*3*5*8+1*5*8+2*8+5)*4=1784(4) loc(a8247)=100+(8*3*5*8+2*5*8+4*8+7)*4=4416五、设有一个上三角矩阵(aij)n*n,将其上三角元素逐行存于数组B[m]中,(m 充分大),使得B[k]=aij且k=f1(i)+f2(j)+c。
试推导出函数f1,f2和常数C(要求f1和f2中不含常数项)。
答:K=n+(n-1)+(n-2)+…..+(n-(i-1)+1)+j-i=(i-1)(n+(n-i+2))/2+j-i所以f1(i)=(n+1/2)i-1/2i2f2(j)=jc=-(n+1)九、已知A为稀疏矩阵,试从空间和时间角度比较采用两种不同的存储结构(二维数组和三元组表)完成∑aii运算的优缺点。
(对角线求和)解:1、二维数组For(i=1;i<=n;i++)S=s+a[i][i];时间复杂度:O(n)2、for(i=1;i<=m.tu;i++)If(a.data[k].i==a.data[k].j) s=s+a.data[k].value;时间复杂度:O(n2)二十一、当稀疏矩阵A和B均以三元组表作为存储结构时,试写出矩阵相加的算法,其结果存放在三元组表C中。
C语言实验报告实验五参考答案

C语言实验报告实验五参考答案实验五一维数值数组(参考答案)1、设计程序sy5-1.c,计算n门课程的平均分。
例如:若有5门课程的成绩是:90.5.72.80.61.5.55,则平均分是:71.80.算法分析:先求n门课的成绩总和,(累加求和),再用累和除以课程数。
参考答案:includevoid main()double score[30]。
sum=0,aver;int n,i;printf("Inputn:");scanf("%d",&n);printf("请依次输入%d门课程的成绩",n);for(i=0;i<n;i++)scanf("%lf",&score[i]);sum=sum+score[i];aver=sum/n;printf( "\nAverage scoreis: %5.2f\n"。
aver);运行结果:2、设计步伐sy5-2.c,对输入的10个整数按倒序寄存后输出成效。
算法阐发:利用“半数交流”算法,最前面的元素和末了面的元素交流,逐步向中央挨近。
可利用两个下标变量i和XXX。
参考答案:includeint main()int a[10]={1,2,3,4,5,6,7,8,9,10};int i,j,t;for( i=0,j=9.i<j。
i++,j--)//逐一向中,交换。
直到已没有元素没交换t=a[i]。
a[i]=a[j]。
a[j]=t;}// a[i]-数组前端的数,a[j]-数组后端的数printf("交流后数组元素是:");for(i=0;i<10;i++)printf("%5d",a[i]);//%5d,5透露表现宽度printf("\n");//输出完所有的数后换行return 0;运行结果:3、设计程序sy5-3.c,输入10个整数,找出其中的最大数及其所在的下标。
C语言-数组-实验题目及答案

实验六数组程序设计【实验目的】1、掌握使用一维数组编程方法2、掌握使用二维数组进行程序设计【实验内容】一、上机验证程序,并分析结果要求:读懂程序,写出分析结果;上机运行程序,得到运行结果,比较之。
1、#include <stdio.h>int main(){ int a[ ]={1,2,3,4,5} , i, j, s=0 ;j = 1;for ( i = 4 ; i>=0 ; i--){s = s+ a[i] * j ;j = j * 10 ;}printf(" s= %d \n" , s );return 0;}二、程序改错题1.下面程序的功能,是从键盘输入一个数组〔数组长度为10〕,查找数组中正数的个数。
源代码如下,程序中存在错误,请将其改正。
#include <stdio.h>int main(){int a(10);/*定义数组*/int count,i;/* i循环变量 count 正数个数*/for(i=0;i<=10;i++){/*循环输入*/scanf("%d",a[i]);}count=1;for(i=0;i<=10;i++){/*查找正数*/if(a(i)>0)count++;}printf("数组中正数有:%d个\n",count);return 0;}三编写程序1.编写程序要求输入30个学生的单科成绩,输出高于平均分的成绩。
#include <stdio.h>#define N 30int main(){float score[N],sum=0,aver;int i;for(i=0;i<30;i++){scanf("%f",&score[i]);sum=sum+score[i];}aver=sum/30;printf("平均分为:%.2f\n",aver);for(i=0;i<N;i++)if(score[i]>aver)printf("%.2f ",score[i]);printf("\n");return 0;}2.编写程序:假设有13位评委参与评分工作。
实验(6)-数组-参考答案

实验(6)-数组-参考答案C语⾔程序设计实验教学(6)【实验⽬的】数组的应⽤是很重要的⼀章。
通过实验掌握⼀维数组的主要应⽤,并理解数组的存储。
对⼆维数组的处理要⽐较熟悉。
【实验要求】⼀维数组的题⽬要求全⾯掌握,应⽤循环结构完成⼀维数组的输⼊、处理和输出。
⼆维数组能够完成简单的数据处理和应⽤。
【实验课时】8.0【实验内容】⼀维数组:1、定义⼀个可以存放10个元素的int数组a,输⼊10个数,并逆序输出。
#include#includevoid main( ){int a[10], i; clrscr();printf("Please input array a :");for(i=0;i<10;i++)scanf("%d", &a[i]);/* 由键盘逐次输⼊值赋予数组各元素*/for(i=9;i>=0;i--) /* 变量i递减控制着数组元素倒序输出*/ printf("%5d", a[i]);}2、⽤数组来保存Fibonacci数列前20项数值,以每5个数据为⼀⾏进⾏输出。
#include#includevoid main( ){int i; long f[20]; clrscr();f[0]=1;f[1]=1;for(i=2;i<20;i++)f[i]=f[i-1]+f[i-2];for(i=0;i<20;i++){if(i%5==0) printf("\n");printf("%10ld",f[i]);}}3、统计具有10个元素的⾃然数数组num中的奇数个数。
#include#includevoid main( ){int i,num[10],count=0; clrscr();for(i=0;i<10;i++){printf("enter NO %d : ",i+1);/*给予输⼊提⽰*/scanf("%d",&num[i]);if(num[i]%2!=0) count++;}printf("Count is:%d\n",count );}4、计算整数数组a中的最⼤值及其所在的下标。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验5 数组班级:学号:姓名:日期:一、实验目的(1)掌握一维数组和二维数组的定义、赋值和输入输出方法;(2)掌握字符数组和字符串函数的使用;(3)掌握与数组有关的算法(特别是排序算法)。
二、实验内容1.阅读下面程序,写出程序运行结果,并且上机进行验证。
(1) #include "stdio.h"void main(){int i,n[4]={0,0,0,0};for(i=1;i<4;i++){if (i==3) break;n[i]=n[i-1]+1;}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'};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};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"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++)printf("%2d",a[i][j]);printf("\n");}}2.程序填空(根据题意在空白处填入适当的内容,使程序变得完整。
并上机进行调试验证)(1)程序说明:下列程序完成的是插入排序功能:数组a 中存放一个递增数列,输入一个整数x,将它插入到数组中,使之仍为一个有序数列。
#include "stdio.h"#define N 10void main(){int a[11]={1,10,20,30,40,50,60,70,80,90} ,x,i,p;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("\n");}(2)程序说明:下面程序完成的是折半查找。
A 数组中存放的是n 个由大到小已经排好序的数列,从这n 个数中查找x 的值是否存在。
其基本思想是:在查找范围里,将x 与处于中间位置上的数比较,如果相等,则查找成功,如果小于该元素,则在较小的一半元素里再进行折半查找;如果x大于该元素,则在较大的一半元素里再进行折半查找。
变量top,bottom,mid 分别指向查找范围的顶部、底部和中间位置。
#include "stdio.h"#define n 10main(){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;if(x==a[mid]){find=1;printf("x=%d position=%d\n",x,mid);}else if(x>a[mid])bottom=mid-1;elsetop=mid+1;}if(find==0) printf("the number %d is not in the table",x);}(3)程序说明:下面程序分别输出方阵中主对角线、副对角线上元素的和suml 和sum2(主对角线为从矩阵的左上角至右下角的连线,副对角线为从矩阵的右上角至左下角的连线).#include"stdio.h"#define SIZE 5void main(){int a[SIZE][SIZE],m,n,sum1,sum2;for(m=0;m<SIZE;m++)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);}(4)程序说明:下面程序打印出如下所示的杨辉三角行(打印10 行)。
11 11 2 11 3 3 11 4 6 4 11 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++){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 个数存入一维数组,然后再按逆序重新存放后输出。
#include <stdio.h>void main(){int a[10],i,temp;for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<10;i++)printf("%5d",a[i]);printf("\n");for(i=0;i<5;i++){temp=a[i];a[i]=a[9-i];a[9-i]=temp;}for(i=0;i<10;i++)printf("%5d",a[i]);printf("\n");}(2)编写程序完成如下功能:从键盘输入两个字符串ch2、ch1,然后将字符串ch2 连接到字符串ch1 的后面,并输出连接后的字符串。
#include <stdio.h>#include <string.h>void main(){char ch1[20],ch2[10];int i,j;scanf("%s",ch1);scanf("%s",ch2);j=strlen(ch1);for(i=0;i<strlen(ch2);i++,j++)ch1[j]=ch2[i];ch1[j]='\0';printf("%s\n",ch1);}(3)编写程序完成如下功能:现有两个已按升序排好的数组,将它们合并为一个升序排序的数组(归并排序)。
算法:两个数组合并时,可为每个数组各安排一个指针,从第一个元素开始依次比较两数组对应元素,小的取下来顺序放入新的数组,取下所指元素的指针后移,再比较,依此类推,直到其中一个数组的元素已全部放入新数组,再把另一数组余下的元素全部顺序放入新数组,归并完成。
编程并上机调试运行。
(1)用选择法对10个整数排序。
10个整数用scanf函数输入。
#include <stdio.h>void main(){int i,j,min,temp,a[11];printf("enter data:\n");for(i=1;i<=10;i++){printf("a[%d]=",i);scanf("%d",&a[i]);}printf("The orginal numbers:\n");for(i=1;i<=10;i++)printf("%5d",a[i]);printf("\n");for(i=1;i<=9;i++){min=i;for(j=i+1;j<=10;j++)if(a[min]>a[j]) min=j;temp=a[i];a[i]=a[min];a[min]=temp;}printf("\n The sorted numbers:\n");for(i=1;i<=10;i++)printf("%5d",a[i]);printf("\n");}(2)有15个数存放在一个数组中,输入一个数,要求用对半查找法找出该数是数组中第几个元素的值。