当前位置:文档之家› 一维数组上机练习

一维数组上机练习

一维数组上机练习
一维数组上机练习

基本练习:(采用文件输入输出)

1.输入一串小写字母(以"."为结束标志),统计出每个字母在该字符串中出现的次数(若某字母不出现,则不要输出) ,例:

输入:aaaabbbccc.

输出:a:4

b:3

c:3

规定:文件名:tongji.pas 输出文件:tongji.in输出文件tongji.out

程序:

var a:array['a'..'z'] of integer;

n:char;

begin

assign(input,’tongji,in’);reset(input);

assign(output,’tongji.out’);rewrite(output);

read(n);

while n<>'.' do

begin

inc(a[n]);

read(n);

end;

for n:='a' to 'z' do

if a[n]<>0 then writeln(n,':',a[n]);

close(input);close(output);

end.

2.输入一个不大于32767(integer)的正整数N,将它转换成一个二进制数,例如:

输入:100

输出:1100100

规定:文件名:erjinzhi.pas 输出文件:erjinzhi.in输出文件erjinzhi.out

程序:

var

a:array[1..16] of integer;

b,c,d,e:integer;

begin

assign(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 do

begin

inc(d);

a[d]:=b mod 2;

b:=b div 2;

end;

for e:=d downto 1 do write(a[e]);

writeln;

readln;

close(input);close(output);

end.

提高练习:(采用文件输入输出)

*3.输入一个由10个整数组成的序列,其中序列中任意连续三个整数都互不相同,求该序列中所有递增或递减子序列的个数,例如:

输入:1 10 8 5 9 3 2 6 7 4

输出:6

对应的递增或递减子序列为:

1 10

10 8 5

5 9

9 3 2

2 6 7

7 4

规定:文件名:geshu.pas 输出文件:geshu.in输出文件geshu.out

const n=10; {此程序输出序列数}

var a:array[1..n]of integer;

i,k,x:integer;

begin for i:=1 to n do

read(a[i]);

i:=2;

x:=1; {表示序列数}

if a[i-1]<=a[i] then k:=1 else k:=2;{k=1表示大于k=2表示小于}

while i

begin inc(i);

case k of

1: if a[i-1]>a[i] then begin k:=2;inc(x);end;

2: if a[i-1]

end;

end;

writeln(x);

end.

*4.输入N个数,将这N个数按从小到大的顺序显示出来;

规定:文件名:paixu.pas 输出文件:paixu.in输出文件paixu.out

var

a:array[1..100000000] of integer;

b,c,d,i,z:longint;

begin

assign(input,' paixu.in');reset(input);

assign(output,' paixu.out');rewrite(output);

readln(i); //读入输入个数

for i:=1 to i do read(a[i]); //循环读入,放入数组

for c:=1 to i do

begin

for b:=(c+1) to i do begin

if a[c]>a[b] then

begin

a[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:=1 to i do

write(a[z], ' ');

close(input);close(output);

end.

**5.猴子选大王:有N只猴子围成一圈,每只猴子各一个从1到N中的依次编号,打算从中选出一个大王;经过协商,决定出选大王的规则:从第一个开始循环报数,数到M的猴子出圈,最后剩下来的就是大王。要求:从键盘输入N、M,编程计算哪一个编号的猴子成为大王

样例:

输入:73

输出:4

输入:52

输出:3

待解:

输入:99915

输出:?

规定:文件名:houzi.pas 输出文件:houzi.in输出文件houzi.out

var n,m,i,j,k,l,t:longint;

a:array[0..100000] of longint;

f:array[0..100000] of boolean;

begin

readln(n,m);

for i:=1 to n do

begin a[i]:=i; f[i]:=true; end;

j:=0; k:=0;

while j<>n-1 do // j 为已经筛除的个数

begin

t:=0;

while t<>m do

begin //循环报数

if f[k] then inc(t); //t为现在报数的号数

l:=k;

if k<>n then inc(k) else k:=1;//检测编号是否大于总人数 end;

f[l]:=false;

inc(j);

end;

for i:=1 to n do

if f[i] then begin writeln(i); halt; end;

end.

排序

4.1 简单排序

1.选择排序

选择排序的基本思想是:

对待排序的记录序列进行n-1遍的处理,第1遍处理是将L[1..n]中最小者与L[1]交换位置,第2遍处理是将L[2..n]中最小者与L[2]交换位置,......,第i遍处理是将L[i..n]中最小者与L[i]交换位置。这样,经过i遍处理之后,前i个记录的位置就已经按从小到大的顺序排列好了。

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

程序如下:

program xzpx;

const n=7;

var a:array[1..n] of integer;

i,j,k,t:integer;

begin

write('Enter date:');

for i:= 1 to n do read(a[i]);

writeln;

for i:=1 to n-1 do

begin

k:=i;

for j:=i+1 to n do

if a[j]

if k<>i then

begin 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);

writeln;

end.

2.插入排序

插入排序的基本思想:经过i-1遍处理后,L[1..i-1]己排好序。第i遍处理仅将L[i]插入L[1..i-1]的适当位置p,原来p后的元素一一向右移动一个位置,使得L[1..i]又是排好序的序列。

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

程序1:

program crpx;

const n=7;

var a:array[1..n] of integer;

i,j,k,t:integer;

begin

write('Enter date:');

for i:= 1 to n do read(a[i]);

writeln;

for i:=2 to n do

begin

k:=a[i];j:=i-1;

while (k0) do

begin a[j+1]:=a[j];j:=j-1 end;

a[j+1]:=k;

end;

write('output data:');

for i:= 1 to n do write(a[i]:6);

writeln;

end.

3.冒泡排序

冒泡排序又称交换排序其基本思想是:对待排序的记录的关键字进行两两比较,如发现两个记录是反序的,则进行交换,直到无反序的记录为止。

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

程序1:

program mppx;

const n=7;

var a:array[1..n] of integer;

i,j,k,t:integer;

begin

write('Enter date:');

for i:= 1 to n do read(a[i]);

for i:=1 to n -1 do

for j:=n downto i+1 do

if a[j-1]

begin t:=a[j-1];a[j-1]:=a[j];a[j]:=t end;

write('output data:');

for i:= 1 to n do write(a[i]:6);

writeln;

end.

程序2:

program mppx;

const n=7;

var a:array[1..n] of integer;

i,j,k,t:integer;

bool:boolean;

begin

write('Enter date:');

for i:= 1 to n do read(a[i]);

i:=1;bool:=true;

while (i

begin

bool:=false;

for j:=n downto i+1 do

if a[j-1]

begin t:=a[j-1];a[j-1]:=a[j];a[j]:=t;bool:=true end;

i:=i+1;

end;

write('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;

begin

write('Enter date:');

for i:= 1 to n do read(a[i]);

writeln;

k:=n;

while k>0 do

begin

j:=k-1;k:=0;

for i:=1 to j do

if a[i]>a[i+1] then

begin t:=a[i];a[i]:=a[i+1];a[i+1]:=t;k:=i;end;

end;

write('output data:');

for i:= 1 to n do write(a[i]:6);

writeln;

end.

返回

4.2快速排序

快速排序的思想是:先从数据序列中选一个元素,并将序列中所有比该元素小的元素都放到它的右边或左边,再对左右两边分别用同样的方法处之直到每一个待处理的序列的长度为1, 处理结束.

例:输入一组数据小到大排序.

程序1:

program kspv;

const n=7;

type

arr=array[1..n] of integer;

var

a:arr;

i:integer;

procedure quicksort(var b:arr; s,t:integer);

var i,j,x,t1:integer;

begin

i:=s;j:=t;x:=b[i];

repeat

while (b[j]>=x) and (j>i) do j:=j-1;

if j>i then begin t1:=b[i]; b[i]:=b[j];b[j]:=t1;end;

while (b[i]<=x) and (i

if i

b[i]:=x;

i:=i+1;j:=j-1;

if s

if i

end;

begin

write('input data:');

for i:=1 to n do read(a[i]);

writeln;

quicksort(a,1,n);

write('output data:');

for i:=1 to n do write(a[i]:6);

writeln;

end.

程序2:

program kspv;

const n=7;

type

arr=array[1..n] of integer;

var

a:arr;

i:integer;

procedure quicksort(var b:arr; s,t:integer);

var i,j,x:integer;

begin

i:=s;j:=t;x:=b[i];

repeat

while (b[j]>=x) and (j>i) do j:=j-1;

if j>i then begin b[i]:=b[j];i:=i+1;end;

while (b[i]<=x) and (i

if i

until i=j;

b[i]:=x;

i:=i+1;j:=j-1;

if s

if i

end;

begin

write('input data:');

for i:=1 to n do read(a[i]);

writeln;

quicksort(a,1,n);

write('output data:');

for i:=1 to n do write(a[i]:6);

writeln;

end.

返回

4.3希尔排序

基本思想:将整个无序序列分割成若干小的子序列分别进行插入排序或冒泡排序。

序列分割方法:将相隔某个增量h的元素构成一个子序列。在排序过程中,逐次减小这个增量,最后当h减到1时,进行一次插入排序或冒泡排序,排序就完成。增量序列一般采用:d1=n div 2 ,d i=d i-1 div 2 ;i=2,3,4.....其中n为待排序序列的长度。

程序1:(子序列是插入排序)

program xepx;

const n=7;

type

arr=array[1..n] of integer;

var

a:arr;

i,j,t,d:integer;

bool:boolean;

begin

write('input data:');

for i:=1 to n do read(a[i]);

writeln;

d:=n;

while d>1 do

begin

d:=d div 2;

for j:=d+1 to n do

begin

t:=a[j];i:=j-d;

while (i>0) and (a[i]>t) do

begin a[i+d]:=a[i];i:=i-d;end;

a[i+d]:=t;

end;

end;

write('output data:');

for i:=1 to n do write(a[i]:6);

writeln;

end.

程序2:(子序列是冒泡排序)

program xepx;

const n=7;

type

arr=array[1..n] of integer;

var

a:arr;

i,temp,d:integer;

bool:boolean;

begin

write('input data:');

for i:=1 to n do read(a[i]);

writeln;

d:=n

while d>1 do

begin

d:=d div 2;

repeat

bool:=true;

for i:=1 to n-d do

if a[i]>a[i+d] then

begin temp:=a[i];a[i]:=a[i+d];a[i+d]:=temp; bool:=false end;

until bool;

end;

write('output data:');

for i:=1 to n do write(a[i]:6);

writeln;

end.

返回

4.4 堆排序与二叉树排序

1.堆排序

堆:设有数据元素的集合(R1,R2,R3,...Rn)它们是一棵顺序二叉树的结点且有

Ri<=R2i 和Ri<=R2i+1(或>=)

堆的性质:堆的根结点上的元素是堆中的最小元素,且堆的每一条路径上的元素都是有序的。堆排序的思想是:

1)建初始堆(将结点[n/2],[ n/2]-1,...3,2,1分别调成堆)

2)当未排序完时

输出堆顶元素,删除堆顶元素,将剩余的元素重新建堆。

程序如下:

program duipx;

const n=8;

type arr=array[1..n] of integer;

var a:arr;i:integer;

procedure sift(var a:arr;l,m:integer);

var i,j, t:integer;

begin

i:=l;j:=2*i;t:=a[i];

while j<=m do

begin

if (ja[j+1]) then j:=j+1;

if t>a[j] then

begin a[i]:=a[j];i:=j;j:=2*i; end

else exit;

a[i]:=t;

end;

end;

begin

for i:=1 to n do read(a[i]);

for i:=(n div 2) downto 1 do

sift(a,i,n);

for i:=n downto 2 do

begin

write(a[1]:4);

a[1]:=a[i];

sift(a,1,i-1);

end;

writeln(a[1]:4);

end.

2.二叉树排序

排序二叉树:每一个参加排列的数据对应二叉树的一个结点,且任一结点如果有左(右)子树,则左(右)子树各结点的数据必须小(大)于该结点的数据。中序遍历排序二叉树即得排序结果。程序如下:

program pxtree;

const

a:array[1..8] of integer=(10,18,3,8,12,2,7,3);

type point=^nod;

nod=record

w:integer;

right,left:point ;

end;

var root,first:point;k:boolean;i:integer;

procedure hyt(d:integer;var p:point);

begin

if p=nil then

begin

new(p);

with p^ do begin w:=d;right:=nil;left:=nil end;

if k then begin root:=p; k:=false end;

end

else with p^ do if d>=w then hyt(d,right) else hyt(d,left);

end;

procedure hyt1(p:point);

begin

with p^ do

begin

if left<>nil then hyt1(left);

write(w:4);

if right<>nil then hyt1(right);

end

end;

begin

first:=nil;k:=true;

for i:=1 to 8 do hyt(a[i],first);

hyt1(root);writeln;

end.

返回

4.5 归并排序

归并就是将多个有序的数列合成一个有序的数列。将两个有序序列合并为一个有序序列叫二路归并(merge).归并排序就是n长度为1的子序列,两两归并最后变为有序的序列。

1.二路归并

例1:将有序表L1=(1,5,7),L2=(2,3,4,6,8,9,10)合并一个有序表 L.

program gb;

const m=3;n=7;

type arrl1=array[1..m] of integer;

arrl2=array[1..n] of integer;

arrl=array[1..m+n] of integer;

var a:arrl1;

b:arrl2;

c:arrl;

i,j,k,r:integer;

begin

write('Enter l1(sorted):');

for i:=1 to m do read(a[i]);

write('Enter l2(sorted):');

for i:=1 to n do read(b[i]);

i:=1;j:=1;k:=0;

while (i<=m) and (j<=n) do

begin

k:=k+1;

if a[i]<=b[j] then begin c[k]:=a[i];i:=i+1; end

else begin c[k]:=b[j];j:=j+1;end; end;

if i<=m then for r:=i to m do c[m+r]:=a[r];

if j<=n then for r:=j to n do c[n+r]:=b[r];

writeln('Output data:');

for i:=1 to m+n do write(c[i]:5);

writeln;

end.

2.归并排序

program gbpx;

const maxn=7;

type arr=array[1..maxn] of integer;

var a,b,c:arr;

i:integer;

procedure merge(r:arr;l,m,n:integer;var r2:arr);

var i,j,k,p:integer;

begin

i:=l;j:=m+1;k:=l-1;

while (i<=m)and (j<=n) do

begin

k:=k+1;

if r[i]<=r[j] then begin r2[k]:=r[i];i:=i+1 end

else begin r2[k]:=r[j];j:=j+1 end end;

if i<=m then

for p:=i to m do begin k:=k+1;r2[k]:=r[p] end;

if j<=n then

for p:=j to n do begin k:=k+1;r2[k]:=r[p] end;

end;

procedure mergesort( var r,r1:arr;s,t:integer);

var k:integer; c:arr;

begin

if s=t then r1[s]:=r[s] else

begin

k:=(s+t) div 2;

mergesort(r,c,s,k);

mergesort(r,c,k+1,t);

merge(c,s,k,t,r1)

end;

end;

begin

write('Enter data:');

for i:= 1 to maxn do

read(a[i]);

mergesort(a,b,1,maxn);

for i:=1 to maxn do

write(b[i]:9);

writeln;

end.

返回

4.6 线形排序

以上我们讨论的算法均是基于比较的排序算法,在排序算法中有基于数字本身的算法:计数、桶、基数排序。

1.计数排序

基本思想是对于序列中的每一元素x,确定序列中小于x的元素的个数。

例:n个整数序列且每个值在[1,m],排序之。

program jspx;

const m=6;n=8;

var i,j:integer;

a,b:array[1..n] of integer;

c:array[1..m] of integer;

begin

writeln('Enter data:');

for i:=1 to n do read(a[i]);

for i:=1 to m do c[i]:=0;

for i:=1 to n do c[a[i]]:=c[a[i]]+1;

for i:=2 to m do c[i]:=c[i]+c[i-1];

for i:=n downto 1 do

begin

b[c[a[i]]]:=a[i];

c[a[i]]:=c[a[i]]-1;

end;

writeln('Sorted data:');

for i:= 1 to n do

write(b[i]:6);

end.

2.桶排序

桶排序的思想是若待排序的记录的关键字在一个明显有限范围内(整型)时,可设计有限个有序桶,每个桶装入一个值,顺序输出各桶的值,将得到有序的序列。

例:输入n个0到100之间的整数,由小到大排序输出。

program tpx;

const n=7;

var b:array[0..100] of integer;

k:0..100;

i:integer;

begin

write('Enter date:(0-100)');

for i:=0 to 100 do b[i]:=0;

for i:= 1 to n do

begin

read(k);

b[k]:=b[k]+1;

end;

writeln('Output data:');

for i:=0 to 100 do

while b[i]>0 do begin write(i:6);b[i]:=b[i]-1 end;

writeln;

end.

3.基数排序

基本思想是对n个元素依次按k,k-1,...1位上的数字进行桶排序。program jspx;

const n=8;

type link=^node;

node=record

data:integer;

next:link;

end;

var i,j,l,m,k:integer;

a:array[1..n] of integer;

s:string;

q,head:array[0..9] of link;

p,p1:link;

begin

writeln('Enter data:');

for i:=1 to n do read(a[i]);

for i:=5 downto 1 do

begin

for j:=0 to 9 do

begin

new(head[j]);

head[j]^.next:=nil;

q[j]:=head[j]

end;

for j:=1 to n do

begin

str(a[j],s);

for k:=1 to 5-length(s) do

s:='0'+ s;

m:=ord(s[i])-48;

new(p);

p^.data:=a[j];

p^.next:=nil;

q[m]^.next:=p;

q[m]:=p;

end;

l:=0;

for j:=0 to 9 do

begin

p:=head[j];

while p^.next<>nil do

begin

l:=l+1;p1:=p;p:=p^.next;dispose(p1);a[l]:=p^.data;

end;

end;

end;

writeln('Sorted data:');

for i:= 1 to n do

write(a[i]:6);

end.

4.7各种排序算法的比较

1.稳定性比较

插入排序、冒泡排序、二叉树排序、二路归并排序及其他线形排序是稳定的

选择排序、希尔排序、快速排序、堆排序是不稳定的

2.时间复杂性比较

插入排序、冒泡排序、选择排序的时间复杂性为O(n2)

其它非线形排序的时间复杂性为O(nlog2n)

线形排序的时间复杂性为O(n);

3.辅助空间的比较

线形排序、二路归并排序的辅助空间为O(n),其它排序的辅助空间为O(1);

4.其它比较

插入、冒泡排序的速度较慢,但参加排序的序列局部或整体有序时,这种排序能达到较快的速度。反而在这种情况下,快速排序反而慢了。

当n较小时,对稳定性不作要求时宜用选择排序,对稳定性有要求时宜用插入或冒泡排序。

若待排序的记录的关键字在一个明显有限范围内时,且空间允许是用桶排序。

当n较大时,关键字元素比较随机,对稳定性没要求宜用快速排序。

当n较大时,关键字元素可能出现本身是有序的,对稳定性有要求时,空间允许的情况下。

宜用归并排序。

当n较大时,关键字元素可能出现本身是有序的,对稳定性没有要求时宜用堆排序。

题组训练一

水坪镇中心学校初三物理2018年中考复习题组训练(一) 声光训练 一、声学题:(中考考2分) 1、【2013年 十堰市中考】控制噪声污染应从防止噪声产生、阻断噪声传播和防止噪声进 入人耳三个方面着手,下列事例中属于阻断噪声传播的是 A .中考期间考场周边工地停止施工 B .飞机场附近居民采用双层真空窗 C .工人工作时戴防噪声耳罩 D .汽车驶入市区禁止鸣喇叭 2、【2014年 十堰市中考】为使教室内的学生免受环境噪声的干扰,下列哪种方法是最合理的?( ) A 、老师讲话声音大一些 B 、每个学生都戴一个防噪声的耳罩 C 、教室内安装噪声监测装置 D 、在教室周围植树 3、【2015年 十堰市中考】移动电话(手机)已成为人们常用的通讯工具,它传递声音信 息是通过( ) A 、超声波传送 B 、次声波传送 C 、电磁波传送 D 、电流传送 4、【2016年 十堰市中考】中考进入考场的铃声响了,考生都自觉地走进考场,说明声音可以传递 ,小明和小华肩走向考场,以小华为参照物,小明是 的.交警部门在考场附近路段禁止汽车鸣笛,从控制噪声的角度分析,这是从 处减弱噪声的. 5、【2017年 十堰市中考】高建公路ETC 电子收费系统采用的是一种短程无线通信方式。它通过车载IC 卡中感应天线发射的 (选填“超声波”或“电磁波”)来收录信息。小明乘坐的汽车在高速行驶中,他听到车窗缝隙处风的呼啸声,这是全气快速通过车窗缝隙 时发生 产生的。他看到小区街口安装了噪声监测装置,该装置显示了噪声的 (选填“音调”、“响度”或“音色)。 二、光学题(中考考6分) 1、【2013年 十堰市中考】小明利用如图所示 的装置对眼睛的成像原理进行探究,凸透镜的 焦距f =10cm 。 (1)实验前,必须将烛焰、凸透镜、光屏三者的中心调整到 上。 (2)图中的凸透镜相当于眼睛的晶状体,光屏 相当于眼睛的 。此时应将光屏向 移动,光屏上才可接收到一个清 晰的倒立、缩小的实像。 (3)若进一步探究远视眼的成因,小明应更换一个焦距 (选填“更大”或“更小”)的凸透镜进行对比实验分析。 (4)实验完毕,小明想继续探究平面镜成像的规律,他应将光具座上的凸透镜换成 ,光屏换成 。 2、【2014年 十堰市中考】小芳在探究凸透镜成像规律的实验中,将焦距为20cm 的透镜甲 放在距发光体50cm 处,移动光屏,可以得到清晰的倒立、__________的实像。接下来 她改用焦距为10cm 的透镜乙继续实验,不改变发光体和凸透镜的位置,光屏应该向_______(选填“靠近”或“远离”)凸透镜的方向移动,光屏上才能成清晰的像。小芳 将近视眼镜片放在发光体和凸透镜之间,光屏上的像又变模糊了,她将光屏远离透镜,又在光屏上得到了发光体清晰的像,这说明近视眼镜对光线有____________作用。 3、【2015年 十堰市中考】小明用焦距为10cm 的凸透镜探究凸透镜成像的规律,他将烛焰 放在距凸透镜15cm 的位置,调节光屏位置,可以得到一个清晰的倒立、 (选填“等大”、“放大”或“缩小”)的实像,利用这个原理可以制成 。实验中他 不慎用手指尖触摸到了凸透镜,此时光屏上 (选填“会”或“不会”)出现手指尖的像。 4、【2016年 十堰市中考】在探究平面镜成像特点的实验中要想取得较好的实验效果,最好选择在 (选填“较亮”或“较暗”)的环境中进行;实验用透明玻璃板代替平面镜主要是便于 ;实验时将点燃的蜡烛A 向玻璃板靠近,观察到蜡烛的像将 .(选填“变大”、“不变”或“变小”) 5、【2017年 十堰市中考】人们常在外出旅游时用手机“自拍”,手机的镜头是一个 镜,拍照时想让像变小点,应该让手机 (选填“靠近”或“远离”)自己。该透镜在生活中常用来桥正 (选填“近视眼”或“远视眼”)

实验六 一维数组程序设计

实验六一维数组程序设计 一、实验学时 2学时 二、实验目的 (一)掌握一维数组的定义、初始化方法; (二)掌握一维数组中数据的输入和输出方法; (三)掌握与一维数组有关的程序和算法; (四)了解用数组处理大量数据时的优越性。 三、预习要求 (一)理解数组的概念、利用数组存放数据有何特点; (二)一维数组的定义、初始化方法; (三)一维数组中数据的输入和输出方法。 四、实验内容 (一)下面的几个程序都能为数组元素赋值,请输入程序并运行。比较一下这些赋值方法的异同。 1.在定义数组的同时对数组初始化。 /* c6-1.c */ /*在定义数组的同时对数组初始化*/ #include "stdio.h" void main( ) { int a[4]={0,1,2,3}; printf("\n%d %d %d %d\n",a[0],a[1],a[2],a[3]); } 2.不使用循环对单个数组元素赋值。 /* c6-2.c */ /*不使用循环对单个数组元素赋值*/ #include "stdio.h" void main( ) { int a[4]; a[0]=2;a[1]=4;a[2]=6;a[3]=8; printf("\n%d %d %d %d\n",a[0],a[1],a[2],a[3]); } 3.用循环结构,从键盘输入为每个数组元素赋值,输出各数组元素。 /* c6-3.c */ /*利用循环通过键盘对数组元素赋值*/ #include "stdio.h" void main( ) { int i,a[4]; for(i=0; i<4; i++) scanf("%d",&a[i]); printf("\n"); for(i=0; i<4; i++) printf("%d ",a[i]);

c++基本语句和一维数组测试题

C++阶段测试(三种基本结构+一维数组) 班级姓名 一、单项选择题(共15题,每题有且仅有一个正确选项) ⒈以下哪个是面向对象的高级语言( )。 A.汇编语言 B. C++ C.Fortran D.Basic ⒉1TB代表的字节数是( )。 A.2的10次方 B.2的20次方 C.2的30次方 D.2的40次方 ⒊二进制数00100100和00010101的和是( )。 A.00101000 B.001010100 C.01000101 D.00111001 4.下列各无符号十进制整数中,能用八位二进制表示的数中最大的是( )。 A.296 B.133 C.256 D.199 5.要求以下程序的功能是计算:s=1+1/2+1/3+...+1/10。 #include using namespace std; int main() { int n; float s; s = 1.0; for(n = 10; n > 1; n--) s = s + 1 / n; cout << s << endl; return 0; } 程序运行后输出结果错误,导致错误结果的程序行是( )。 A.s = 1.0; B.for(n = 10; n > 1; n--) C.s = s + 1 / n; D.cout << s << endl; 6设变量x为float型且已赋值,则以下语句中能将x中的数值保留到小数点后两位,并将第三位四舍五入的是( )。 A.x = (x * 100) + 0.5 / 100.0; B.x = (x * 100 + 0.5) / 100.0; C.x = (int)(x * 100 + 0.5)/100.0; D.x = (x / 100 + 0.5) * 100.0; 7.有以下程序 #include using namespace std; int main() { int s, a, n; s = 0; a = 1; cin >> n; do { s += 1; a -= 2; }while(a != n); cout << s << endl; return 0; } 若要使程序的输出值为2,则应该从键盘给n输入的值是( )。 A.-1 B.-3 C.-5 D.0 8.若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值,c>0。s = a; for(b = 1; b <= c; b++) s += 1; 则与上述程序段功能等价的赋值语句是( )。 A. s = a + b B. s = a + c C. s = s + c D. s = b + c 9.若有定义: int a=7; float x=2.5,y=4.7; 则表达式x+a%3*(int)(x+y)%2/4的值是( )。 A. 2.500000 B. 2.750000 C. 3.500000 D. 0.000000 10. 在C/C++语言中,逻辑值“真”用( )表示。

题组训练二

题组训练(二): 1、下面句子没有语病的一项是()(梅州) A.袁隆平为研究杂交水稻技术而不畏艰险、执着追求的精神和品质是值得我们学习的榜样。 B.只要人人都能时时处处传递“正能量”,世界就会变成美好的人间。C.这场足球赛的胜败取决于队员们的齐心协力。 D.小明同学到现在还没来参加比赛,带队老师断定他大概放弃了。 2、下列各句中有语病的一项是()(临沂) A.在2012年《星光大道》年度冠军总决赛上,临沂市苍山县的“草帽姐”徐桂花取得了第五名的好成绩。 B.四川雅安人民抗震救灾、重建家园的事实告诉我们:只要心中有坚定的信念,就能战胜和面对任何困难。 C.中央电视台开展的“最美乡村医生”、“最美乡村教师”、“感动中国人物”评选活动,弘扬了社会正气,倡导了社会新风。 D.2013年5月27日,受狂风暴雨及大浪影响,青岛栈桥东侧部分30多米长的桥体出现坍塌。 3、选出下列句子中没有语病的一项。()(浙江丽水) A.莫言获得诺贝尔文学奖之后,又默默地写了一本大约16万字左右的书。B.第27届浙江省青少年科技创新大赛注重培养青少年科学探究和创新实践。 C.贝克汉姆在巴黎圣日耳曼队夺冠后宣布即将退役,停止20年的辉煌职业生涯。 D.如今,年轻人喜欢上网购物,一些老年人也加入到“淘宝一族”的行列。 4、下列各句中,没有语病的一项是()(扬州)

A.又到酷暑时节,学校再次发出不要到陌生水域游泳,更不要独自一人去游泳。 B.好读书,读好书,形成了习惯,你就可以与智慧结伴同行,与高尚朝夕相处。 C.一个人能否约束自己的言行,不但要靠严明的纪律,还要靠自身的品德修养。 D.即使每天锻炼一小时,健康快乐才能伴你一辈子,因为好体魄是成功的前提。 5、下列句子没有语病的一项是()(兰州) A.在如何提高课堂效率的问题上,老师听取了广泛同学们的意见。B.专家表示,通过开通快速公交,使主城区交通拥堵问题得到解决。C.为了防止H7N9疫情不再大规模扩散,各级政府都及时采取了措施。D.兰州新区的建设,对进一步提升兰州和甘肃对外开放新形象具有重要意义。 6、结合语境修改画线病句,最恰当的一项是()(北京) 在现代工业社会,煤炭、石油和天然气的过多燃烧,导致大气中二氧化碳含量急剧增加,二氧化碳具有吸热和隔热功能,它在大气中增多的结果是形成了一个无形的“玻璃罩”,太阳辐射到地球的热量向外层空间无法发散,造成地球表面温度升高,这就是我们常说的“温室效应”。 A.修改:外层空间无法接受到太阳辐射到地球的热量 B.修改:使外层空间无法接受到太阳辐射到地球的热量 C.修改:无法向外层空间发散太阳辐射到地球的热量 D.修改:使太阳辐射到地球的热量无法向外层空间发散 7、下列对病句的修改不正确的一项是()(荆门)

一维数组练习.doc

基本练习:(釆用文件输入输岀) 1.输入一串小写字母(以〃.〃为结束标志),统计出每个字母在该字符串中出现的次数(若某字母不出现,则不要输出),例: 输入:aaaabbbccc. 输出:a:4 b:3 c: 3 规定:文件名:tongji. pas 输出文件:tongji. in输出文件tongji. out 程序: var a:array/ z" ] of integer; n:char; begin assign (input, ' tongji,in' );reset (input); assign(output,' tongji. out' );rewrite(output); read (n); while n〈>'.' do begin inc (a[n]); read(n); end; for n:=,a" to,z‘ do if 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 程序: var a:array[L . 16] of integer; b, c, d, e: integer; begin assign (input,' erjinzhi. in');reset(input); assign(output,' erjinzhi. out');rewrite(output); readln(b);

一维数组练习题

一维数组练习题 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 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 B) 3 0 C) 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和31 C) 21和30 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]

考点2 题组训练过关 5.1

温馨提示: 此套题为Word版,请按住Ctrl,滑动鼠标滚轴,调节合适的观看比例,答案解析附后。关闭Word文档返回原板块。 题组训练过关 电子排布原理及应用 1.(2020年山东等级考模拟)某元素基态原子4s轨道上有1个电子,则该基态原子价电子排布不可能是 ( ) A.3p64s1 B.4s1 C.3d54s1 D.3d104s1 【解析】选A。基态原子的核外电子排布应遵循能量最低原理、泡利原理和洪特规则。A项为19K,核外电子排布式为1s22s22p63s23p64s1,主族元素的价电子是最外层电子,应为4s1,错误;B项为19K的价电子排布式,正确;C项为24Cr,副族元素的价电子是最外层电子与次外层的部分电子之和,核外电子为 [Ar]3d54s1,即价电子为3d54s1,此为洪特规则的特例,3d轨道上的电子为半满状态,整个体系的能量最低;D项为29Cu,价电子为3d104s1,3d轨道上的电子处于全充满状态,整个体系的能量最低。 2.(双选)(2020·太原模拟改编)下列各项叙述正确的是( ) A.镁原子由1s22s22p63s2→1s22s22p63p2时,原子吸收能量,由基态转化成激发态 B.价电子排布为5s25p1的元素位于第五周期第ⅠA族,是s区元素 C.所有原子任一能层的s电子云轮廓图都是球形,但球的半径大小不同 D.24Cr原子的电子排布式是1s22s22p63s23p63d44s2 【解析】选A、C。镁原子由1s22s22p63s2→1s22s22p63p2时,原子吸收能量,才能由基态转化成激发态,A正确;价电子排布为5s25p1的元素,位于第五周期第ⅢA 族,是p区元素,B错误;所有原子任一能层的s电子云轮廓图都是球形,能层

c语言程序设计 一维数组实验

程序填空: 1、将数组a中所有偶数删除,把奇数按原顺序依次存放到a[0]、a[1]、a[2]、……、中。例如:若a数组中的数据最初排列为:9、1、4、 2、 3、6、5、8、7,删除偶数后a数组中的数据为:9、1、3、5、7。 #include main() { int a[9]={9,1,4,2,3,6,5,8,7},i,k=0; for(i=0;i<9;i++) if(__【1】__) a[k++]=a[i]; for(i=k;i<9;i++) a[i]=0; for(i=0;__【2】__;i++) printf("%4d",a[i]); printf("\n"); } 2、将所有大于1小于整数m的非素数存入数组a中。例如,若输入17,则应输出:4 6 8 9 10 12 14 15 16。 #include #define N 100 main() { int a[N],i,j,k=0,m; __【1】__ for(i=2;i #define N 20 main() { int fibonaci[N],i; for(i=0;i

c语言数组习题

数组练习解答 1 定义一个名为a的单精度实型一维数组,长度为4,所有元素的初值均为0的数定义语句是___________ 【分析】按照一般数据定义语句的格式,可以直接写出方法一(参看答案);考虑到所有元素均赋初值时可以省略数组长度,可以写出方法二(参看答案);考虑到不省略数组长度,给部分元素赋初值时,所有未赋初值的元素均有空值(对数值型数组来说,初值为0),可以写出方法三(参看答案);考虑到选用静态型,不赋初值所有元素也自动赋予。空值(对数值型数组来说,初值为0),可以写出方法四(参看答案)。 【答案】方法一:float a[4]={0.0,0.0,0.0,0.0}; 方法二:float a[]={ 0.0,0.0,0.0,0.0}; 方法三:float a[4]= {0.0}; 方法四:static float [4]; 2 下列数组定义语句中,错误的是() ①char x[1]='a';②auto char x[1]={0}; ③static char x[l];④char x[l]; 【分析】显然答案①中给字符型数组赋初值的格式不对(不能直接赋予字符常量,必须用花括号括住),所以备选答案①是符合题意的答案。 【答案】① 3 用"冒泡排序法"对n个数据排序,需要进行n一1 步。其中第k步的任务是:自下而上,相邻两数比较,小者调上;该操作反复执行n-k次。现在假设有4个数据:4、l、3、2要排序,假定4为上、2为下,则利用"冒泡排序法"执行第2步后的结果是_________________。 【分析】开始排序前的排列执行第1步后的排列执行第2步后的排列 4 1 1 1 4 2 3 2 4 2 3 3 【答案】l、2、4、3 4 用"选择排序法"对n个数据排序,需要进行n-1步。其中第k步的任务是:在第k个数据到第n个数据中寻找最小数,和第k个数据交换。现在假设有4个数据:4、1、3、2要排序,则利用"冒泡排序法"执行第2步后的结果是______________________。 【分析】开始排序前的排列为: 4 1 3 2 执行第1步后的排列为: 1 4 3 2 执行第2步后的排列为: 1 2 3 4 【答案】1、2、3、4 5 下列数组定义语句中,正确的是() ①int a[][]={1,2,3,4,5,6};②char a[2]「3]='a','b'; ③int a[][3]= {1,2,3,4,5,6};④static int a[][]={{1,2,3},{4,5,6}}; 【分析】C语言规定,二维数组定义时不允许省略第二维的长度,所以备选答案①④是错误的。C语言还规定,定义字符型数组时不允许直接使用"字符常量"的方式赋初值,所以备选答案②也是错误的。显然备选答案③符合题意。【答案】③ 6 定义一个名为"s"的字符型数组,并且赋初值为字符串"123"的错误语句是() ①char s[]={‘1','2','3','\0 '};②char s「」={"123"}; ③char s[]={"123\n"}; ④char s[4]={'1','2','3'}; 【分析】备选答案①中省略了数组长度,所以每个元素都赋了初值,共计4个元素,初值依次为'l'、'2'、'3'、'\0',最后一个元素的值为字符串结束标记,所以数组S中存放的是字符串"123",该答案不符合题意(即正确的);备选答案③中直接赋予字符串作为初值所以数组s的长度为4,其中的初值是字符串"123",

专题一 训练五 题组一 流程图类转换

训练五图文转换 题组一流程图类转换 练前提醒 流程图类转换的流程是: 1.看清楚题目要求,明确陈述对象是什么。 2.把握概念间的关系:方框里的词语属于关键概念,是流程图中的关键环节(不能遗漏);方框间的连线或箭头展示着事件发展的趋势或动作行为的走向;连线或箭头上如果有词语,这些词语属于概念间(环节间)发生关系的方式,起过渡和连贯作用。 3.分析几个概念在整个事件或行为过程中的地位及作用,分析其间的关系,看是否属于因果、条件、递进、并列、承接、转折等,由此来选定过渡词语或关联词语实施连缀。

另外,要关注流程图转换命题的新趋势,即越来越情境化、综合化,这一点在下面诸题中大都能体现出来。 1.(2019·浙江)阅读下面某社区“红色议事厅”工作流程图,根据要求完成题目。(6分) 注

两代表一委员:党代表、人大代表和政协委员。 (1)用一句话概括“红色议事厅”工作职能,不超过15个字。(2分) 答: (2)从“为老百姓办实事”角度评价“红色议事厅”工作机制。要求:体现流程图主要内容,语言简明、准确,不超过80个字。(4分) 答: 答案(1)联系相关各方,协商解决难事。 (2)(示例)“红色议事厅”工作很实在。①难事来自民意,很务实;②协调相关部门、人员解决难事,很切实;③既有“两代表一委员”监督,又有群众反馈及回访,能落实。 解析解答此题,需要认真观察此流程图,明白各层级的关系。第(1)题要求概括“红色议事厅”的工作职能,从流程图可以看出,“红色议事厅”处于流程图的中心位置,是整个流程的核心,由此可将答案概括为“联系与之相关的各方,帮忙协商解决难事”。作答时要注意答案不能超过15个字。第(2)题要求“从‘为老百姓办实事’角度评价‘红色议事厅’工作机制”,由流程图可以看出,红色议事厅帮助解决难事,接受群众反馈及满意度回访,所以可以从“红色议事厅”工作很实在方面回答。要求体现流程图的主要内容,可以从难事来自民意、协调相关部门、接受“两代表一委员”的监督、能够落实群众反馈和回访等方面回答。注意答案不能超过80个字。 2.学校安排了沈从文小说《边城》的专题阅读课程。下面是一位老师推荐给学生的课程实施流程图。请把这个图转写成一段文字,要求内容完整,表述准确,语言连贯,不超过90个字。(6分)

C语言数组编程题

实验4 数组 一.实验目的: 1.掌握一维数组的定义、赋值和输入输出的方法; 2.掌握字符数组定义、初始化、赋值的方法; 3.了解常见的字符串函数功能及其使用方法; 4.掌握二维数组的定义与引用。 二.实验内容: 1.编写程序,输入10个整数存入一维数组,统计输出其中的正数、负数和零的个数。 2.编写程序,输入10个整数存入一维数组,再按逆序重新存放后再输出。 3.编写程序,输入10个整数存入一维数组,对其进行升序排序后输出。 4.编写程序,求二维数组中元素的最大值和最小值。 5.编写程序,求一个4×4矩阵中所有元素之和。 6.编写程序:从键盘上输入一字符串,统计输出该字符串中的字母字符、数字字符、空格以及其他字符的个数。 7.编写程序:从键盘上输入一字符串,并判断是否形成回文(即正序和逆序一样,如“abcd dcba”)。 8. 产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。 9. 产生一个由10个元素组成的一维数组,数组元素由随机数(0-99)构成。按照升序排列并输出。再输入一个数,按原来的规律将其插入并输出。 页脚内容1

10. 产生一个由10个元素组成的一维数组,数组元素由随机数(0-99)构成。按照升序排列并输出。再输入一个数,要求找出该数是数组中的第几个元素,如果不在数组中,则输出找不到。 11. 找出一个二维数组中的鞍点,即该位置上的元素在该行最大,在该列最小。可能没有鞍点。 12. 编程输出杨辉三角。(要求输出10行)(杨辉三角:每行端点与结尾的数为1.每个数等于它上方两数之和。每行数字左右对称,由1开始逐渐变大) 13. 输入一行字符,统计大写字母、小写字母、数字、空格以及其它字符个数。 14. 编写程序,将两个字符串连接起来,不用strcat。 15. 编写程序实现strcpy函数功能。 16. 编程实现strlen函数功能。 17. 编程求2-4+6-8…-100+102的值。 18. 假设某人有100,000现金。每经过一次路口需要进行一次交费。交费规则为当他现金大于50,000时每次需要交5%如果现金小于等于50,000时每次交5,000。请写一程序计算此人可以经过多少次这个路口。 19. 输入若干个正整数,以0结束,将其中大于平均值且个位为5的数排序后输出。(按由大到小的顺序排序) 20. 输入一个字符串,将其中ASCII码值为基数的字符排序后输出。(按由小到大的顺序) 21. 输入一个以回车结束的字符串(少于80个字符),滤去所有的非16进制字符后,组成一个新字符串(16进制形式),然后将其转换为10进制数后输出。 22. 读入一个正整数n(1<=n<=6),再读入n阶矩阵,计算该矩阵除副对角线、最后一行、最后一列 页脚内容2

一维数组习题

一维数组 【例1】输入50个数,要求程序按输入时的逆序把这50个数打印出来;也就是说,请你按输入相反顺序打印这50个数 分析:我们可定义一个数组a用以存放输入的50个数,然后将数组a内容逆序输出,源程序如下 program ex5_1; type arr=array[1..50]of integer; {说明一数组类型arr} var a:arr; i:integer; begin writeln('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 5 92810 5 10289 5 10289 5 第二轮排序:10829 5 10928 5 10928 5 第三轮排序:10982 5 10982 5 第四轮排序:10985 2 对于十个数,则排序要进行9次。源程序如下: program ex5_2; var a:array[1..10]of integer; i,j,t:integer; begin writeln('Input 10 integers:'); for i:=1 to 10 do read(a[i]);{读入10个初始数据} readln; for i:=1 to 9 do{进行9次排序} begin for j:=i+1 to 10 do{将第i个数与其后所有数比较}

华杯赛小学组集训题:综合训练5(含答案)

华杯赛小学组集训题:综合训练5 31. 某地收取电费的标准是:每月用电量不超过50度,每度收5角;如果超出50度,超出部分按每度8角收费.每月甲用户比乙用户多交3元3角电费,这个月甲、乙各用了多少度电? 32. 王师傅计划用2小时加工一批零件,当还剩160个零件时,机器出现故障,效率比原来降低1/5,结果比原计划推迟20分钟完成任务,这批零件有多少个? 33. 妈妈给了红红一些钱去买贺年卡,有甲、乙、丙三种贺年卡,甲种卡每张1.20元.用这些钱买甲种卡要比买乙种卡多8张,买乙种卡要比买丙种卡多买6张.妈妈给了红红多少钱?乙种卡每张多少钱? 34. 一位老人有五个儿子和三间房子,临终前立下遗嘱,将三间房子分给三个儿子各一间.作为补偿,分到房子的三个儿子每人拿出1200元,平分给没分到房子的两个儿子.大家都说这样的分配公平合理,那么每间房子的价值是多少元? 35. 小明和小燕的画册都不足20本,如果小明给小燕A本,则小明的画册就是小燕的2倍;如果小燕给小明A本,则小明的画册就是小燕的3倍.原来小明和小燕各有多少本画册? 36. 有红、黄、白三种球共160个.如果取出红球的1/3,黄

球的1/4,白球的1/5,则还剩120个;如果取出红球的1/ 5,黄球的1/4,白球的1/3,则剩116个,问(1)原有黄球几个?(2)原有红球、白球各几个? 37. 爸爸、哥哥、妹妹三人现在的年龄和是64岁,当爸爸的年龄是哥哥年龄的3倍时,妹妹是9岁.当哥哥的年龄是妹妹年龄的2倍时,爸爸是34岁.现在三人的年龄各是多少岁? 38. B在A,C两地之间.甲从B地到A地去送信,出发10分钟后,乙从B地出发去送另一封信.乙出发后10分钟,丙发现甲乙刚好把两封信拿颠倒了,于是他从B地出发骑车去追赶甲和乙,以便把信调过来.已知甲、乙的速度相等,丙的速度是甲、乙速度的3倍,丙从出发到把信调过来后返回B 地至少要用多少时间? 39. 甲、乙两个车间共有94个工人,每天共加工1998竹椅.由于设备和技术的不同,甲车间平均每个工人每天只能生产15把竹椅,而乙车间平均每个工人每天可以生产43把竹椅.甲车间每天竹椅产量比乙车间多几把? 40. 甲放学回家需走10分钟,乙放学回家需走14分钟.已知乙回家的路程比甲回家的路程多1/6,甲每分钟比乙多走12米,那么乙回家的路程是几米? 答案解析(仅供参考)

数组复习题.doc

数组复习题 1. 单项选择题 (1) int a[4]={5,3,8,9};其中a[3]的值为( D )。 A. 5 B. 3 C. 8 D. 9 (2) 以下4 个字符串函数中,( A )所在的头文件与其他3 个不同。 A. gets B. strcpy C. strlen D. strcmp (3) 以下4 个数组定义中,( D )是错误的。 A. int a[7]; B. #define N 5 long b[N]; C. char c[5]; D. int n,d[n]; (4) 对字符数组进行初始化,( B )形式是错误。 A. char c1[ ]={'1', '2', '3'}; B. char c2[ ]=123; C. char c3[ ]={ '1', '2', '3', '\0'}; D. char c4[ ]="123"; (5) 在数组中,数组名表示( C )。 A. 数组第1 个元素的首地址 B.数组第2 个元素的首地址 C. 数组所有元素的首地址 D.数组最后1 个元素的首地址 (6) 若有以下数组说明,则数值最小的和最大的元素下标分别是(B )。 int a[12] ={1,2,3,4,5,6,7,8,9,10,11,12}; A. 1,12 B. 0,11 C. 1,11 D. 0,12 (7) 若有以下说明,则数值为4 的表达式是(D )。 int a[12] ={1,2,3,4,5,6,7,8,9,10,11,12}; char c=’a’, d, g ; A. a[g-c] B. a[4] C. a['d'-'c'] D. a['d'-c] (8) 设有定义:char s[12]="string";则printf( "%d\n",strlen(s)); 的输出是 (A ) A. 6 B. 7 C. 11 D. 12 (9) 设有定义:char s[12] = "string"; 则printf("%d\n ", sizeof(s)); 的输出是( D )说明:sizeof是一个运算符,求变量或类型的长度 A. 6 B. 7 C. 11 D. 12 (10) 合法的数组定义是( A )。 A. char a[ ]= "string " ; B. int a[5] ={0,1,2,3,4,5}; C. char a= "string " ; D. char a[ ]={0,1,2,3,4,5}

C语言一维数组教案

学科:计算机科学与技术 课程:C语言程序设计 课题:一维数组 课时:2 教学目标:1、掌握一维数组的定义和引用 2、掌握一维数组的初始化方法 3、了解与一维数组有关的应用编程方法 教学重点:一维数组的定义和引用、初始化方法 教学难点:与一维数组有关的应用编程方法 教学方法:举例法,引导法 教学步骤:1、通过一个例子提出问题来引出本节课的知识点 2、讲授一维数组的定义和引用、初始化方法 3、示例训练 4、进行本节课的总结及作业布置 教具:黑板计算机投影仪 教学过程: 一、导入: 提问:保存一个班50位同学的一门功课的成绩,并且找出最高分和最低分,应如何实现? 解题思路:定义50个变量,从键盘中输入值,然后再相互比较。处理起来很复杂,是

否有更简便的方法?引出本节课的知识点-----数组。 二、讲授: 1、数组概述: ·数组:是数目固定,类型相同的若干个变量的有序集合,用数组名标识。 序:是数组元素之间的位置关系,不是元素值的大小顺序。 数组名:是用于区别其它数组及变量的。 ·数组元素:集合中的变量,属同一数据类型,用数组名和下标确定。 下标:是数组元素在数组中的位置。 ·数组的维数:数组名后所跟下标的个数。 2、一维数组的定义 一维数组是指由一个下标数组元素组成的数组。其定义形式为: 存储类型数据类型数组名[常量表达式] 例如:static int score[50]; 它表示定义了一个名为score的数组,该数组有50个元素,其存储类型为静态型,数据类型为整型。 说明: (1)存储类型为任选项,可以是auto、static、extern存储类型,但是没有register 型。 (2)数据类型是用来说明数组元素的类型:int , char , float。 (3)数组名的命名应遵守标识符的命名规则,但是不能与其他变量同名。

一维数组练习题

维数组练习题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]

实验4使用数组的程序设计

C语言程序设计实验报告 实验4 使用数组的程序设计 一、实验目的 (1)掌握一维数组和二维数组的定义、赋值和输入输出方法。 (2)掌握字符数组的使用。 (3)掌握与数组有关的算法。 二、实验内容及步骤 1、检验并打印幻方矩阵 在下面的5*5阶幻方矩阵中,每一行、每一列、每一对角线上的元素之和都是相等的,试编写程序将这些幻方矩阵中的元素读到一个二维整型数组中,然后检验其是否为幻方矩阵,并将其按如下格式显示到屏幕上。 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 程序代码: #include main() { int a[5][5],i,j,sr,sc,st1=0,p=0,st2=0; printf("请输入一个方阵:\n"); for(i=0;i<5;i++) {for(j=0;j<5;j++) scanf("%d",&a[i][j]); } for(i=0;i<5;i++) {st1=st1+a[i][i];//主对角线的和 st2=st2+a[i][4-i];}//次对角线的和 if(st1==st2) p++; for(i=0,sr=0;i<5;i++) {for(j=0,sc=0;j<5;j++) {sr=sr+a[i][j];//行的和 if(sr!=st1)break; sc=sc+a[j][i];//列的和 if(sc!=st1)break;} } if(p==1&&i==5) {printf("这是一个幻方矩阵\n");

for(i=0;i<5;i++) {for(j=0;j<5;j++) printf("%d\t",a[i][j]); printf("\n"); }} else printf("这不是一个幻方矩阵\n"); } 运行结果 2、完成以下程序,并进行调试 某班期末考试科目为数学、英语和计算机,有最多不超过30人参加考试,考试后要求:1)计算每个学生的总分和平均分; 2)按总分成绩由高到低排出成绩的名次; 3)打印出名次表,表格内包括学生学号、各科分数、总分和平均分; 4)任意输入一个学号,能够查找出该学生在班级中的排名及其考试分数。 【提示】:用二维数组score存放每个学生各门课程的成绩,用一维数组num存放每个学生的学号,用一维数组sum存放每个学生的总分,用一维数组aver存放每个学生的平均分。 程序代码: #include main() { double score[5][3],sum[5],aver[5]; int i,j,num[5],t; printf("请输入每位同学的学号和各科成绩,用Tab键隔开:\n"); printf("学号\t数学\t英语\t计算机\n"); for(i=0;i<5;i++) { scanf("%d",&num[i]); for(j=0;j<3;j++) scanf("%lf",&score[i][j]);

Java数组练习题(带答案)

一填空题 1)数组的元素通过下标来访问,数组Array的长度为Array.length 。 2)数组复制时,"="将一个数组的引用传递给另一个数组。 3)JVM将数组存储在栈(堆或栈)中。 4)数组的二分查找法运用的前提条件是数组已经排序。 5)Java中数组的下标的数据类型是整型。 6)数组最小的下标是0 。 7)arraycopy()的最后一个参数指明复制元素的个数。 8)向方法传递数组参数时,传递的是数组的引用。 9)数组初始化包括数组的申明,创建和初始化。 10)数组下标访问超出索引范围时抛出数组越界异常 11)浮点型数组的默认值是0.0f 。 12)数组创建后其大小不能改变。 二选择题 1.下面错误的初始化语句是_ABD__ A. char str[]="hello"; B. char str[100]="hello"; C. char str[]={'h','e','l','l','o'}; D. char str[]={'hello'}; 2.定义了一维int型数组a[10]后,下面错误的引用是_B__ A. a[0]=1; B. a[10]=2; C. a[0]=5*2; D. a[1]=a[2]*a[0]; 3.下面的二维数组初始化语句中,正确的是____ A. float b[2][2]={0.1,0.2,0.3,0.4}; B. int a[][]={{1,2},{3,4}}; C. int a[2][]= {{1,2},{3,4}}; D. float a[2][2]={0}; 4.引用数组元素时,数组下标可以是_D___ A. 整型常量 B. 整型变量 C. 整型表达式 D. 以上均可 5.定义了int型二维数组a[6][7]后,数组元素a[3][4]前的数组元素个数为____ A. 24 B. 25 C. 18 D. 17 6.下列初始化字符数组的语句中,正确的是__B__ A. char str[5]="hello"; B. char str[]={'h','e','l','l','o','\0'}; C. char str[5]={"hi"}; D. char str[100]=""; 7.数组在Java中储存在 C 中 A. 栈 B. 队列 C. 堆 D. 链表 8.下面程序的运行结果是____ main() { int a[][]={{1,2,3},{4,5,6}}; System.out.printf("%d", a[1][1]); } A. 3 B. 4 C. 5 D. 6 9.下面程序的运行结果是_C___ main() {

相关主题
文本预览
相关文档 最新文档