1.6编程基础之一维数组(10题)
一维数组练习.doc

基本练习:(釆用文件输入输岀)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】输入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.6编程基础之一维数组(15)

1.6编程基础之一维数组01:与指定数字相同的数的个数总时间限制:1000ms内存限制:65536kB描述输出一个整数序列中与指定数字相同的数的个数。
输入输入包含三行:第一行为N,表示整数序列的长度(N <= 100);第二行为N个整数,整数之间以一个空格分开;第三行包含一个整数,为指定的数字m。
输出输出为N个数中与m相同的数的个数。
样例输入样例输出02:陶陶摘苹果总时间限制:1000ms内存限制:65536kB描述陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。
苹果成熟的时候,陶陶就会跑去摘苹果。
陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。
现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。
假设她碰到苹果,苹果就会掉下来。
输入包括两行数据。
第一行包含10个100到200之间(包括100和200)的整数(以厘米为单位)分别表示10个苹果到地面的高度,两个相邻的整数之间用一个空格隔开。
第二行只包括一个100到120之间(包含100和120)的整数(以厘米为单位),表示陶陶把手伸直的时候能够达到的最大高度。
输出包括一行,这一行只包含一个整数,表示陶陶能够摘到的苹果的数目。
样例输入样例输出来源NOIP2005复赛普及组第一题03:计算书费总时间限制:1000ms内存限制:65536kB描述下面是一个图书的单价表:计算概论28.9 元/本数据结构与算法32.7 元/本数字逻辑45.6元/本C++程序设计教程78 元/本人工智能35 元/本计算机体系结构86.2 元/本编译原理27.8元/本操作系统43 元/本计算机网络56 元/本JAVA程序设计65 元/本给定每种图书购买的数量,编程计算应付的总费用。
输入输入一行,包含10个整数(大于等于0,小于等于100),分别表示购买的《计算概论》、《数据结构与算法》、《数字逻辑》、《C++程序设计教程》、《人工智能》、《计算机体系结构》、《编译原理》、《操作系统》、《计算机网络》、《JAVA程序设计》的数量(以本为单位)。
一维数组练习题

维数组练习题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 、以下程序的输出结果是 ________ 。
一维数组操作函数例题

例如,在数组中查找值为x的元素,算法描述如下:
函数:int Find,参数:( int a[ ], int n, int key )
1) 2) 3)
设扫描指示器变量 i (循环变量)。 令i指向数组起始位置:i =0 循环扫描每个数组元素(使i依次取每个下标),将 元素值与 key比较。 若下标为i的元素与key值相等,则退出循环;否则继 续(3)。 判断查找结果,若i>=n表示未找到;否则表示找到。 查找成功返回该元素下标值,否则查找失败返回-1。
一维数组操作函数例题
1. 2. 3. 4. 5. 6. 7. 得到数组中指定序号的元素 遍历数组中元素 查找与给定值相等的第一个元素 在末尾添加一个元素 在表头插入一个元素 在有序表中插入一个元素 对数组进行排序
1. 得到数组指定序号的元素 int GetElem( int a[ ], int n, int pos) { if (pos<0 || pos >=n) { //越界检查
a[n]=key; n ++;
}
//新元素赋值
//表长度增1
5. 在表头插入一个元素 在有序表中插入元素 item = 8
13 25 28 33 46 51 73 78 89 94
n=10
插入位置0
8 13 25 28 33 46 51 73 78 89 94 0 1 2 3 4 5 6 7 8 9 10 …
7. 对数组进行排序
void Sort (int a[ ], int n ){ //按非递减次序,插入排序 int i, j; int x; for(int i=1; i<n; i++) { //认为第0个元素已就绪 x=a[i]; //暂存当前处理的元素 for (j=i-1; j>=0; j--) //向前查找合适的插入位置 if(x<a[j]) a[j+1]=a[j]; //移动 else break; a[j+1] = x; //插入元素 }
一维数组习题

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]); }
NOIP第五章习题一答案

第 3 页 共 9 页
/* 4.数组逆序重【1.6 编程基础之一维数组 04】 将一个数组中的值按逆序重新存放。例如,原来的顺序为 8,6,5,4,1。要求改为 1,4,5,6,8。 输入: 输入为两行:第一行数组中元素的个数 n(1<n<100),第二行是 n 个整数,每两个整数 之间用空格分隔。 输出: 输出为一行:输出逆序后数组的整数,每两个整数之间用空格分隔。 样例输入: 5 86541 样例输出: 14568 */ #include "iostream" #include "iomanip" using namespace std; int main() { int count; int num[100]; cin>>count; for(int i=0;i<count;i++) { cin>>num[i]; } int n=count; int temp = count-1; if(count%2==0) count=count/2; else count=(count-1)/2; for(int i=0;i<count;i++) { int m; m=num[i]; num[i]=num[temp]; num[temp]=m; temp--; }
//
} /* 7.向量点积计算【1.6 编程基础之一维数组 07】 在线性代数、计算几何中,向量点积是一种十分重要的运算。给定两个 n 维向量 a=(a1,a2,...,an)和 b=(b1,b2,...,bn),求点积 a·b=a1b1+a2b2+...+anbn。 输入: 第一行是一个整数 n(1<=n<=1000)。 第二行包含 n 个整数 a1,a2,...,an。 第三行包含 n 个整数 b1,b2,...,bn。 相邻整数之间用单个空格隔开。每个整数的绝对值都不超过 1000。 输出: 一个整数,即两个向量的点积结果。 样例输入: 3 146 215
noi寒假刷题之旅_1.6编程基础之一维数组(15题)

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;} 。
上机实验六一维数组-答案

上机实验六一维数组班级学号姓名本次题目一共5题,必做4个,选做1个。
选做题可能有点难度,请尝试着做一下,能做出来说明目前你已经很强了!一.目的要求1.掌握一维数组的基本概念,定义和初始化方法;2.掌握一维数组的基本操作,如输入、输出、引用数组元素;3.掌握与数组有关的基本算法,如寻找最大/最小值、排序等。
二.实验内容【实验题1】程序改错:源程序用数组求Fi bona cci数列前20项,但在带标记的代码行存在错误。
源程序如下:#include<stdio.h>void main(){ int i, fib[20];fib[1]= fib[2]= 1; //错误1for(i=3; i<=20; i++) //错误2fib[i]= fib[i-1] +fib[i-2];for(i=1; i<=20; i++){ //错误3printf("%6d", fib[i]);if( (i+1)%5==0 ) printf("\n");}}数组的下标应该从几开始?标出的三个错误语句行,应分别改为?数组下标应该从0开始,错误1修改为:fib[0]= fib[1]= 1;错误2修改为:for(i=2; i<20; i++);错误3修改为:for(i=0; i<20; i++)未改正错误之前,程序运行结果是(只写最后一项)4181改正后,程序运行结果是(只写最后一项)6765【实验题2】程序填空:给定平面上10个点,求其中离原点最近的点。
源程序用一维数组x存放这10个点的x坐标,用一维数组y存放相应的y坐标,即第i个点的坐标为(x[i], y[i])。
用变量inde x记录最近点的下标。
程序中使用距离的平方做比较:x*x+y*y。
#include<stdio.h>void main(){int i, index; //index是离原点最近的点的下标doubled, min; //min是到原点的最近距离的平方doublex[]={1.1, 3.2, -2.5, 5.67, 3.42, -4.5, 2.54, 5.6, 0.97, 4.65};// 赋初值doubley[]={-6, 4.3, 4.5, 3.67, 2.42, 2.54, 5.6, -0.97, 4.65, -3.33};// :赋初值index= 0 ; min= x[0]*x[0]+y[0]*y[0]; //设第0个点为最近点for(i=1; i<10; i++){d= x[i]*x[i]+y[i]*y[i];if( d < min ){ //Line 11min=d;index=i;}}printf("%d: x=%.2f, y=%.2f \n", index, x[index] , y[index] ); //输出最近点的下标和坐标}程序运行结果为:数组x和y的长度应该各是多少?10,10如果将程序功能改为求10个点中离原点最远的点,语句行Line 11又应如何填写?i f( d>min ){ //Line 11【实验题3】程序填空:输入5个整数, 将这5个数按逆时针顺序转动一次后再输出,如输入1 2 3 4 5,逆时针转动一次后,输出2 3 4 5 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 将十进制数转换成二进制数,并按位存放到数组中。
一维数组

课堂练习:
输入10个学生的语文成绩,并求出
他们的总分。 题目分析:
1、确定成绩的数据类型。 2、成绩输入。 3、各个成绩相加求和 4、输出总分
课堂练习:
代码:
main() { float scores[10],sum=0; int i; for(i=0;i<10;i++) { scanf(“%f”,&scores[i]); sum= sum + scores[i]; } printf(“%f\n”,sum); }
数组与循环语句相结合
输出数组的每一个元素值:
printf("x[0]=%d ",x[0]); printf("x[1]=%d ",x[1]); printf("x[2]=%d ",x[2]); printf("x[3]=%d ",x[3]); printf("x[4]=%d ",x[4]); 可以替换为:for(i=0;i<5;i++) printf(“x[%d]=%d",i,x[i]);
一维数组的定义
定义方式:
类型说明符 数组名[常量表达式]; 例如: Int a[10]; double scores[50*2]; 常用类型说明符: 整型 int 浮点型 float 双浮点型double 字符型 char
“数组名”定义规则
遵循标识符的命名规则——
只能由字母、数字或下划线组成, 且不能以数字开头。
一维数组
定义和使用
复习过度
习题:输入10个整数,输出其中的正数。 main() { int a,i,n=1; for(i=0;i<10;i++) { printf("%d) ",n); scanf("%d",&a); if(a>0) printf(" Yes %4d\n",a); n++; } getch(); }
一维数组练习

一维数组练习一维数组练习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];三、程序分析题,写出下面各程序的输出结果。
NOIP第五章习题一答案

输出为一行:输出逆序后数组的整数,每两个整数之间用空格分隔。样例输入:
5
8 6 5 4 1
样例输出:
1 4 5 6 8
*/
#include "iostream" #include "iomanip" using namespace std; int main()
{
int count;
int num[100]; cin>>count;
《人工智能》、《计算机体系结构》、《编译原理》、《操作系统》、《计算机网络》、
《JAVA程序设计》的数量(以本为单位)。每两个整数用一个空格分开。输出:
输出一行,包含一个浮点数f,表示应付的总费用。精确到小数点后一位。样例输入:
1 5 8 10 5 1 1 2 3 4
样例输出:
2140.2
*/
#include "iostream" #include "iomanip" using namespace std; int main( )
/*
1、与指定数字相同的数的个数【1.6编程基础之一维数组01】输出一个整数序列中与指定数字相同的数的个数。
输入:
输入包含三行:
第一行为N,表示整数序列的长度(N<=100);第二行为N个整数,整数之间以一个空格分开;第三行包含一个整数,为指定的数字m。
输出:
输出为N个数中与m相同的数的个数。样例输入:
{
}
}
/*
2.陶陶摘苹果【1.6编程基础之一维数组02】Noip2005普及组第1题
陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。
苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个30厘米高的板凳, 当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。
一维数组练习题

一维数组练习题一维数组练习题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、计算并输出给定数组(长度为9)中每相邻两个元素之平均值的平方根之和。
例如,给定数组中的9个元素依次为12.0、34.0、4.0、23.0、34.0、45.0、18.0、3.0、11.0,输出应为:s=35.951014。
2、统计各年龄段的人数。
N个年龄通过调用随机函数获得,并放在主函数的age数组中;要求函数把0至9岁年龄段的人数放在d[0]中,把10至19岁年龄段的人数放在d[1]中,把20至29岁年龄段的人数放在d[2]中,其余依此类推,把100岁(含100)以上年龄的人数都放在d[10]中。
结果在主函数中输出。
3、删去一维数组中所有相同的数,使之只剩一个。
数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。
例如,一维数组中的数据是:2 2 234 456 6 6 67 789 9 10 10 10。
删除后数组中的内容应该是:2 3 4 5 6 7 8 9 10。
4、移动一维数组中的内容;若数组中有n个整数,要求把下标从0到p(含p,p小于等于n-1)的数组元素平移到数组的最后。
例如,一维数组中的原始内容为: 1,2,3,4,5,6,7,8,9,10;p的值为3。
移动后,一维数组中的内容应为: 5,6,7,8,9,10,1,2,3,4。
5、将数组xx(有n个元素)的前k个元素(k<n)移到数组的尾部,变为后k个元素,但是数组的这两段(原前k个元素为一段、另外的n-k个元素为一段)中元素的顺序不得改变。
例如,若输入:7和 1 2 3 4 5 6 7,再输入:5,则输出应为:6 7 1 2 3 4 5。
6、求出1到m之内(含m)能被7或11整除的所有整数放在数组a中。
例如,若传送给m的值为50,则程序输出:7 11 14 21 22 28 33 35 42 44 497、m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人数作为函数值返回。
例如,当score数组中的数据为:10、20、30、40、50、60、70、80、90时,函数返回的人数应该是4,below中的数据应为:10、20、30、40。
一维数组 答案(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在内存中所占的字节数是()。
一维数组选择题

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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
01:与指定数字相同的数的个数
•
•提交
•统计
•提问
总时间限制:
1000ms
内存限制:
65536kB
描述
输出一个整数序列中与指定数字相同的数的个数。
输入
输入包含三行:
第一行为N,表示整数序列的长度(N <= 100);
第二行为N个整数,整数之间以一个空格分开;
第三行包含一个整数,为指定的数字m。
输出
输出为N个数中与m相同的数的个数。
02:陶陶摘苹果
•
•提交
•统计
•提问
总时间限制:
1000ms
内存限制:
65536kB
描述
陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。
苹果成熟的时
候,陶陶就会跑去摘苹果。
陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果
的时候,就会踩到板凳上再试试。
现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,
请帮陶陶算一下她能够摘到的苹果的数目。
假设她碰到苹果,苹果就会掉下来。
输入
包括两行数据。
第一行包含10个100到200之间(包括100和200)的整数
(以厘米为单位)分别表示10个苹果到地面的高度,两个相邻的整数之间用一个空
格隔开。
第二行只包括一个100到120之间(包含100和120)的整数(以厘米
为单位),表示陶陶把手伸直的时候能够达到的最大高度。
输出
包括一行,这一行只包含一个整数,表示陶陶能够摘到的苹果的数目。
03:计算书费
描述
下面是一个图书的单价表:
计算概论28.9 元/本
数据结构与算法32.7 元/本
数字逻辑45.6元/本
C++程序设计教程78 元/本
人工智能35 元/本
计算机体系结构86.2 元/本
编译原理27.8元/本
操作系统43 元/本
计算机网络56 元/本
JAVA程序设计65 元/本
给定每种图书购买的数量,编程计算应付的总费用。
输入
输入一行,包含10个整数(大于等于0,小于等于100),分别表示购买的《计算概
论》、《数据结构与算法》、《数字逻辑》、《C++程序设计教程》、《人工智
能》、《计算机体系结构》、《编译原理》、《操作系统》、《计算机网络》、
《JAVA程序设计》的数量(以本为单位)。
每两个整数用一个空格分开。
输出
输出一行,包含一个浮点数f,表示应付的总费用。
精确到小数点后一位。
来源
1677
04:数组逆序重放
•
•提交
•统计
•提问
总时间限制:
1000ms
内存限制:
65536kB
描述
将一个数组中的值按逆序重新存放。
例如,原来的顺序为8,6,5,4,1。
要求改为
1,4,5,6,8。
输入
输入为两行:第一行数组中元素的个数n(1<n<100),第二行是n个整数,每两
个整数之间用空格分隔。
输出
输出为一行:输出逆序后数组的整数,每两个整数之间用空格分隔。
来源
计算概论05
05:年龄与疾病
•
•提交
•统计
•提问
总时间限制:
1000ms
内存限制:
65536kB
描述
某医院想统计一下某项疾病的获得与否与年龄是否有关,需要对以前的诊断记录
进行整理,按照0-18、19-35、36-60、61以上(含61)四个年龄段统计的
患病人数占总患病人数的比例。
输入
共2行,第一行为过往病人的数目n(0 < n <= 100),第二行为每个病人患病时
的年龄。
输出
按照0-18、19-35、36-60、61以上(含61)四个年龄段输出该段患病人数占总
患病人数的比例,以百分比的形式输出,精确到小数点后两位。
每个年龄段占一
行,共四行。
06:校门外的树
描述
某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。
我
们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置;数
轴上的每个整数点,即0,1,2,……,L,都种有一棵树。
由于马路上有一些区域要用来建地铁。
这些区域用它们在数轴上的起始点和终止点
表示。
已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部
分。
现在要把这些区域中的树(包括区域端点处的两棵树)移走。
你的任务是计算
将这些树都移走后,马路上还有多少棵树。
输入
第一行有两个整数L(1 <= L <= 10000)和M(1 <= M <= 100),L代表
马路的长度,M代表区域的数目,L和M之间用一个空格隔开。
接下来的M行每行
包含两个不同的整数,用一个空格隔开,表示一个区域的起始点和终止点的坐标。
对于20%的数据,区域之间没有重合的部分;
对于其它的数据,区域之间有重合的情况。
输出
包括一行,这一行只包含一个整数,表示马路上剩余的树的数目。
来源
NOIP2005复赛普及组第二题
07:向量点积计算
•
•提交
•统计
•提问
总时间限制:
1000ms
内存限制:
65536kB
描述
在线性代数、计算几何中,向量点积是一种十分重要的运算。
给定两个n维向量a=(a1,a2,...,a n)和b=(b1,b2,...,b n),求点积
a·b=a1b1+a2b2+...+a n b n。
输入
第一行是一个整数n。
1 <= n <= 1000。
第二行包含n个整数a1,a2,...,an。
第三行包含n个整数b1,b2,...,bn。
相邻整数之间用单个空格隔开。
每个整数的绝对值都不超过1000。
输出
一个整数,即两个向量的点积结果。
08:大整数加法
•
•提交
•统计
•提问
总时间限制:
1000ms
内存限制:
65536kB
描述
求两个不超过200位的非负整数的和。
输入
有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。
输出
一行,即相加后的结果。
结果里不能有多余的前导0,即如果结果是342,那么就
不能输出为0342。
来源
程序设计实习2007
09:计算2的N次方
•
•提交
•统计
•提问
总时间限制:
1000ms
内存限制:
65536kB
描述
任意给定一个正整数N(N<=100),计算2的n次方的值。
输入
输入一个正整数N。
输出
输出2的N次方的值。
提示
高精度计算
10:阶乘和
•
•提交
•统计
•提问
总时间限制:
1000ms
内存限制:
65536kB
描述
用高精度计算出S=1!+2!+3!+…+n!(n≤50)
其中“!”表示阶乘,例如:5!=5*4*3*2*1。
输入正整数N,输出计算结果S。
输入
一个正整数N。
输出
计算结果S。
来源
NOIP1998复赛普及组第二题。