一维数组练习.doc

合集下载

一维数组练习题

一维数组练习题

一维数组练习题题目一:数组元素反转描述:给定一个整数数组,将数组中的元素反转并输出。

要求:1. 输入一个整数n,表示数组的长度(1 ≤ n ≤ 100);2. 输入n个整数构成的数组;3. 输出数组中的元素,按照逆序输出。

解答:题目二:查找数组中的最大值和最小值描述:给定一个整数数组,找出数组中的最大值和最小值,并输出。

要求:1. 输入一个整数n,表示数组的长度(1 ≤ n ≤ 100);2. 输入n个整数构成的数组;3. 输出数组中的最大值和最小值。

解答:题目三:计算数组的和与平均值描述:给定一个整数数组,计算数组中所有元素的和及平均值,并输出结果。

要求:1. 输入一个整数n,表示数组的长度(1 ≤ n ≤ 100);2. 输入n个整数构成的数组;3. 输出数组中所有元素的和及平均值,结果保留两位小数。

解答:题目四:数组去重描述:给定一个整数数组,去除数组中的重复元素,并输出结果。

要求:1. 输入一个整数n,表示数组的长度(1 ≤ n ≤ 100);2. 输入n个整数构成的数组;3. 输出去除重复元素后的数组。

解答:题目五:数组元素排序描述:给定一个整数数组,对数组中的元素进行排序,并输出结果。

要求:1. 输入一个整数n,表示数组的长度(1 ≤ n ≤ 100);2. 输入n个整数构成的数组;3. 输出排序后的数组。

解答:题目六:数组元素查找描述:给定一个整数数组和一个目标值,判断目标值是否存在于数组中,并输出结果。

要求:1. 输入一个整数n,表示数组的长度(1 ≤ n ≤ 100);2. 输入n个整数构成的数组;3. 输入一个整数作为目标值;4. 若目标值存在于数组中,则输出"目标值存在于数组中",否则输出"目标值不存在于数组中"。

解答:以上为一维数组练习题的题目描述及解答,请根据题目所需完成相应的练习。

一维 数组 练习 参考

一维 数组 练习 参考

试验六一维数组一、基础能力落实:二、1)编写一个程序,创建一个8个元素的int数组,并且把元素分别设置为2的前8次幂,然后打印出他们的值。

使用for循环来设置值;为了变化,使用do while 循环来显示这些值。

2)#include <stdio.h>#define SIZE 8int main( void ){int s[SIZE]={1};int i;for (i = 1; i < SIZE; i++){s[SIZE] = 2 * s[SIZE-1];}i = 0;do{printf("%d ", s[i++]);} while (i < SIZE);printf("\n");return 0;}2)将下列数组中的值逆序存放。

s[8]={3, 6, 11, 8, 4, -3, 0, 2}.#include<stdio.h>#define N 8int main(){int s[8]={3,6,11,8,4,-3,0,2};int i=0, j=N-1, swap;while(i<j);{swap=a[i];a[i]=a[j];a[j]=swap;i++;j--;}for(i=0;i<N;i++){printf(“%d ”,a[i])}printf(“\n”);return 0;}三、进阶能力落实:四、1)编写一个程序,创建两个8元素的double数组,使用一个循环来让用户键入第一个数组的8个元素的值,程序把第二个数组的元素设置为第一个数组元素的累积和,例如,第二个数组的第4个元素应该等于第1个数组的前4个元素的和,第二个数组的第5个元素应该等于第一个数组的前5个元素的和,最后,使用一个循环来显示两个数组中的内容,第一个数组在一行中显示,而第二个数组中的每个元素在第一个数组的对应元素之下进行显示。

#include <stdio.h>#define SIZE 8int main(void){double arr[SIZE];double arr_cumul[SIZE];int i;printf("Enter %d numbers:\n", SIZE);for (i = 0; i < SIZE; i++){printf("value #%d: ", i + 1);scanf("%lf", &arr[i]);/* or scanf("%lf", arr + i); */}arr_cumul[0] = arr[0]; /* set first element */for (i = 1; i < SIZE; i++)arr_cumul[i] = arr_cumul[i-1] + arr[i];for (i = 0; i < SIZE; i++)printf("%8g ", arr[i]);printf("\n");for (i = 0; i < SIZE; i++)printf("%8g ", arr_cumul[i]);printf("\n");return 0;}2)编写程序实现功能:输入两个字符串,求出这两个字符串的长度,比较两个字符串的大小,将第二个字符串接到第一个字符串后面,然后再将第一个字符串拷贝到第二个字符串中。

一维数组练习题

一维数组练习题

维数组练习题1 、以下对一维数组 a 进行正确初始化的是 ____________A) int a[10]=(0,0,0,0,0);C) int a[ ]={0}; B) int a[10]={ };D) inta[10]={ 10*2};2 、以下一维数组 a 的正确定义是_________ 。

A) int a(10); B) int n=10,a[n];C) int n; D) #define SIZE 10 scanf("%d",&n); int a[SIZE];int a[n];3 、执行下面的程序段后 , 变量 k 中的值为 __________ 。

int k=3,s[2];s[0]=k;k=s[1]*10;A) 不定值B) 33C) 30 D) 104 、下列程序执行后的输出结果是main(){int a,b[5];a=0; b[0]=3;printf("%d,%d\n",b[0],b[1] );A) 3,0C) 0,3 }B) 3 0D) 3, 不定值5、已知数组a的赋值情况如下所示,则执行语句a[2]++; 后a[1]和a[2]的值分别是_______________ 。

a[0] a[1] a[2] a[3]a[4]10 | 20 | 30 | 40 | 50|A) 20 和 30 C) 21 和 30 B) 20 和 31 D) 21 和 316、以下程序输出 a 数组中的最小值及其下标,在划线处应填入的是 _____________ main( ){ int i,p=0,a[10];for(i=0;i<10;i++) scanf("%d",&a[i]);for(i=1;i<10;i++)if(a[i]<a[p]) ____________ ;printf("%d,%d\n",a[p],p);A) i=p C) p=j ,并输出低于平均分的学生B) a[p]=a[i]D) p=i7 、以下程序的输出结果是 ________ 。

一维数组习题

一维数组习题

10、用插入法对输入的10个整数按由小到大的顺序排列。
main() x[j]=t { int x[10],j,k,l,t,flag; flag=0 for(j=0;j<10;j++) {scanf("%d",&t); x[l+1]=x[l] if(j==0) ; else { for(flag=1,k=0;k<j&&flag;k++) if(x[k]>t) ; if(flag) x[j]=t; else { for(l=j-1;l>=k-1;l--) ; x[k-1]=t; } }} for(j=0;j<10;j++) { printf("%6d",x[j]); if((j+1)%5==0) printf("\n"); } }
j+1 j- ++j n++
12.将两个升序数列归并后仍为升序数列。 main() { int a[10]={1,2,5,8,9,10},an=5; a[j] int b[10]={1,3,4,8,12,18},bn=5; j++ int j,k,l,c[20],max=9999; b[k] a[an+1]=b[bn+1]=max; k++ j=k=l=0; while(a[j]!=max||b[k]!=max) if (a[j]<b[k]) { c[l]= ; l++; ; } else { c[l]= ; l++; ; } for(j=0;j<l;j++) printf("%4d",c[j]); }

练习5-一维数组ans

练习5-一维数组ans

练习5 一维数组参考答案一、目的1、掌握一维数组的定义、初始化及输入输出方法;2、学习用一维数组实现查找、排序等算法。

二、实验1.程序改错:C5_1m.C定义了一个三个元素的一维数组,然后输出数组的各个元素。

请在一对/**/之间修改错误。

注:应输出1 2 3#include <stdio.h>#include <conio.h>void main( ){ /**/int i,j,a[3]={1,2,3}; /*数组初始化缺少花括号*/for(i=0;i<=2;i++) /*数组下标从0开始*/printf("%d ",a[i]); /*引用数组元素时下标需加中括号*/printf("\n");/**/getch();}2.程序改错:C5_2m.C实现数组元素逆序重排。

请在一对/**/之间修改错误。

#include <stdio.h>#include <conio.h>void main( ){int a[8]={1, 5, 8, 4, 6, 2, 3, 7};int i,temp;printf("Array a : ");for(i=0;i<=7;i++)printf("%3d", a[i]);printf("\n");/**/for(i=0;i<=3;i++){ temp=a[i];a[i]=a[7-i];a[7-i]=temp;}/**/printf("Now, Array a : ");for(i=0;i<=7;i++)printf("%3d",a[i]);printf("\n");getch();}3.改写程序C5_2m.C,另存为C5_3.C:用另一种解法实现上题。

一维数组习题

一维数组习题

一维数组习题一、选择题1、对定义“int a[2];”的正确描述是()。

A、定义一维数组a,包含a[1]和a[2]两个元素B、定义一维数组a,包含a[0]和a[1]两个元素C、定义一维数组a,包含a[0]、a[1]和a[2]三个元素D、定义一维数组a,包含a(0)、a(1)和a(2)三个元素2、以下数组的定义中,合法的是()。

A、int x(3);B、int x[3]C、int x[2+1];D、int n=3,[n];3、以下数组的初始化中,正确的是()。

—A、char s[]={‘a’,’b’};B、char s[2]={‘a’,’b’,’c’};C、char s(2)={‘a’,’b’};D、char s={‘a’,’b’,’c’};4、以下初始化中,能够将各初始值正确赋给a数组元素的是()。

A、int a[3]={1,2};B、int a[3]={,2,};C、int a[3]={1,5,4,12};D、int a(3)={1,5};5、以下对一维数组的定义中,正确的是()。

A、#define MAX 5B、int MAX=5;int a[MAX]; int a[MAX];C、int MAX;D、#define MAX 5;scanf(“%d”,&MAX); int a[MAX];。

int a[MAX];6、若有初始化“float a[]={1,2,3,4,5};”,则以下叙述中错误的是()。

A、因所提供的初值都是整数,与数组类型不一致,所以出现错误B、a数组在内在中占据20个字节C、a数组中的最后一个元素是a[4]D、元素a[2]的值是7、若有初始化“int a[5]={1,2,3,4,5};”,则值为4的表达式是()。

A、a[4]B、a[a[2]+1]C、a[a[2]]D、a[3]+18、若有初始化语句“int a[]={1,2,3,4,5,6,7,8,9,10};”,则对a数组元素的错误引用是()。

回顾一维数组习题.doc

回顾一维数组习题.doc

一维数组【例1】输入50个数,要求程序按输入时的逆序把这50个数打印出来;也就是说,请你按输入相反顺序打印这50个数分析:我们可定义一个数组a用以存放输入的50个数,然后将数组a内容逆序输出,源程序如下program ex5_1;typearr=array[1..50]of integer; {说明一数组类型arr}vara:arr;i:integer;beginwriteln('Enter 50 integer:');for i:=1 to 50 do read(a[i]);{从键盘上输入50个整数}readln;for i:=50 downto 1 do {逆序输出这50个数}write(a[i]:10);end.【例2】输入十个正整数,把这十个数按由大到小的顺序排列(将数据按一定顺序排列称为排序,排序的算法有很多,其中选择排序中的“简单选择排序”是一种较简单的方法)分析:要把十个数按从大到小顺序排列,则排完后,第一个数最大,第二个数次大,……;因此,我们第一步可将第一个数与其后的各个数依次比较,若发现,比它大的,则与之交换,比较结束后,则第一个数已是最大的数。

同理,第二步,将第二个数与其后各个数再依次比较,又可得出次大的数。

如此方法进行比较,最后一次,将第九个数与第十个数比较,以决定次小的数。

于是十个数的顺序排列结束。

例如下面对5个进行排序,这个五个数分别为829105。

按选择排序方法,过程如下:初始数据:82910 5第一轮排序:82910 592810 510289 510289 5第二轮排序:10829 510928 510928 5第三轮排序:10982 510982 5第四轮排序:10985 2对于十个数,则排序要进行9次。

源程序如下:program ex5_2;vara:array[1..10]of integer;i,j,t:integer;beginwriteln('Input 10 integers:');for i:=1 to 10 do read(a[i]);{读入10个初始数据}readln;for i:=1 to 9 do{进行9次排序}beginfor j:=i+1 to 10 do{将第i个数与其后所有数比较}if a[i]<a[j] then {若有比a[i]大,则与之交换}begint:=a[i];a[i]:=a[j];a[j]:=t;end;write(a[i]:5);end;end.【例3】从键盘输入10个数,将这10个数逆序输入,并求这10个数的和,输出这个和。

C语言程序设计练习题参考答案第四章(1)一维数组

C语言程序设计练习题参考答案第四章(1)一维数组

C语言程序设计练习题参考答案第四章(1)一维数组C语言程序设计练习题参考答案第四章 (1) 一维数组/* 4.11 fibonacci数列,前15项 1,1,2,3,5,。

*/ #include "stdio.h"void main(){int f[15]={1,1}, i;for(i=2;i<=14;i++) /* 计算 */f[i]=f[i-2]+f[i-1];printf("fibonacci数列,前15项\n"); /* 输出 */for(i=0;i<=14;i++){printf("%5d",f[i]);if((i+1)%5==0)printf("\n");}}/* 4.12 数组元素前移动一个位置 */#include "stdio.h" void main(){int a[10]={0,1,2,3,4,5,6,7,8,9};int i,t;printf("\n移动之前:\n");for(i=0;i<=9;i++)printf("%3d",a[i]);/* 移动 */t=a[0];for(i=0;i<=9;i++)a[i]=a[i+1];a[9]=t;printf("\n移动之后:\n");for(i=0;i<=9;i++)printf("%3d",a[i]);}/* 4.13 有序数列中插入若干个数,仍然保持有序 */#include "stdio.h" void main(){int a[100]={1,4,8,10};int i,k,x,count=4;/* i,k 循环变量, x 输入整数,count 有多少整数*/printf("\n请输入要插入的整数,输入之后按回车键,如要结束请输入-1\n"); scanf("%d",&x);while(x!=-1){/* 寻找插入位置 */for(i=0;i<count;i++)< p="">/* 找到插入位置 */if(a[i]>=x){/* 移动 */for(k=count;k>i;k--)a[k]=a[k-1];/* 插入 */a[i]=x;break;}}if(i>=count)a[i]=x;count=count+1;printf("\n插入之后的数组为:\n");for(i=0;i<count;i++)< p="">printf("%4d",a[i]);printf("\n请输入要插入的整数,输入之后按回车键,如要结束请输入-1\n"); scanf("%d",&x);}}/* 4.15 将十进制数转换成二进制数,并按位存放到数组中。

一维数组练习

一维数组练习

一维数组练习一维数组练习6.1 定义如下数组1.表示20中商品的价格;2.表示30件邮件的安全邮递情况;3.统计50个学生在一次考试(满分100,最低分60)中各分数的分布情况;4.统计一篇文章中各字母的出现频率(所有字母均小写)。

6.2 按照顺序读入十个数据,以逆序的范式输出。

X6.3 计算并输出s =∑=101i XiYi ,其中,Xi 的值为1,3,5,7,……17,19,Yi 的值为21,22,23,……,29,30。

6.4 将a 数组中第一个元素移到最后数组末尾,其余数据依次往前平移一个位置。

如:输入 1 2 3 4 5输出 2 3 4 5 16.5 对数组a,输入一个测试数据x ,如果x 存在于数组a,则把x 元素删除;否则将x 插入相应的位置,要求数组仍然有序(假设数组递增)。

6.6编程输入十个正整数,然后自动按从大到小的顺序输出。

6.7 从键盘输入若干个数,将它们按照从小到大的顺序输出。

一维数组的应用6.8 将一个十进制整数转化成二进制数6.9总务室在商店购买了八种文具用品,其数量及单价如下表:序号 1 2 3 4 5 6 7 8品名圆珠笔铅笔笔记本订书机计算器三角板圆规文件夹件数 24 110 60 16 26 32 32 42单价 1.18 0.45 1.8 8.8 78.50 3.28 4.20 2.16编程计算各物品计价及总计价。

6.10用筛法求出100以内的全部素数,并按每行五个数显示。

(要得到不大于某个自然数N 的所有素数,只要在2---N 中将不大于N 的素数的倍数全部划去即可)6.11投票问题。

竞选时,要求选民在A 、B 、C 、D 四个候选人中选择(人数不限),如果选择了ABCD 以外的人员,则视为废票。

统计时输入“#”结束,请按候选人的得票数从大到小顺序输出候选人及其得票情况。

6.12在一次宴会上,有来自八个不同国家的宾客被安排在同一张圆桌就坐。

A是中国人,会讲英语;B是意大利人,他能讲西班牙语;C是英国人,会讲法语;D是日本人,能讲汉语;E是法国人,会讲德语;F是俄国人,懂意大利语;G是西班牙人,能讲日语;最后一个是德国人,懂俄语。

一维数组试题

一维数组试题

C语言考试试题[一维数组]姓名:学号:成绩:一、填空题:(每题1分,共10分)1、数组是构成的集合。

2、数组元素被顺序连续地存放在内存中,并通过进行访问。

3、数组元素的下标从开始。

长度为n的数组中,最后一个元素下标为。

4、一维数组是最简单的数组,其定义形式是:。

5、一个C字符串是以结束的字符序列。

6、专门用于字符串的输入和输出的函数是。

7、float fv[]={0,4,5,12,-7,56.8,0};数组fv的长度是_________。

8、存储字符串“\0”占用________字节的存储单元。

9.有定义int a[]={4,6,78,3456,98,2,89};该数组元素最大的下标为___________。

二、单项选择题,请将答案写在下列答题卡中(每题2分,共24分 )。

1、以下正确的概念是()A、数组名的规定与变量名不相同。

B、数组名后面的常量表达式用一对圆括号括起来。

C、数组下标的数据类型为整型常量或整型表达式。

D、在C语言中,一个数组的数组下标从1开始。

2、对数组初始化正确的方法是:A、int a(5)={1,2,3,4,5};B、int a[5]={1,2,3,4,5};C、int a[5]={1…5};D、int a[5]={0,1,2,3,4,5};3、若有以下的数组定义:char x[]=”12345”; char y[]={…1‟,‟2‟,‟3‟,‟4‟,‟5‟};则正确的描述是:()A、x数组和y数组长度相同B、x数组长度大于y数组长度C、x数组长度小于y数组长度D、两个数组中存放相同的内容4、以下程序运行时,从键盘输入:AhaMA Aha<回车>,则下面程序的运行结果是()#include <stdio.h>main(){char s[80],c=‟a‟;int m=0; scanf(“%s”,s);while(s[m]!=‟\0‟){ if(s[m]==c) s[m]=s[m]-32;else if(s[m]==c-32) s[m]=s[m]+32;m++;}puts(s);}A、ahAMaB、AhAMaC、AhAMa ahAD、ahAMa ahA5、给出以下定义:char x[]=”abcdefg”; char y[]={…a‟,‟b‟,‟c‟,‟d‟,‟e‟,‟f‟,‟g‟};则正确的叙述为:()A 数组A和数组属于空数组B 数组X和数组Y的长度相同C 数组X的长度大于数组Y的长度D数组X的长度小于数组Y的长度6、下面程序的运行结果是()main(){char a[]=”morning”,t;int m,n=0;for(m=1;m<7;m++)if(a[n]<a[m]) n=m;t=a[n];a[n]=a[7];a[7]=a[n];puts(a);}A、mogninrB、moC、morningD、mornin7、字符数组C在内存中所占字节数是:()char c[]={“language”};A、9B、10C、11D、128、下列程序的输出结果是()main(){int n[2],m,k;for(m=0;m<2;m++) n[m]=m;k=2;for(m=0;m<3;m++) printf(“%d\n”,n[k]);}A、不确定的值B、3C、2D、19、在C语言中引用数组元素时,其数组下标的数据类型允许是()A.整型常量 B.整型表达式C.整型常量或整型表达式 D.任何类型表达式10.定义一个具有8个元素的整型数组,应使用的语句是()A.int a[8]; B.int a[2,4]; C. int a[]; D.int *a[8];11.字符串“w\x53\\\np\103q”长度是()A.7 B.9 C.15 D.1612.已知int cn=20;下列关于数组的定义正确的是()A.int a[cn]; B.char cmt[35.0];C.char nm[8]=”2014高考”;D.int x[31];三、程序分析题,写出下面各程序的输出结果。

一维数组作业参考答案

一维数组作业参考答案

1.编写程序,找出10个数中最大的数以及最大数所在的下标。

#include<iostream>using namespace std;int main(){ int a[10],max,xiabiao,i;for(i=0;i<10;i++)cin>>a[i];max=a[0];for(i=1;i<10;i++)if(max<a[i]){ max=a[i];xiabiao=i; }cout<<"最大数为:"<<max<<"其下标为:"<<xiabiao<<endl; return 0;}子函数实现:#include<iostream>using namespace std;void fun(int b[10]); ///函数声明int main(){int a[10],i;for(i=0;i<10;i++)cin>>a[i];fun(a); //函数调用return 0;}void fun(int b[10]) //函数定义{ int max,i,xiabiao;max=b[0];for(i=1;i<10;i++)if(max<b[i]){ max=b[i];xiabiao=i;}cout<<"最大数为:"<<max<<"其下标为:"<<xiabiao<<endl;}2. 编写程序,找出10个数中最大的数和最小数,将最大数与第一个数交换位置,最小数与最后一个数交换位置。

#include<iostream>using namespace std;int main(){ int a[10],i;for(i=0;i<10;i++)cin>>a[i];int max,min,r,t,temp;max=min=a[0];r=t=0;for(i=0;i<10;i++){if(max<a[i]) {max=a[i];r=i;}if(min>a[i]) {min=a[i];t=i;}}temp=a[0];a[0]=a[r];a[r]=temp;temp=a[9];a[9]=a[t];a[t]=temp;cout<<"最大值为:"<<max<<"最小值为:"<<min<<endl;cout<<"交换后数组为"<<endl;for(i=0;i<10;i++)cout<<a[i]<<" ";cout<<endl;return 0;}子函数实现#include<iostream>using namespace std;void fun(int b[10]); //函数声明int main(){ int a[10],i;for(i=0;i<10;i++)cin>>a[i];fun(a); // 函数调用cout<<"交换后数组为"<<endl;for(i=0;i<10;i++)cout<<a[i]<<" ";cout<<endl;return 0;}void fun(int b[10]) //函数定义{ int max,min,r,t,i,temp;max=min=b[0];for(i=0;i<10;i++){if(max<b[i]) {max=b[i];r=i;}if(min>b[i]) {min=b[i];t=i;}}temp=b[0];b[0]=b[r];b[r]=temp;temp=b[9];b[9]=b[t];b[t]=temp;cout<<"最大值为:"<<max<<"最小值为:"<<min<<endl;}3. 将一个数组中的值按逆序重新存放。

1.一维数组基础练习

1.一维数组基础练习

1.一维数组练习1.数的查找(t1.c/t1.in/t1.out)☐给定20个整数,问整数a是否在这20个整数中,如果在输出“YES”,如果不在,则输出“NO”☐输入格式:第一行20个整数,第二行1个整数a,整数范围均在整形范围内☐输出格式:输出对应的结果☐样例输入:5 6 12 5 8 6 11 587 25 36 11 25 12 36 36 34 308 69 254 214512☐样例输出:YES2.成绩统计(t2.c/t2.in/t2.out)☐输入某班的20个学生的数学成绩,输出这个班学生的数学平均成绩。

并统计下该班中低于数学平均成绩的同学有多少个?☐输入格式:一行,20个成绩,类型为实型☐输出格式:两行,第一行为平均分,保留2位小数,第二行为低于平均分的同学个数☐样例输入:80 66 78.5 69 100 99 68 35 40 89 69 55 45 69 88 82 28 98 78 83☐样例输出:70.97103.最大数靠前(t3.c/t3.in/t3.out)☐给定10个整数,选出其中最大的数,将它放在最前面,其他的数的相对位置不变,再将这10个数输出,如果有相同的最大数,则只要将第一个最大的放前面即可☐格式输入:一行10个整数,每个数在整型范围内☐格式输出:一行10个整数,调整后的顺序输出☐样例输入:6 9 4 87 5 68 11 5☐样例输出:11 6 9 4 8 7 5 6 8 54.排序(t4.c/t4.in/t4.out)☐输入10个整数,将这10个整数从大到小排序输出☐格式输入:一行10个整数,数据均在整型范围内☐格式输出:一行,排序后的10个整数☐样例输入:5 6 7 4 1 2 0 6 9 10☐样例输出:10 9 7 6 6 5 4 2 1 05.最大和(t5.c/t5.in/t5.out)☐输入20个正整数,这20个数的尾部数和头部数首尾相连,构成环形的一组数,编程找出相邻的4个数,其相加之和最大,并给出它们的起始位置。

一维数组例题答案

一维数组例题答案

一维数组举例:1.王小二是个卖大饼的,他一刀可以把大饼切2块,两刀可以切出4块,三刀最多可以切7块,四刀可以切11块,问10刀最多可以切多少块?Private Sub Form_Click()Dim x(10) As Integerx(0) = 1For i = 1 To 10x(i) = i + x(i - 1)Print x(i),If i Mod 5 = 0 Then PrintNext iEnd Sub2.输入一串字符,统计各字母出现的次数Private Sub Form_Click()Dim i%, m%, s$, c$Dim a(25) As Integers = InputBox("请输入字符串")For i = 1 To Len(s)c = Mid(s, i, 1)m = Asc(UCase(c)) - 65a(m) = a(m) + 1Next iFor i = 0 To 25Print a(i)Next iEnd Sub3.随机产生10个小于100的自然数,找出其最大值、最小值和平均值。

Private Sub Form_Click()Dim i%, max%, min%, s!Dim a%(1 To 10) '等价于Dim a (1 To 10) as integer RandomizeFor i = 1 To 10a(i) = Int(Rnd * 99) + 1Print a(i)Next imax = a(1): min = a(1)For i = 1 To 10If a(i) > max Then max = a(i)If a(i) < min Then min = a(i)s = s + a(i)Next iPrint "最大值是"; maxPrint "最小值是"; minPrint "平均值是"; s / 10End Sub4.产生10个小于20的不等随机整数,利用冒泡排序法,将数据按从大到小的顺序排列。

一维数组练习题

一维数组练习题

一维数组练习题一维数组练习题1、以下对一维数组a进行正确初始化的是__________。

A) int a[10]=(0,0,0,0,0); B) int a[10]={ };C) int a[ ]={0}; D) int a[10]={ 10*2};2、以下一维数组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];3、执行下面的程序段后,变量k中的值为__________。

int k=3,s[2];s[0]=k; k=s[1]*10;A) 不定值B) 33C) 30 D) 104、下列程序执行后的输出结果是__________。

main(){int a,b[5];a=0; b[0]=3;printf("%d,%d\n",b[0],b[1]); }A) 3,0 B) 3 0C) 0,3 D) 3,不定值5、已知数组a的赋值情况如下所示,则执行语句a[2]++;后a[1]和a[2]的值分别是________。

a[0] a[1] a[2] a[3] a[4]┌──┬──┬──┬──┬──┐│ 10 │ 20 │ 30 │ 40 │ 50 │└──┴──┴──┴──┴──┘A) 20和30 B) 20和31C) 21和30 D) 21和316、以下程序输出a数组中的最小值及其下标,在划线处应填入的是________。

main( ){ int i,p=0,a[10];for(i=0;i<10;i++) scanf("%d",&a[i]);for(i=1;i<10;i++)if(a[i]<a[p])_______________;< p="">printf("%d,%d\n",a[p],p);}A) i=p B) a[p]=a[i]C) p=j D) p=i7、以下程序的输出结果是________。

一维数组 答案(1)

一维数组 答案(1)

第一题:#include<stdio.h>void main(){int a[10]={10,20,40,30,24,15,8,17,35,11},b[10],i,j;for(i=0;i<10;i++){printf("%d ",a[i]);j=9-i;b[j]=a[i];}for(j=0;j<10;j++){printf("%d ",b[j]);}printf("\n");}/*原数列是:10 20 40 30 24 15 8 17 35 11 逆序输出:11 35 17 8 15 24 30 40 20 10 Press any key to continue*/第二题:#include<stdio.h>#include<stdlib.h>void main(){int a[10],i,j,t;printf("产生的随机数列是:");for(i=0;i<10;i++){a[i]=rand()%90+10;printf("%d ",a[i]);}printf("\n按从大到小排序是:");for(i=0;i<9;i++)for(j=0;j<10-i-1;j++)if(a[j]>a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;}for(i=0;i<10;i++)printf("%3d",a[i]);printf("\n");}/*产生的随机数列是:51 27 44 50 99 74 58 28 62 84 按从大到小排序是: 27 28 44 50 51 58 62 74 84 99 Press any key to continue*/第三题:#include<stdio.h>#define N 6void main(){int a[N];int i,j,t,x;printf("输入五个队员的年龄:");for(i=0;i<N-1;i++)scanf("%d",&a[i]);printf("\n输入新队员的年龄:");scanf("%d",&x);printf("\n新队员获得的队服号码:");for(i=0;i<N-1;i++)for(j=0;j<N-2-i;j++)if(a[j]>a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;}for(i=0;i<N-1;i++)if(x<a[i])break;printf("%d\n",i+1);}/*输入五个队员的年龄:22 24 35 22 25输入新队员的年龄:21新队员获得的队服号码:1Press any key to continue*/第四题:#include<stdio.h>void main(){int a[50],n,i,max,maxi;int sum=0,count=0;printf("输入学生人数:");scanf("%d",&n);printf("输入%d个学生成绩:\n",n);printf("序号:");for(i=1;i<=n;i++)printf(" %2d",i);printf("\n成绩: ");for(i=1;i<=n;i++){scanf("%d",&a[i]);sum+=a[i];//计算总分if(a[i]<60)//若成绩不大于60,则不及格count++;}printf("最高分和学生序号为:");max=a[1];maxi=1;for(i=1;i<=n;i++){if(a[i]>max){max=a[i];maxi=i;}}//寻找最大值及其下标sum=sum/n;//计算平均成绩printf("%d %d\n",max,maxi);printf("平均成绩为:");printf("%d\n",sum);printf("不及格的人数为:");printf("%d\n",count);}/*输入学生人数:19输入19个学生成绩:序号: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 成绩: 88 78 77 96 86 75 84 85 63 52 56 63 64 87 95 98 85 84 99最高分和学生序号为:99 19平均成绩为:79不及格的人数为:2Press any key to continue*/。

一维数组的例题

一维数组的例题

t[imax]=tmp; //过渡杯暂存的 0 号杯水-->imax 杯 } for (i=0;i<n;i++) printf("%d,",t[i]); printf("\n"); } 题 3 最大值到最前面 /* arraySorta.c 选择最大元挪到前面 */ #include <stdio.h> main() { int t[5]={10,20,9,34,2}; //直接给出每个元素 int fmax=0, imax=0; //某大及某大的位置 int k=0,i=0,n=5,tmp=0; //第 k 大 for (k=0;k<=n-2;k++) {
x[i]=x[i+1]; //i+1 移到 i } x[n-1]=0; //[n-1]空着了 printf("after delete:\n"); for(i=0;i<n;i++) {printf("%6.1lf",x[i]);} printf("\n"); } 题 9 修改指定数据 /* arrayUpdate1.c 在一个数组中找到指定数据,然后将其换成新数 */ #include <stdio.h> main() { double x[9]={10,20,50,9,8,100,2,18,0},x0=0,x1=0; int i=0,n=0,i0=0; n=sizeof(x)/sizeof(double); printf("old value,new value="); scanf("%lf,%lf",&x0,&x1); //先寻找待更新对象,就是查询源代码 for (i=0;i<n;i++) {

一维数组选择题练习题

一维数组选择题练习题

第五章数组第一讲一维数组的定义和使用1.以下定义语句错误的是()A.int a[5]={1};B.int c[ ]={1,2,0,0,0};C.int b[3+3];D.int i=5,a[i];2.以下一维数组的定义方式,正确的是()A.int n=10;B.#define Max 10int a[n]; int a[Max];C.int a[8.5];D.int a[ ];3.以下选项中,不能正确赋值的是()A.char s1[10];s1=”Ctest”;B.char s2[ ]={‘C’,’t’,’e’,’s’,’t’};C.char s3[20]=”Ctest”;D.char s4[10]={“Ctest”};4.对赋值语句int b[10]={1,2,3,4,5};的正确理解是()A.将5个初值依次赋给b[1]至b[5]B.将5个初值依次赋给b[0]至b[4]C.5个初值依次赋给b[6]至b[10]D.因为数组长度与初值的个数不相同,所以此语句不正确5.在C语言中,数组的下标可以是()A.整型常量表达式B.整型表达式C.整型常量或整型表达式D.任何类型的表达式6.在C语言中,数组名表示()A.数组第1个元素的地址B.数组第2个元素的地址C.数组所有元素的地址D.数组最后一个元素的地址7.若有说明:int a[10];,则对a数组元素的正确引用是()A.a[10]B.a[3.5]C.a(5)D.a[10-10]8.以下能正确定义一维数组的选项是()A.int a[5]={0,1,2,3,4,5};B.int a={‘A’;’B’;’C’};C.int a[]={1,2,3,4,5};D.int a[5]=”01234”;9.执行下面的程序段后,变量k的值为()int k=3,s[2];s[0]=k;k=s[1]*10;A.不定值B.33C.30D.1010.有如下程序:该程序的输出结果是()main(){ int a[6]={1,2,3,4,5,6},i,s=0;for(i=1;i<6;i++)s+=a[i];printf(“%d\n”,s); }A.18B.19C.20D.21二、填空题1.已知:int a[10]={1,2,3,4};若int型变量占4个字节,则数组a在内存中所占的字节数是()。

2-一维数组练习

2-一维数组练习

练习4
C
语 言
练习5
程 序 设 计
编写程序实现下述功能:有10位学生的成绩:17、 34、90、88、55、74、95、82、43、90、编写 程序找出其中的最高分,并将最高分与第一个成 绩交换位置。
C
语 言
练习6
程 序 设 计
编写程序实现下述功能:有一个已经排好序的数 组。要求输入一个数,在数组中查找是否有这个 数,如果有,将该数从数组中删除,要求删除后 的数组仍然保持有序;如果没有,则输出“数组
中没有这个数!”
C






综合实践九
一维数组综合练习
C

作业要求

程 序
请将本次课程作业写在作业本上,要求如下:
设 计
将练习4、练习5、练习6写在作业本上,并记录上机过 程中遇到的问题。
C

言 程 写出下面程Fra bibliotek运行结果序


练习1
C
语 言
练习2




C
语 言
练习3




C
语 言 程 4、读程序并填空 序 设 计
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基本练习:(釆用文件输入输岀)1.输入一串小写字母(以〃.〃为结束标志),统计出每个字母在该字符串中出现的次数(若某字母不出现,则不要输出),例:输入:aaaabbbccc.输出:a:4b:3c: 3规定:文件名:tongji. pas 输出文件:tongji. in输出文件tongji. out程序:var a:array/ z" ] of integer;n:char;beginassign (input, ' tongji,in' );reset (input);assign(output,' tongji. out' );rewrite(output);read (n);while n〈>'.' dobegininc (a[n]);read(n);end;for n:=,a" to,z‘ doif a[n]<>0 then writeln(n,J :,, a[n]);close (input);close (output);end.2.输入一个不大于32767 (integer)的正整数N,将它转换成一个二进制数,例如:输A: 100 输出:1100100规定:文件名:erjinzhi. pas 输出文件:erjinzhi. in输出文件erjinzhi. out程序:vara:array[L . 16] of integer;b, c, d, e: integer;beginassign (input,' erjinzhi. in');reset(input);assign(output,' erjinzhi. out');rewrite(output);readln(b);if b>=0 then write(b,)else write(b,'= -');b:=abs(b);d:=0;while b>0 dobegininc(d);a[d]:=b mod 2;b:=b div 2;end;for e:=d downto 1 do write(a[ej);writein;readln;close (input);close(output);end.提高练习:(釆用文件输入输岀)火3.输入一个由10个整数组成的序列,其中序列中任意连续三个整数都互不相同,求该序列中所有递增或递减子序列的个数,例如:输入:1 10 85932674输出:6对应的递增或递减子序列为:1 1010 8 55 99 3 22 6 77 4规定:文件名:geshu. pas 输出文件:geshu. in输出文件geshu. out【拓展】fuctionkeytype:Boolean;beginif keytype then ......【检测任意键回车出外)】程序:label 1, 3, 4;varc:array[1..10] of longint;y, b, i:longint;a, al:boolean;beginassign(input,' geshu. if);reset (input); assign(output,' geshu. out');rewrite(output); writ eC Please in put 10 numbers:,);for i:=l to 10 do read(c[i]);y: —0; b:=1; i: —0;3:if c[b]>c[b+l] thenbegina:=true;dec (b);l:inc (b);while b<ll dobeginif b=10 then begin inc(y) ; break; end;if c[b]>c[b+l] thenbeginal:=true;if al=a then goto 1endelsebegininc (y);goto 3;end;end;endelsebegina:二false;dec (b);4:inc (b);wh订e b<ll dobeginif b=10 then begin inc(y) ; break; end;if c[b]〈c[b+l] thenbeginal:=false;if al=a then goto 4;endelsebegininc(y);goto 3;end;end;end;writein('Then answer is y);close (input);close(output);end.*4.输入N个数,将这N个数按从小到大的顺序显示出來;规定:文件名:paixu. pas 输出文件:paixu. in输出文件paixu. outvara:array[1.. 100000000] of integer;b, c, d, i, z:longint;beginassign (input,' paixu.in,):reset(input);assign (output,,paixu. out");rewrite(output);readln(i); //读入输入个数for i:=l to i do read(a[i]); //循环读入,放入数组for c:=1 to i dobeginfor b: = (c+l) to i do beginif a[c]>a[b] thenbegina[c]:二a[c] xor a[b];a[b]:=a[c] xor a[b];a[c]:=a[c] xor a[b];end;end;end;for z:=l to i dowrite(a[z],'');close (input);close(output);end.猴子选大王;有"只猴子围成一圈,每只猴子各一个从1到N中的依次编号,打算从中选出一个大王;经过协商,决定出选大王的规则:从第一个开始循环报数,数到M的猴子出圈,最后剩下來的就是大王。

要求:从键盘输入N、M,编程计算哪一个编号的猴子成为大王样例:输入:7 3输出:4输入:5 2输出:3待解:输入:9 9 9 1 5输出:?规定:文件名:houzi. pas 输出文件:houzi. in输出文件houzi. out var n, m, i, j, k, 1, t: longint;a:array[0.. 100000] of longint;f:array[0.. 100000] of boolean;beginreadln(n, m);for i:=l to n dobegin a[i]:=i; f[i]:=true; end;j:=0; k:=0;wh订e j<>n-l do // j为已经筛除的个数begint:=0;wh订e tOm dobegin //循环报数if f [k] then inc(t) ; //t为现在报数的号数l:=k;if kOn then inc(k) else k:=l;//检测编号是否大于总人数end;f[1]:=false;inc(j);end;for i:=l to n doif f[i] then begin writeln(i); halt; end; end.4.1简单排序1.选择排序选择排序的基本思想是:对待排序的记录序列进行n-l遍的处理,笫1遍处理是将L[l.. n]中最小者与L[l]交换位置,第2遍处理是将L[2..n]中最小者与L[2]交换位置,............ ,第i遍处理是将L[i..n]中最小者与L[i]交换位胃这样,经过i遍处理之后,前i个记录的位置就己经按从小到人的顺序排列好了。

例1:输入序列数据按非减顺序输出.程序如下:progrtim xzpx;const n=7;var a:array[l・・n] of integer;i, j, k, t: integer;beginwrite (? Enter date:');for i:= 1 to n do read(a[i]);wri teln;for i:=1 to n-1 dobegink:=i;for j:=i+l to n doif a[j]<a[k] then k:=j;if kOi thenbegin t:=a[i];a[i]:=a[k];a[k]:=t;end;end;write output data:');for i:= 1 to n do write(a[i]:6):writein;end.2.插入排序插入排序的基木思想:经过i-1遍处理后丄[1.. i-1]己排好序。

第i遍处理仅将L[i]插入L[l.. i-1]的适当位置P,原来P后的元素一一向右移动一个位置,使得Ml. • i]乂是排好序的序列。

例2:输入序列数据按非减顺序输出.程序1:progrtim crpx;const n=7;var a:array[l・・n] of integer;i, j, k, t: integer;beginwrite (? Enter date:');for i:= 1 to n do read(a[i]);wri teln;for i:=2 to n dobegink:=a[i];j:=i-l;while (k<a[j]) and (j>0) dobegin a[j+l]:=a[j];j:=j-l end;a[j+l]:=k;end;write output data:');for i:= 1 to n do write(a[i]:6):writein;end.3.冒泡排序冒泡排序又称交换排序其基本思想是:对待排序的记录的关键字进行两两比较,如发现两个记录是反序的,则进行交换,直到无反序的记录为止。

例:输入序列数据按非减顺序输出。

程序1:program mppx;const n=7;var a:array[1・・n] of integer;i, j, k, t:integer;beginwriteC Enter date:');for i:= 1 to n do read(a[i]);for i:=1 to n T dofor j:=n downto i+1 doif a[j-l]<a[j] thenbegin t:=a[j-l];a[j-l]:=a[j];a[j]:=t end;writeC output data:');for i:= 1 to n do write(a[i]:6);writein;end.程序2:program mppx;const n=7;var a:array[1・・n] of integer;i, j, k, t:integer;bool:boolean;beginwriteC Enter date:');for i:= 1 to n do read(a[i]);i:=1;bool:=true;while (i<n) and bool dobeginbool:=false;for j:=n downto i+1 doif a[j-l]<a[j] thenbegin t:=a[j-l]:=a[j];a[j]:=t;bool:=true end;i:=i+l;end;writeC output data:');for i:= 1 to n do write(a[i]:6);writeln;end.程序3:program mppx;const n=7;var a:array[1・・n] of integer;i,j, k, t:integer;beginwriteC Enter date:');for i:= 1 to n do read(a[ij);writeln;k:=n;while k>0 dobeginj:=k-l;k:=O;for i:=1 to j doif a[i]>a[i+l] thenbegin t:=a[i];a[i]:=a[i+l];a[i+l]:=t;k:=i;end;end;write C output data/ );for i := 1 to n do write(a[i] :6);writcln;end.返回4.2快速排序快速排序的思想是:先从数据序列中选一个元素,并将序列中所有比该元素小的元素都放到它的右边或左边,再对左右两边分别用同样的方法处之直到每一个待处理的序列的长度为1,处理结束.例:输入一组数据小到大排序.程序1:program kspv;const n=7;typearr=array[l<. n] of integer;vara:arr;i:integer;procedure quicksort (var b:arr; s,t:integer); var i, j, x, 11: integer;i :二s;j:二t;x:二b[i];repeatwhile (b[j]>=x) and (j>i) do j:=j~l;if j>i then begin tl:=b[i]; b[i]:=b[j];b[j]:=tl;end; while (b[i]<=x) and (i<j) do i:=i+l;if i<j then begin t1:二b[j];b[j]:二b[i];b[i]:二t1; end until i=j;b[i] :=x;i:=i+l;j:=j-l;if s<j then quicksort (b, s, j);if i<t then quicksort (b, i, t);end;beginwriteC input data:');for i:=1 to n do read(a[i]);writeIn;quicksort (a, 1, n);writeoutput data:');for i: = 1 to n do write(a[i]:6);writein;end.程序2:program kspv;const n=7;typearr=array[L . n] of integer;vara:arr;i:integer;procedure quicksort(var b:arr; s, t:integer);var i, j, x: integer;begini:=s; j:=t;x:=b[i];repeatwhile (b[j]>=x) and (j>i) do j:=j-l;if j>i then begin b[i]:二b[j];i:二i+1;end;wh订e (b[i]<=x) and (i<j) do i:二i+1;if i<j then begin b[j]:=b[i];enduntil i=j;b[i]:=x;i:=i+l;j:=j-l;if s<j then quicksort (b,s,j);if i<t then quicksort (b, i,t);beginwriteinput data:');for i:=1 to n do read(a[ij);writein;quicksort (a, 1, n);writeC output data:');for i:=1 to n do write(a[i]:6);writein;end.返回4. 3希尔排序基本思想:将整个无序序列分割成若干小的子序列分别进行插入排序或冒泡排序。

相关文档
最新文档