一维数组练习题
- 格式:docx
- 大小:22.89 KB
- 文档页数:4
基本练习:(釆用文件输入输岀)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的猴子出圈,最后剩下來的就是大王。
一维数组练习题题目一:数组元素反转描述:给定一个整数数组,将数组中的元素反转并输出。
要求: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】输入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个数的和,输出这个和。
一维数组习题一、选择题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数组元素的错误引用是()。
noi寒假刷题之旅_1.6编程基础之⼀维数组(15题)⼜回来了,先总结⼀下前两天⼲什么去了:装了⼀下官⽅版的kali2.0和⼀个完整版的kali2.0,然后更新了⼀下我的⽼版本的kali内核。
为什么呢?还不是为了安装W3af,太难了,装了3天都没装上,本来已经放弃了就打算直接⽤console界⾯,谁知道⼀start它⼜抱了⼀堆错,真的要吐⾎了。
W3AF果断放弃,岂可休。
但是装机的过程倒是越发熟练了,发现官⽅版的kali图形界⾯不是很兼容,⽼是有闪屏,⽽且收藏夹⾥的⽹站也是打不开的(虽然这些⽹站在⽕狐书签栏⾥都有),后来也摸了⼏个⽐较感兴趣的软件,新版的软件库更加丰富了,好多软件还是要FQ,好累。
⽽且发现有的还是不能直接⽤,要装好多的依赖。
⼀些⽼软件也不见了要⾃⼰安装,特别是OWASP,还好安装倒是挺简单的。
试了⼀下kali-undercover功能,感觉它不是很稳定,其中有⼀次undercover后菜单栏都没有了。
学了⼀下华为云的使⽤,考虑到我有⼀个弹性服务器ECS,打算配置⼀个Linux的⼩博客,装完了apache2,php,mysql,word press,谁知道⼀打开界⾯,提⽰word press不兼容php,吐⾎。
爬了两天回来写写代码散散⼼。
(15题)01:与指定数字相同的数的个数#include<iostream>using namespace std;int main(){int n;cin>>n;int num[102]={};for(int i=0;i<n;++i)cin>>num[i];int m,count=0;cin>>m;for(int i=0;i<n;++i){if(num[i]==m)++count;}cout<<count;return 0;}02:陶陶摘苹果#include<iostream>using namespace std;int main(){int num[102]={};for(int i=0;i<10;++i)cin>>num[i];int m,count=0;cin>>m;for(int i=0;i<10;++i){if(num[i]<=m+30)++count;}cout<<count;return 0;}03:计算书费#include<iostream>using namespace std;int main(){double temp,num[10]={28.9,32.7,45.6,78,35,86.2,27.8,43,56,65},sum=0;for(int i=0;i<10;++i){cin>>temp;sum+=temp*num[i];}printf("%.1f",sum);return 0;}04:数组逆序重放#include<iostream>using namespace std;int main(){int n,num[102]={};cin>>n;for(int i=0;i<n;++i){cin>>num[i];}cout<<num[n-1];for(int i=n-2;i>=0;--i){cout<<" "<<num[i];}return 0;}05:年龄与疾病#include<iostream>using namespace std;int main(){int n,temp;double num[4]={};cin>>n;for(int i=0;i<n;++i){cin>>temp;if(0<=temp&&temp<=18){num[0]++;}else if(temp<=35){num[1]++;}else if(temp<=60){num[2]++;}else{num[3]++;}}for(int i=0;i<4;++i){printf("%.2f%%\n",num[i]/n*100.0); }return 0;}06:校门外的树#include<iostream>using namespace std;int tree[10001];int main(){int L,M;cin>>L>>M;int a,b;for(int i=1;i<=M;++i){cin>>a>>b;// cout<<a<<","<<b<<endl;for(int j=a;j<=b;++j){tree[j]=1;// cout<<j<<endl;}}int count=0;for(int i=0;i<=L;++i){if(tree[i]==0){++count;// cout<<i<<endl;}}cout<<count;return 0;}07:有趣的跳跃#include<iostream>#include<cmath>#include <algorithm>using namespace std;int tree[10001];int main(){int n;int num[3001]={},temp[3001];cin>>n;cin>>temp[0];for(int i=1;i<n;++i){cin>>temp[i];num[i-1]=abs(temp[i]-temp[i-1]); }sort(num,num+n);int flag=1;for(int i=0;i<n-2;++i){if((num[i+1]-num[i])!=1){flag=0;break;}}if(flag){cout<<"Jolly";}else{cout<<"Not jolly";}return 0;}08:⽯头剪⼑布#include<iostream>#include<cmath>#include <algorithm>using namespace std;int tree[10001];bool Cmp(int a,int b){if(a==0&&b==2){return 1;}else if(a==2&&b==5){return 1;}else if(a==5&&b==0){return 1;}else{return 0;}}int main(){int n,na,nb;int ca=0,cb=0;int A[101]={},B[101]={};cin>>n>>na>>nb;for(int i=0;i<na;++i)cin>>A[i]; for(int i=0;i<nb;++i)cin>>B[i]; for(int i=0;i<n;++i){if(Cmp(A[i%na],B[i%nb])) ca++; if(Cmp(B[i%nb],A[i%na])) cb++; }if(ca>cb){cout<<"A";}else if(cb>ca){cout<<"B";}else{cout<<"draw";}return 0;}09:向量点积计算#include<iostream>#include<cmath>#include <algorithm>using namespace std;int main(){int n,sum=0;int a[1001]={},b[1001]={};cin>>n;for(int i=0;i<n;++i)cin>>a[i];for(int i=0;i<n;++i)cin>>b[i];for(int i=0;i<n;++i){sum+=a[i]*b[i];}cout<<sum;return 0;}10:⼤整数加法#include<iostream>#include<cmath>#include<algorithm>#include<string>using namespace std;int res[20000];int ada[20000],adb[20000];int to_Int(char a){return a-'0';}int main(){string a,b;int index=0;cin>>a>>b;if(a=="0"&&b=="0"){cout<<0;return 0;}int start=max(a.length(),b.length());for(int i=a.length()-1,j=0;i>=0;--i,++j)ada[j]=to_Int(a[i]); for(int i=b.length()-1,j=0;i>=0;--i,++j)adb[j]=to_Int(b[i]); for(int i=0;i<start;++i,++index){res[index]=res[index]+ada[i]+adb[i];if(res[index]>9){res[index]-=10;res[index+1]++;}}int i;for(i=index;res[i]==0;--i);for(;i>=0;--i)cout<<res[i];return 0;}11:⼤整数减法#include<iostream>#include<cmath>#include<algorithm>#include<string>using namespace std;int res[20000];int ada[20000],adb[20000];int to_Int(char a){return a-'0';}int main(){string a,b;int index=0;cin>>a>>b;int start=max(a.length(),b.length());for(int i=a.length()-1,j=0;i>=0;--i,++j)ada[j]=to_Int(a[i]); for(int i=b.length()-1,j=0;i>=0;--i,++j)adb[j]=to_Int(b[i]); for(int i=0;i<start;++i,++index){res[index]=ada[i]-adb[i];if(res[index]<0){int indexa=i;res[index]+=10;indexa++;ada[indexa]--;while(ada[indexa]<0){ada[indexa]+=10;indexa++;ada[indexa]--;}}// cout<<">>"<<res[index]<<endl;}int i,flag=1;for(i=index;res[i]==0;--i);for(;i>=0;--i){cout<<res[i];flag=0;}if(i<0&&flag)cout<<0;return 0;}12:计算2的N次⽅#include<iostream>#include<cmath>using namespace std;int main(){int n;cin>>n;printf("%.0lf",pow(2,n));return 0;}13:⼤整数的因⼦#include<algorithm>using namespace std;int main(){string c;int index=0,flag=0;cin>>c;for(int i=2;i<=9;++i){int index=0;for(int j=0;j<c.length();++j){index=(index*10+c[j]-'0')%i;}if(!index){flag=1;cout<<i<<" ";}}if(!flag){cout<<"none";}return 0;}14:求10000以内n的阶乘[这⾥是先把每⼀位算出来在计算进位] #include<iostream>#include<cmath>#include<algorithm>using namespace std;int ans[100000010];int main(){int n,j,add=0,index=1;cin>>n;ans[1]=1;for(int i=2;i<=n;++i){for(int j=1;j<=index;++j){ans[j]*=i;}for(int j=1;j<=index;++j){if(ans[j]>=10){ans[j+1]+=ans[j]/10;ans[j]%=10;}}while(ans[index+1]>0){index++;ans[index+1]=ans[index]/10;ans[index]%=10;}}for(int i=index;i>=1;--i) cout<<ans[i];return 0;}15:阶乘和#include<iostream>using namespace std;#define N 100000int a[N],n,tot=1,lena=1,ans[N];int main(){cin>>n;a[1]=1;ans[1]=1;for(int i=2;i<=n;i++){for(int j=1;j<=lena;j++)a[j]*=i;for(int j=1;j<=lena;j++){if(a[j]>9){a[j+1]+=a[j]/10;a[j]%=10;if(j==lena)lena++;}}tot=max(lena,tot);for(int j=1;j<=tot;j++)ans[j]+=a[j];for(int j=1;j<=tot;j++)if(ans[j]>9){if(tot==j)tot++;}}for(int i=tot;i>=1;i--)cout<<ans[i]; cout<<endl;} 。
一维数组练习一维数组练习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是西班牙人,能讲日语;最后一个是德国人,懂俄语。
一维数组经典例题
一维数组经典例题:
一、题目描述:
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。
假设每种输入只会对应一个答案。
但是,你不能重复利用这个数组中同样的元素。
二、解题思路:
1. 首先遍历数组nums,确定当前遍历到的整数a;
2. 计算需要搜索的数字b=target-a;
3. 从数组元素的下一个位置开始,遍历剩余的数组元素,如果发现存在数字b,则返回a和b的下标。
三、Java代码实现:
public int[] twoSum(int[] nums, int target) {
for (int i = 0; i < nums.length; i++) {
int a = nums[i];
int b = target - a;
for (int j = i + 1; j < nums.length; j++) {
if (nums[j] == b) {
return new int[]{i, j};
}
}
}
return null;
}。
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];三、程序分析题,写出下面各程序的输出结果。
4.1习题1、输入10个整数,然后将这10个整数逆序输出。
#include<stdio.h>int main(){int i;int a[10];printf("Input data: ");for(i=0;i<10;i++)scanf("%d",&a[i]);printf("Output data: ");for(i=9;i>=0;i--) //通过下标引用顺序实现逆序printf("%d ",a[i]);return 0;}2、输入一个整数m,然后输入m个整数,存放在数组a中;再输入一个整数n,然后输入n个整数,存放在数组b中。
找出a和b两数组的非共有元素,存放在数组c中并输出。
(m和n的值不超过20)#include<stdio.h>int main(){int a[20], b[20], c[20];//假定元素值不超过20int m, n, i, j, k=0;scanf("%d", &m);for(i=0; i<m; i++)scanf("%d", &a[i]);scanf("%d", &n);for(i=0; i<n; i++)scanf("%d", &b[i]);for(i=0; i<m; i++)//找出数组a中不是共同元素的值{for(j=0; j<n; j++){if(a[i]==b[j])break;}if(j>=n)//不是共同元素{c[k]=a[i];k++;//为存放下一个元素做准备}}for(i=0; i<n; i++)//找出数组b中不是共同元素的值{for(j=0; j<m; j++){if(b[i]==a[j])break;}if(j>=m){c[k]=b[i];k++;}}for(i=0; i<k; i++)printf(" %d", c[i]);printf(“\n”);return 0;}3、输入N个整数(N定义为常量),将最小值与第一个数交换,最大值与最后一个数交换。
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.以下定义语句错误的是()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在内存中所占的字节数是()。
1.以下关于数组的描述正确的是( )A. 数组的大小是固定的,但可以有不同的类型的数组元素B. 数组的大小是可变的,但所有数组元素的类型必须相同C. 数组的大小是固定的,所有数组元素的类型必须相同D. 数组的大小是可变的,可以有不同的类型的数组元素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.在C语言中,引用数组元素时,其数组下标的数据类型允许是( )A. 整型常量B. 整型表达式C. 整型常量或整型表达式D. 任何类型的表达式4.以下对一维数组m进行正确初始化的是( )A. int m[10]=(0,0,0,0) ;B. int m[10]={ };C. int m[ ]={0};D. int m[10]={10*2}; 5.若有定义:int bb[ 8];。
则以下表达式中不能代表数组元素bb[1]的地址的是( )A. &bb[0]+1B. &bb[1]C. &bb[0]++D. bb+16.假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是( )A. 3B. 6C. 10D. 207.若有以下说明:int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};charc='a',d,g;则数值为4的表达式是( )A. a[g-c]B. a[4]C. a['d'-'c']D. a['d'-c]8.以下程序段给数组所有的元素输入数据,请选择正确答案填入( ) main(){ int a[10],i=0;while(i<10) scanf("%d",________ );┇}A. a+(i++)B. &a[i+1]C. a+iD. &a[++i]9.执行下面的程序段后,变量k中的值为( )int k=3, s[2];s[0]=k; k=s[1]*10;A. 不定值B. 33C. 30D. 1010.以下程序的输出结果是( )main(){ int i, a[10];for(i=9;i>=0;i--) a[i]=10-i;printf("%d%d%d",a[2],a[5],a[8]); }A. 258B. 741C. 852D. 369main(){ int n[5]={0,0,0},i,k=2;for(i=0;i<k;i++) n[i]=n[i]+1;printf("%d\n",n[k]); }A. 不确定的值B. 2C. 1D. 012.以下程序运行后,输出结果是( )main(){ int y=18,i=0,j,a[8];do{ a[i]=y%2; i++; y=y/2;}while(y>=1);for(j=i-1;j>=0;j--) printf("%d",a[j]);printf("\n"); }A. 10000B. 10010C. 00110D. 1010013.以下程序运行后,输出结果是( )main(){ int a[10], a1[ ]={1,3,6,9,10}, a2[ ]={2,4,7,8,15},i=0,j=0,k;for(k=0;k<4;k++)if(a1[i]<a2[j]) a[k]=a1[i++];else a[k]=a2[j++];for(k=0;k<4;k++) printf("%d",a[k]); }A. 1234B. 1324C. 2413D. 4321main(){ int i,k,a[10],p[3];k=5;for (i=0;i<10;i++) a[i]=i;for (i=0;i<3;i++) p[i]=a[i*(i+1)];for (i=0;i<3;i++) k+=p[i]*2;printf("%d\n",k);}A. 20B. 21C. 22D. 23 15.以下程序运行后输出结果是( )main( ){ int n[3],i,j,k;for(i=0;i<3;i++)n[i]=0;k=2;for (i=0;i<k;i++)for (j=0;j<k;j++)n[j]=n[i]+1;printf("%d\n",n[1]); }A. 2B. 1C. 0D. 316. 下列程序的主要功能是输入10个整数存入数组a,再输入一个整数x,在数组a中查找x。
维数组练习题1 、以下对一维数组 a 进行正确初始化的是 ____________
A) int a[10]=(0,0,0,0,0);
C) int a[ ]={0}; B) int a[10]={ };
D) int
a[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) 33
C) 30 D) 10
4 、下列程序执行后的输出结果是
main()
{int a,b[5];
a=0; b[0]=3;
printf("%d,%d\n",b[0],b[1] );
A) 3,0
C) 0,3 }
B) 3 0
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 C) 21 和 30 B) 20 和 31 D) 21 和 31
6、以下程序输出 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=i
7 、以下程序的输出结果是 ________ 。
main( )
{ int i,p=0,a[10]={1,5,9,0,-3,8,7,0,1,2}; for(i=1;i<10;i++)
if(a[i]<a[p]) p=i; printf("%d,%d\n",a[p],p);
}
A) -3,4 B) 0,1
C) 9,2 D) 2,9
8 、有如下说明 :
int a[10]={0,1,2,3,4,5,6,7,8,9}; 则数值不为 9 的表达式是 。
A) a[10-1] B) a[8]
C) a[9]-0 D) a[9]-a[0]
9 、有如下程序
main()
{ int n[5]={0,0,0},i,k=3; for(i=0;i<k;i++) n[i]=i+1; printf("%d\n",n[k]); } 该程序的输出结果是 ________ 。
A) 不确定的值 B) 4
C) 2 D) 0
10 、以下程序的输出结果是 _________ 。
main()
{ int i,x[9]={9,8,7,6,5,4,3,2,1}; for(i=0;i<4;i+=2) printf("%d ",x[i]); }
A) 5 2 B) 5 1
C) 5 3 D) 9 7
11 、以下程序的功能是 : 从键盘上输入若干个学生的成绩 , 统计计算出平均成绩 成绩 ,当输入负数时结束。
划线处应分 别填入 。
main()
{ float x[1000],sum=0.0,ave,a; int n=0,i;
printf("Enter mark:\n"); scanf("%f",&a);
while(a>=0.0 &&n<1000)
{ sum+= _______; x[n]=a;
n++;
scanf("%f",&a)
; }
ave= _________ ;
printf("Output :\n");
printf("ave=%f\n",ave);
for(i=0;i<n;i++)
if(x[i]<ave)
printf("%f\t",x[i]);
}
A) a 和 sum/n C) a 和 sum/i B) x[n] 和 sum/n D) a 和 sum/1000
12 、下面程序的输出结果是_________ 。
main()
{ int a[]={1,8,2,8,3,8,4,8,5,8};
printf("%d,%d\n",a[4]+3,a[4+3]);
}
A) 6,6 B)8,8 C) 6,8 D)8,6
13 、如有定义语句 int a[]={1,8,2,8,3,8,4,8,5,8}; 则数组 a 的大小是__________ 。
A) 10 B) 11 C) 8 D) 不定
14 、下面程序的输出是_________ 。
main()
{int a[10]={1,2,3,4,5,6,7,8,9,10};
printf("%d\n",a[a[1]*a[2]]);
}
A) 3 B) 4
C) 7 D) 2
15 、以下程序输出的结果是_________
#include <stdio.h>
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;
printf("s=%d\n",s);
}
A) s=12345
C) s=54321 j=j*10; }
B) s=1 2 3 4 5 D) s=5 4 3 2 1
16 、以下程序输出的结果是_________ #include <stdio.h>
B) 1 2 3 4 5 6 D) 1 5 3 4 2 6 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 5 C) s=54321 D) s=5 4 3 2 1
17 、以下程序运行 ,如果从键盘上输入 4<回车 >,则输出结果是 ____________ #include <stdio.h>main( )
{int a[20]={1,2,3,4,5,-1,-2,-3,-4,-5,1,2,3,4,5,-1,-2,-3,-4,-5}; int i,m,n,f=0;
scanf("%d",&n);
for(i=0;i<20;i++)
if(a[i]==n) { f=1;m=i; }
if(f!=0) printf("%d,%d\n", n,m+1);
else printf(" %d not found !\n",n);
}
A) 4,4
B) 4,14 C) 4,5 D) 4,15
18 、下面程序运行后,输出结果是 __________
#include <stdio.h>main( )
{ int a[10]={1,2,3,4,5,6},i,j; for(i=0;i++<3;)
{ j=a[i];a[i]=a[5-i];a[5-i]=j;}
for(i=0;i<6;i++) printf("%d ",a[i]); }
A) 6 5 4 3 2 1
C) 1 5 4 3 2 6。