数组习题参考答案

数组习题参考答案
数组习题参考答案

习题参考答案

一、找出下面程序或程序段中的错误,并改正。

1.

#include

using namespace std;

int main()

{ int m,a[m];

a[0]=1;

cout<

return 0;

}

正确程序:

#include

using namespace std;

int main()

{ const int m=10;

int a[m];

a[0]=1;

cout<

return 0;

}

2.

#include

using namespace std;

int main()

{ int a[5];

cin>>a;

cout<

return 0;

}

正确程序:

#include

using namespace std;

int main()

{ int a[5];

cin>>a[4];

cout<

return 0;

}

3.

#include

using namespace std;

int main()

{ char c[10]="I am a student";

cout<

return 0;

}

正确程序:

#include

using namespace std;

int main()

{ char c[ ]="I am a student";

cout<

return 0;

}

4.在下面程序中输入China ,要求输出China #include

using namespace std;

int main()

{ char a[5],*p;

int i;

*p=a;

for(i=0;i<5;i++)

cin>>*(p+i);

cout<

return 0;

}

正确程序:

#include

using namespace std;

int main()

{ char a[6],*p;

int i;

p=a;

for(i=0;i<5;i++)

cin>>*(p+i);

a[5]='\0';

cout<

return 0;

}

二、读程序,写运行结果。

1.

#include

using namespace std;

int main()

{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;

cout<

return 0;

}

运行结果:

21

2.写出程序的运行结果,并说明该程序的功能。

#include

using namespace std;

int main()

{int y=25,i=0,j,a[8];

do

{ a[i]=y%2;i++;

y=y/2;

}

while(y>=1);

for(j=i-1;j>=0;j--)

cout<

cout<

return 0;

}

运行结果:

11001

程序的功能:将十进制数转换为对应的二进制数。3.

#include

#include

using namespace std;

int main()

{int t[3][4]={{1,2,3,4},{5,6,7,8},{9}},i,j;

for(i=0;i<3;i++)

for(j=0;j<4;j++)

cout<

cout<

for(i=0;i<3;i++)

{ cout<

for(j=0;j<4;j++)

cout<

}

for(i=0;i<4;i++)

{ cout<

for(j=0;j<3;j++)

cout<

}

return 0;

}

运行结果:

1 2 3 4 5 6 7 8 9 0 0 0

1 2 3 4

5 6 7 8

9 0 0 0

1 5 9

2 6 0

3 7 0

4 8 0

4.

#include

using namespace std;

int main()

{char t[3][20]={"Watermelon","Strawberry","grape"}; int i;

for(i=0;i<3;i++)

cout<

return 0;

}

运行结果:

Watermelon

Strawberry

grape

5.

#include

using namespace std;

#include

void sort(int a[ ],int n)

{int i,j,t;

for (i=0;i

for (j=i+1;j

if(a[i]

{ t=a[i];a[i]=a[j];a[j]=t;}

}

void main( )

{ int aa[10]={1,2,3,4,5,6,7,8,9,10},i;

sort(&aa[4],4);

for(i=0;i<10;i++)

cout<

}

运行结果:

1 2 3 4 8 7 6 5 910

三、编写程序。

1.编写一个程序,从任意n个数中找出最大的数和最小的数,并将它们相互交换。

程序为:

#include

using namespace std;

#include

void main( )

{ int a[20],i,w_max,w_min,n;

cout<<"请输入数据个数:";

cin>>n;

for(i=0;i

cin>>a[i];

w_max=0;w_min=0;

for(i=1;i

if(a[w_max]>a[i])w_max=i;

else if(a[w_min]

i=a[w_min];a[w_min]=a[w_max];a[w_max]=i;

cout<<"处理后的数据为:";

for(i=0;i

cout<

}

2.编写一个程序,将任意n个数按从大到小的顺序排序。

程序为:

#include

using namespace std;

#define M 100

int main( )

{ int a[M],i,j,w,t,n;

cout<<"请输入数据个数(小于等于100):";

cin>>n;

cout<<"请任意输入"<

for(i=0;i

cin>>a[i];

for(i=0;i<=n-2;i++)

{ w=i;

for(j=i+1;j<=n-1;j++)

if(a[w]

if(w!=i)

{ t=a[w];a[w]=a[i];a[i]=t;}

}

cout<<"排序结果:"<

for(i=0;i

cout<

return 0;

}

3.利用折半查找法从一个升序排列的数列中查找某数是否存在。

程序为:

#include

using namespace std;

int main( )

{ int a[10],top,bottom,middle,i,x;

bool f;

cout<<"请按从小到大的顺序输入10个数"<<'\n';

for(i=0;i<10;i++)

cin>>a[i];

cout<<"请输入待查找的数:";

cin>>x;

top=0,bottom=9,f=false;

while(top<=bottom)

{ middle=(top+bottom)/2;

if(x==a[middle])

{ f=true;

break;}

else if(x

else top=middle+1;

}

if(f)

cout<<"找到了"<

else

cout<<"数列中没有这个数。";

cout<

return 0;

}

4.将一个数组中的数循环左移,例如,数组中原来的数为:1 2 3 4 5,移动后变成:2 3 4 5 1.

程序为:

#include

using namespace std;

int main( )

{ int a[5],i,w;

cout<<"请任意输入5个数:"<

for(i=0;i<5;i++)

cin>>a[i];

w=a[0];

for(i=1;i<=4;i++)

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

a[4]=w;

cout<<"结果:"<

for(i=0;i<5;i++)

cout<

return 0;

}

5.从任意n个数中找出素数。要求:将找出的素数存放在数组中。程序为:

#include

using namespace std;

#include

int main( )

{ int a[10],i,j,s,f;

cout<<"请任意输入10个数:"<

for(i=0;i<10;i++)

cin>>a[i];

s=0;

for(i=0;i<10;i++)

{j=2;f=1;

while(j<=sqrt(a[i]))

if(a[i]%j==0)

{f=0;break;}

else j++;

if(f==1)a[s++]=a[i];}

cout<<"结果:"<

for(i=0;i

cout<

return 0;

}

6.编写程序,找出二维数组所有元素中的最大值。

程序为:

#include

using namespace std;

int main( )

{ int i,j,row,col,max,a[4][5];

cout<<"请输入数据:"<<'\n';

for(i=0;i<4;i++)

for(j=0;j<5;j++)

cin>>a[i][j];

max=a[0][0],row=0,col=0;

for(i=0;i<4;i++)

for(j=0;j<5;j++)

if(max

{ max=a[i][j];

row=i;

col=j;

}

cout<<"最大数="<

return 0;

}

7.编写程序,从矩阵中找鞍点。如果某个元素是鞍点,那么该元素在所处的行中最大,列上最小,也可能没有鞍点。要求:如果有鞍点,输出鞍点的值,以及其所处的行和列;如果矩阵中没有鞍点,就打印出提示信息。

程序为:

#include

using namespace std;

int main( )

{ int i,j,col,max,a[4][5],f,f1;

cout<<"请输入数据:"<<'\n';

for(i=0;i<4;i++)

for(j=0;j<5;j++)

cin>>a[i][j];

f1=0;

for(i=0;i<4;i++)

{max=a[i][0],col=0;

for(j=1;j<5;j++)

if(max

{ max=a[i][j];

col=j;

}

f=1;

for(j=0;j<4;j++)

if(max>a[j][col])

{f=0;break;}

if(f==1)

{f1=1;

cout<<"鞍点:"<

}

if(f1==0)cout<<"矩阵中无鞍点";

return 0;

}

8.写一个程序,计算二维数组各列之和。

程序为:

#include

using namespace std;

int main( )

{ int i,j,a[4][5],sum;

cout<<"请输入数据:"<<'\n';

for(i=0;i<4;i++)

for(j=0;j<5;j++)

cin>>a[i][j];

for(j=0;j<5;j++)

{sum=0;

for(i=0;i<4;i++)

sum+=a[i][j];

cout<<"第"<

}

return 0;

}

9.编写程序比较两个字串的大小,不要用函数strcmp。

程序为:

#include

using namespace std;

int main( )

{ char str1[20],str2[20],k;

int i;

cout<<"请分别输入两个字符串:";

gets(str1);

gets(str2);

for(i=0;str1[i]==str2[i]&&(str1[i]!='\0'||str2[i]!='\0');i++);

k=str1[i]-str2[i];

if(k>0)

cout<

else if(k==0)

cout<

else

cout<

return 0;

}

10.编写程序将一个字符串首尾例如,字符串原始值为“I am happy!”,处理后,变成:“!yppah ma I”。

程序为:

#include

using namespace std;

#include

int main( )

{ char str[20],b,e,k;

cout<<"请输入字符串:";

gets(str);

b=0;e=strlen(str)-1;

while(b

{k=str[b];

str[b]=str[e];

str[e]=k;

b++;e--;

}

puts(str);

return 0;

}

11.写一个程序,计算任意n个数之和(要求:将n个数输入到数组中,然后再求和,

要用指针来处理)。

程序为:

#include

#include

using namespace std;

int main( )

{ int c[20],sum,i,n;

int *p;

cout<<"请输入数据个数:";

cin>>n;

cout<<"请输入"<

p=c;

for(i=0;i

cin>>*(p+i);

sum=0;

for(i=0;i

sum+=*(c+i);

cout<<"这"<

cout<

return 0;

}

12.写一个程序,计算一个二维数组中所有元素的平均值(要求用指针处理)。

程序为:

#include

#include

using namespace std;

int main( )

{int a[5][5],sum;

int *p;

sum=0;

for(p=a[0];p

{ cin>>*p;

sum+=*p;

}

cout<<"平均值为:"<

return 0;

}

13.写一个程序,将字符数组s2中存储的字符串复制到字符数组s1中(要求用指针,

不要用函数strcpy)。

程序为:

#include

using namespace std;

int main( )

{ char s1[20],s2[20],*p_s2=s2,*p_s1=s1;

cout<<"请输入字符串:";

gets(p_s2);

while(*p_s2!='\0')

{ *p_s1=*p_s2;

p_s1++;

p_s2++;

}

*p_s1='\0';

puts(s1);

return 0;

}

14.写一个函数,求两个整数的最大公约数和最小公倍数,用主函数调用这个函数,并输出结果,两个整数由键盘输入。

程序为:

#include

using namespace std;

int main( )

{ int m,n,gy,gb;

void js(int,int,int *,int *);

cout<<"请输入两个整数";

cin>>m>>n;

js(m,n,&gy,&gb);

cout<<"公约数为:"<

return 0;

}

void js(int m,int n,int *p_gy,int *p_gb)

{int r;

*p_gb=m*n;

if(m

{r=m;m=n;n=r;}

r=m%n;

while(r!=0)

{m=n;n=r;r=m%n;}

*p_gy=n;

*p_gb=*p_gb/n;

}

15.编写一个函数将字符串中的大写字母变成相应的小写字母,小写字母变成相应的大写字母,其他字符不变。在主函数中调用该函数,完成任意字符串的转换,并输出结果。

程序为:

#include

using namespace std;

int main( )

{ char str[30];

void zh(char []);

cout<<"请输入字符串:";

gets(str);

zh(str);

cout<<"转换后字符串:";

puts(str);

return 0;

}

void zh(char str[])

{int i;

for(i=0;str[i]!='\0';i++)

if(str[i]>='a'&& str[i]<='z')

str[i]-=32;

else if(str[i]>='A'&& str[i]<='Z')

str[i]+=32;

}

16.写一个形成杨辉三角形的函数,编写主函数调用它,并输出结果。

程序为:

#include

#include

using namespace std;

#define M 20

int main( )

{ int a[M][M],i,j,n;

void yh(int [][M],int);

cout<<"请输入杨辉三角形的行数(<=20):"; cin>>n;

yh(a,n);

for(i=0;i

{ cout<<'\n';

for(j=0;j<=i;j++)

cout<

}

return 0;

}

void yh(int a[][M],int n)

{ int i,j;

for(i=0;i

{ a[i][0]=1;

a[i][i]=1;

}

for(i=2;i

for(j=1;j

a[i][j]=a[i-1][j-1]+a[i-1][j];

}

c语言复习题(有答案)●

思考题 不仅要会做这些题,更重要的是要掌握其相关知识点一、一般填空题 1-1、调用fopen函数打开一文本文件,在“打开模式”这一项中,为输出(写)而打开需填入【1】. 1-2、调用fopen函数打开一文本文件,在“打开模式”这一项中,为追加而打开需填入【1】. 1-3、fopen函数的原形在头文件【1】中. 1-4、getchar函数的原形在头文件【1】中. 1-5、sqrt函数的原形在头文件【1】中. 1-6、如果函数不要求带回值,可用【1】来定义函数返回值为空. 答案:w或w+;a或a+;stdio.h ; stdio.h ; math.h ;void . 2-1、字符串“\1011234\\at”的长度(字符数)是【1】. 2-2、字符串“abc\103\\bcd”的长度(字符数)是【1】. 2-3、字符串“1\\t\x43\abx44”的长度(字符数)是【1】. 2-4、“a“在内存中占【1】个字节. 2-5、‘a’在内存中占【1】个字节. 2-6、“\71“在内存中占【1】个字节. 2-7、一维数组下标的最小值是【1】;数组char a[]=“china” ;在内存应占【1】个字节。 答案:8; 8; 9; 2;1;2 ;0;6. 3-1、设x=(5>1)+2, x的植为【1】. 3-2、表达式‘B’+15+‘\x41’+011+0x10的值是【1】. 3-3、表达式‘b’+5+‘\x42’+011+0x10的值是【1】. 答案:3;171;194; 4-1、假设所有变量都为整型,表达式(a=2,b=5,a>b?a++:b++,a+b)的值是【1】. 4-2、if(!a)中的表达式!a等价于【1】. 4_3、已知a=1,b=2,c=3,执行if(a>b>c) b=a;else b=c;a=4;b=8;后,b的值是【1】. 答案:8;a==0;8; 5-1、若所用变量都已定义,下列程序段的执行结果是【1】. for(i=1;i<=5;i++);printf(“OK\n”); 5-2、执行语句char s[3]=”ab”,*p;p=s;后,*(p+2)的值是【1】. 5-3、若有以下定义和语句:int a[4]={0,1,2,3},*p; p=&a[2]; ,则*--p的值是【1】. 5-4、下列程序的输出结果是【1】,main(){int a=011;printf(“%d\n”,++a);} 答案:OK;’\0’;1;10 6-1、若宏定义为:#define y(x) 2+x, 则表达式a=3*y(3)的值为【1】. 6-2、若宏定义为:#define y(x) 2+x, 则表达式a=4*y(2)的值为【1】. 6-3、若宏定义为:#define y(x) 2/x, 则表达式a=4+3*y(3)的值为【1】. 答案:9;10;6 . 二、单项选择题 1-1、若以"a+"方式打开一个已存在的文件,则以下叙述正确的是()。 A:文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可作添加和读操作 B:文件打开时,原有文件内容不被删除,位置指针移到文件开头,可作重写和读操作 C:文件打开时,原有文件内容被删除,只可作写操作 D:以上各种说法皆不正确 1-2、若执行fopen函数时发生错误,则函数的返回值是()。

数组练习题及答案

第五章数组练习题及答案 一、选择题 1、判断字符串a和b是否相等,应当使用() A、if(a==b) B、if(a=b) C、if(strcpy(a,b)) D、if(strcmp(a,b)) 2、以下正确的定义语句是() A、int a[1][4]={1,2,3,4,5}; B、float x[3][]={{1},{2},{3}}; C、long b[2][3]={{1},{1,2},{1,2,3}}; D、double y[][3]={0}; 3、以下各组选项中,均能正确定义二维实型数组a的选项是() A、float a[3][4]; float a[ ][4]; float a[3][ ]={{1},{0}}; B、float a(3,4); float a[3][4]; float a[ ][ ]={{0},{0}}; C、float a[3][4]; static float a[ ][4]={{0},{0}}; auto float a[ ][4]={{0},{0},{0}}; D、float a[3][4]; float a[3][ ]; float a[ ][4]; 4、下面程序的运行结果是() 1—5 DDCBA 6—10 BDABB 11—15 CCCBC 16—20 DDCBB 21—25 BBAAA 26—30 DBDDB #include "stdio.h" main() { char str[]="SSSWLIA",c; int k; for(k=2;(c=str[k]!='\0');k++) { switch(c) {case 'I':++k;break; case 'L':continue; default:putchar(c);continue; } putchar('*'); } } A、SSW* B、SW* C、SW*A D、SW 5、下面程序段是输出两个字符串中对应相等的字符。横线处应填入() char x[]="programming"; char y[]="Fortran"; int i=0;

测量计算题库及参考答案

计算题库及参考答案 1、设A 点高程为15.023m ,欲测设设计高程为16.000m 的B 点,水准仪安置在A 、B 两点之间,读得A 尺读数a=2.340m ,B 尺读数b 为多少时,才能使尺底高程为B 点高程。 【解】水准仪的仪器高为=i H 15.023+2.23=17.363m ,则B 尺的后视读数应为 b=17.363-16=1.363m ,此时,B 尺零点的高程为16m 。 2、在1∶2000地形图上,量得一段距离d =23.2cm ,其测量中误差=d m ±0.1cm ,求该段距离的实地长度 D 及中误差D m 。 【解】==dM D 23.2×2000=464m ,==d D Mm m 2000×0.1=200cm=2m 。 3、已知图中AB 的坐标方位角,观测了图中四个水平角,试计算边长B →1,1→2,2→3, 3→4的坐标方位角。 【解】=1B α197°15′27″+90°29′25″-180°=107°44′52″ =12α107°44′52″+106°16′32″-180°=34°01′24″ =23α34°01′24″+270°52′48″-180°=124°54′12″ =34α124°54′12″+299°35′46″ -180°=244°29′58″ 4、在同一观测条件下,对某水平角观测了五测回,观测值分别为:39°40′30″,39°40′48″,39°40′54″,39°40′42″,39°40′36″,试计算: ① 该角的算术平均值——39°40′42″; ② 一测回水平角观测中误差——±9.487″; ③ 五测回算术平均值的中误差——±4.243″。 5、在一个直角三角形中,独立丈量了两条直角边a ,b ,其中误差均为m ,试推导由a ,b 边计算所得斜边c 的中误差c m 的公式? 【解】斜边c 的计算公式为22b a c += ,全微分得 db c b da c a bdb b a ada b a d c +=+++=--2)(212)(21212 22122 应用误差传播定律得2 22 222222222m m c b a m c b m c a m c =+=+= 6、已知=AB α89°12′01″,=B x 3065.347m ,=B y 2135.265m ,坐标推算路线为B →1→2,测得坐标推算路线的右角分别为=B β32°30′12″,=1β261°06′16″,水平距离分别为=1B D 123.704m ,=12D 98.506m ,试计算1,2点的平面坐标。 【解】 1) 推算坐标方位角 =1B α89°12′01″-32°30′12″+180°=236°41′49″ =12α236°41′49″-261°06′16″+180°=155°35′33″ 2) 计算坐标增量 =?1B x 123.704×cos236°41′49″=-67.922m , =?1B y 123.704×sin236°41′49″=-103.389m 。 =?12x 98.506×cos155°35′33″=-89.702m , =?12y 98.506×sin155°35′33″=40.705m 。 3) 计算1,2点的平面坐标 图 推算支导线的坐标方位角

C语言练习3(数组)=参考答案

C语言(数组) 一、选择题 1. 设有程序: main() { int i,a[11]; printf("给数组赋值:\n"); for (i=0;i<=10;i++) scanf("%d",( )); ... ... printf("输出数组:\n"); for(i=0;i<=10;i++) printf("%d,",( )); } 则在程序中的两个园括号中分别应填入:C A) &a[i]和&a[i] B) a[i]和&a[i] C) &a[i]和a[i] D) a[i]和a[i] 2. 设已定义:int a[15]; 则数组a占用的内存单元数是( C ). A) 15 B) 16 C) 30 D) 32 3. 阅读程序: main() { int a[2]={0},i,j,k=2; for(i=0;i

return r; } main() { int x,a[]={2,3,4,5,6,7,8,9}; x=f(a,3); printf("%d\n",x); } 以上程序的输出结果是( D ). A) 720 B) 6 C)24 D) 120 5. 以下定义语句中,错误的是( B ). A) int a[ ] = {6,7,8}; B) int n=5, a[n]; C) char a[ ]= "string"; D) char a[5 ]={'0','1','2','3','4'}; 6. 以下描述中正确的是( D ). A) 数组名后面的常量表达式用一对圆括弧括起来 B) 数组下标从1开始 C) 数组下标的数据类型可以是整型或实型 D) 数组名的规定与变量名相同 7. 若定义数组并初始化char a[10]={'0','1 ','2','3','4','5','6','7','8','9'};指出以下错误语句( AB ). A) scanf("%c",a[0]); B) scanf("%s",&a); C) printf("%c",a[3]); D) printf("%s",a); 8.若定义数组int a[10] ,其最后一个数组元素为( C ). A) a[0] B) a[1] C) a[9] D) a[10] 9. 若定义数组并初始化int a[10]={ 1,2,3,4},以下语句哪一个不成立( B )? A) a[8] 的值为0 B) a[1] 的值为1 C) a[3] 的值为4 D) a[9] 的值为0 10. 指出以下错误语句( A ).

vb控件数组的习题及答案

vb控件数组的习题及答案

电子教室学生注册时姓名文本框部分请输入:如:1411111111李四学号+姓名,中间不加空格) 实验准备: 请同学们删除d:\ex21 文件夹里面的内容 如果没有ex21文件夹,请在d:\ 下新建 ex21 文件夹 1、打开D:\下的工程文件PROJECTA4.vbp和窗体文件FORMA4.frm,按以 下要求完成程序:在窗体上创建2个列表框、2个标签、2个命令按钮。 List1用于显示可选课程、List2用于显示已选课程。单击“选课”按钮, 将List1中选定的课程名称加入到List2中显示,单击“清空”按钮,将 删除List2中的所有课程。程序运行的参考输出格式如图A-4所示,可选 课程至少包含图A-4所示的6门。最后将工程文件、窗体文件按原文件 名保存在D:\EX21文件夹下。 图A-4

2、打开D:\下的工程文件PROJECTB4.vbp和窗体文件FORMB4.frm,按以下要求完成程序:在窗体上创建1个列表框、1个图片框、2个标签、2个命令按钮。List1用于显示可选课程、Picture1用于显示已选课程。单击“选课”按钮,将List1中选定的课程名称加入到Picture1中显示,单击“清空”按钮,将删除Picture1中的所有课程。程序运行的参考输出格式如图B-4所示,可选课程至少包含图B-4所示的6门。最后将工程文件、窗体文件按原文件名保存在D:\EX21文件夹下。 图B-4

3、打开D:\下的工程文件PROJECTA41.vbp和窗体文件FORMA41.frm,按以下要求完成程序:单击窗体,能产生10个两位的随机整数并存放在一维数组中,并能在窗体中输出该10个随机整数、最大数及其在10个数中的位置,要求使用语句强制显式声明模块中的所有变量,程序运行的参考输出格式如图A-41所示。最后将工程文件、窗体文件按原文件名保存在D:\EX21文件夹下。 图A-41

第4章 串与数组 习题参考答案

习题四参考答案 一、选择题 1.下面关于串的叙述中,哪一个是不正确的?(B ) A.串是字符的有限序列 B.空串是由空格构成的串 C.模式匹配是串的一种重要运算 D.串既可以采用顺序存储,也可以采用链式存储 2.串的长度是指( A ) A. 串中包含的字符个数 B. 串中包含的不同字符个数 C. 串中除空格以外的字符个数 D. 串中包含的不同字母个数 3.设有两个串p和q,其中q是p的子串,求q在p中首次出现的位置的算法称为( C )A.求子串B.联接C.模式匹配D.求串长 4.设主串的长度为n,模式串的长度为m,则串匹配的KMP算法时间复杂度是( C )。 A. O(m) B. O(n) C. O(n + m) D. O(n×m) 5. 串也是一种线性表,只不过( A )。 A. 数据元素均为字符 B. 数据元素是子串 C. 数据元素数据类型不受限制 D. 表长受到限制 6.设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主进行存储,a11为第一元素, 其存储地址为1,每个元素占一个地址空间,则a85的地址为( B )。 A. 13 B. 33 C. 18 D. 40 7. 有一个二维数组A[1..6, 0..7] ,每个数组元素用相邻的6个字节存储,存储器按字节编址, 那么这个数组占用的存储空间大小是(D )个字节。 A. 48 B. 96 C. 252 D. 288 8.设有数组A[1..8,1..10],数组的每个元素占3字节,数组从内存首地址BA开始以列序 为主序顺序存放,则数组元素 A[5,8]的存储首地址为( B )。 A. BA+141 B. BA+180 C. BA+222 D. BA+225 9. 稀疏矩阵的三元组存储表示方法( B ) A. 实现转置操作很简单,只需将每个三元组中行下标和列下标交换即可 B. 矩阵的非零元素个数和位置在操作过程中变化不大时较有效 C. 是一种链式存储方法 D. 比十字链表更高效 10. 用十字链表表示一个稀疏矩阵,每个非零元素一般用一个含有( A )域的结点表示。 A.5 B.4 C. 3 D. 2 二、填空题 1. 一个串的任意连续字符组成的子序列称为串的子串,该串称为主串。2.串长度为0的串称为空串,只包含空格的串称为空格串。 3. 若两个串的长度相等且对应位置上的字符也相等,则称两个串相等。 4. 寻找子串在主串中的位置,称为模式匹配。其中,子串又称为模式串。 5. 模式串t="ababaab"的next[]数组值为-1001231,nextval[]数组值为-10-10-130。 6. 设数组A[1..5,1..6]的基地址为1000,每个元素占5个存储单元,若以行序为主序顺序 存储,则元素A[5,5]的存储地址为1140。

六年级数学简便计算练习题及答案.doc

一、基础知识。(5小题,共26分。) 1.读音节,找词语朋友。(10分) táo zuì nínɡ zhònɡ wǎn lián ēn cì ()()()() zī rùn kuí wú zhēn zhì miǎn lì ()()()() xuán yá qiào bì hú lún tūn zǎo ()() 2.读一读,加点字念什么,在正确的音节下面画“_”。(4分) 镌.刻(juān juàn)抚摩.(mó mē)扁.舟(biān piān)阻挠.(náo ráo)塑.料(suò sù)挫.折(cuō cuò)归宿.(sù xiǔ)瘦削.(xiāo xuē)3.请你为“肖”字加偏旁,组成新的字填写的空格内。(4分) 陡()的悬崖胜利的()息俊()的姑娘 ()好的铅笔弥漫的()烟畅()的商品 ()遥自在的生活元()佳节 4.按要求填空,你一定行的。(4分) “巷”字用音序查字法先查音序(),再查音节()。按部首查字法先查()部,再查()画。能组成词语()。 “漫”字在字典里的意思有:①水过满,向外流;②到处都是;③不受约束,随便。 (1)我漫.不经心地一脚把马鞍踢下楼去。字意是() (2)瞧,盆子里的水漫出来了。字意是() (3)剩下一个义项可以组词为() 5.成语大比拼。(4分) 风()同()()崖()壁()()无比 和()可()()扬顿()()高()重 ( )不()席张()李() 二、积累运用。(3小题,共20分。) 1.你能用到学过的成语填一填吗?(每空1分) 人们常用来比喻知音难觅或乐曲高妙,用来赞美达芬

(1)鲁迅先生说过:“,俯首甘为孺子牛。” (2),此花开尽更无花。 (3)必寡信。这句名言告诉我们。 (4)但存,留与。 (5)大漠沙如雪,。 3.按要求写句子。(每句2分) (1)闰土回家去了。我还深深地思念着闰土。(用合适的关联词组成一句话)(2)老人叫住了我,说:“是我打扰了你吗?”(改成间接引语) (3)这山中的一切,哪个不是我的朋友?(改为陈述句) (4)月亮升起来了。(扩句) (5)小鱼在水里游来游去。(改写成拟人句) 三、口语交际。(共3分。) 随着“嫦娥一号”卫星的发射成功,作为中华少年的我们,面对祖国的飞速发展的科技,你想到了什么?想说点什么呢? 四、阅读下面短文,回答问题。(10小题,共26分。) 1.课内阅读。(阅读文段,完成练习) 嘎羧来到石碑前,选了一块平坦的草地,一对象牙就像两支铁镐,在地上挖掘起来。它已经好几天没吃东西了,又经过长途跋涉,体力不济,挖一阵就 喘息一阵。嘎羧从早晨一直挖到下午,终于挖出了一个椭圆形的浅坑。它滑下

第4章 数组练习题答案

第4章数组练习题 一、选择题 1.在c语言中,引用数组元素时,其数组下标的数据类型允许是()。 A)整型常量 B)整型表达式C)整型常量或整型表达式 D)任何类型的表达式 2.要说明一个有10个int元素的数组,应当选择语句()。 A) int a[10]; B) int a(10); C) int a[9] D) int a[11] 3.对以下说明语句的正确理解是()。 int a[10]={6,7,8,9,10}; A)将5个初值依次赋给a[1]至a[5] B)将5个初值依次赋给a[0]至a[4] C)将5个初值依次赋给a[6]至a[10] D)因为数组长度与初值的个数不相同,所以此语句不正确 4.已知:int a[10];则对a数组元素的正确引用是()。 A) a[10] B) a[3.5] C) a(5) D) a[10-10] 5.以下对一维整型数组a的正确说明是()。 A) int a(10); B)int n=10,a[n]; C) int n; D)#define SIZE 10; scanf("%",&n); int a[SIZE]; int a[n]; 6.要定义一个int型一维数组art,并使其各元素具有初值89,-23,0,0,0,不正确的定义 语句是()。 A) int art[5]={89,-23}; B) int art[ ]={89,-23}; C) int art[5]={89,-23,0,0,0}; D) int art[ ]={89,-23,0,0,0}; 7.在C语言中,二维数组元素在内存中的存放顺序是()。 A)按行存放 B)按列存放 C)由用户自己定义 D)由编译器决定 8.以下对二维数组a的正确说明是()。 A)int a[3][] B) float a(3,4) C) double a[1][4] D) float a(3)(4) 9.已知:int a[3][4];则对数组元素引用正确的是()。 A)a[2][4] B)a[1,3] C) a[2][0] D) a(2)(1) 10.已知:int a[3][4]={0};则下面正确的叙述是()。 A)只有元素a[0][0]可得到初值0 B)此说明语句是错误的 C)数组a中的每个元素都可得到初值,但其值不一定为0 D)数组a中的每个元素均可得到初值0 11.以下各组选项中,均能正确说明二维实型数组a的是()。 A) float a[3][4]; B) float a(3,4); float a[][4]; float a[3][4]; float a[3][]={{1},{0}}; float a[][]={{0},{0}}; C) f loat a[3][4]; D) float a[3][4]; float a[][4]={{0},{0}}; float a[3][]; float a[][4]={{0},{0},{0}}; float a[][4]; 12.已知:int a[][3]={1,2,3,4,5,6,7};则数组a的第一维的大小是()。 A)2 B)3 C)4 D)无确定值 13.若二维数组a有m列,则在a[i][j]之前的元素个数为()。 A) j*m+i B) i*m+j C) i*m+j-1 D) i*m+j+1 14.要使字符数组str存放一个字符串"ABCDEFGH",正确的定义语句是()。 A) char str[8]={'A','B','C','D','E','F','G','H'};

C语言数组作业编程题答案

1、请先用记事本创建文件original.txt,往其中写入一组已排好序的整型数,今输入一个整数,要求按原来排序的规律将它插入数中,仍写入文件。例如:原来整数依次为4、6、8、41、56、77、102(数据间的分隔符为空格)。若将42插入数中,则插入后整数依次为4、6、8、41、4 2、56、77、102。 答案: #include #include void main() { int a[100]; int ijnumber; int n; FILE *fp; fp=fopen("e:\\C语言\\original.txt""r"); if(fp==NULL) { printf("open error"); exit(0); }

i=0; while(!feof(fp)) { fscanf(fp"%d"&a[i++]); fgetc(fp); } number=i-1; //number中存最后一个数据的下标 fclose(fp); scanf("%d"&n); //以下的while循环用来找n要放的位置循环结束时正好是a[i]的位置i=0; while(n>a[i]) { i++; } //for循环的功能是将a[i]到最后一个元素全后移一个位置 for(j=number;j>=i;j--) a[j+1]=a[j]; //将n放入找到的位置

a[i]=n; number=number+1; //加入n后,元素个数增1,用来控制向文件中的写入次数 fp=fopen("e:\\C语言\\original.txt""w"); if(fp==NULL) { printf("open error"); exit(0); } //写入数据 for(i=0;i<=number-1;i++) fprintf(fp"%d "a[i]); fprintf(fp"%d"a[i]); //最后一个数据后没有空格 fclose(fp); } 2、假定整型数组中的元素值不重复。今输入一个整数,先查找,如数组中存在此元素,则删除,否则不做操作。例如:原来数组的元素依次为14、6、28、41、96、77、89、102。若将96删除,则删除后数组元素依次为14、6、28、41、77、89、102。 答案:

c语言数组典型试题设计含答案

一.选择题(2*20) 【题1】在C 语言中,引用数组元素时,其数组下标的数据类型允许是。A)整型常量B)整型表达式 C)整型常量或整型表达式D)任何类型的表达式 【题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】若有说明:int a[10];则对a 数组元素的正确引用是。 A)a[10] B)a[3.5] C)a(5) D)a[10-10] 【题4】在C 语言中,一维数组的定义方式为:类型说明符数组名; A)[整型常量表达式] B)[整型表达式] C)[整型常量] 或[整型表达式] D)[常量] 【题5】以下能对一维数组a 进行正确初始化的语句是。 A)int a[10]=(0,0,0,0,0); B)int a[10]={}; C)int a[]={0}; D)int a[10]=”10*1”; 【题6】以下对二维数组a 的正确说明是。 A)int a[3][]; B)float a(3,4); C)double a[1][4]; D)float a(3)(4); 【题7】若有说明:int a[3][4];则对a 数组元素的正确引用是。 A)a[2][4] B)a[1,3] C)a[1+1][0] D)a(2)(1) 【题8】若有说明:int a[3][4];则对a 数组元素的非法引用是。 A)a[0][2*1] B)a[1][3] C)a[4-2][0] D)a[0][4] 【题9】以下能对二维数组a 进行正确初始化的语句是。 A)int a[2][]={{1,0,1},{5,2,3}}; B)int a[][3]={{1,2,3},{4,5,6}}; C)int a[2][4]={{1,2,3},{4,5},{6}}; D)int a[][3]={{1,0,1},{},{1,1}}; 【题10】以下不能对二维数组a 进行正确初始化的语句是。 A)int a[2][3]={0}; B)int a[][3]={{1,2},{0}}; C)int a[2][3]={{1,2},{3,4},{5,6}}; D)int a[][3]={1,2,3,4,5,6};

数据结构练习题第三章栈、队列和数组习题及答案

第三章栈、队列和数组 一、名词解释: 1.栈、栈顶、栈底、栈顶元素、空栈 2.顺序栈 3.链栈 4.递归 5.队列、队尾、队头 6.顺序队 7.循环队 8.队满 9.链队10.随机存储结构11.特殊矩阵12.稀疏矩阵13.对称方阵14.上(下)三角矩阵 二、填空题: 1.栈修改的原则是_________或称________,因此,栈又称为________线性表。在栈顶 进行插入运算,被称为________或________,在栈顶进行删除运算,被称为________ 或________。 2.栈的基本运算至少应包括________、________、________、________、________五 种。 3.对于顺序栈,若栈顶下标值top=0,此时,如果作退栈运算,则产生“________”。 4.对于顺序栈而言,在栈满状态下,如果此时在作进栈运算,则会发生“________”。 5.一般地,栈和线性表类似有两种实现方法,即________实现和________实现。 6.top=0表示________,此时作退栈运算,则产生“________”;top=sqstack_maxsize-1 表示________,此时作进栈运算,则产生“________”。 7.以下运算实现在顺序栈上的初始化,请在________处用适当的句子予以填充。 int InitStack(SqStackTp *sq) { ________; return(1);} 8.以下运算实现在顺序栈上的进栈,请在________处用适当的语句予以填充。 Int Push(SqStackTp *sq,DataType x) { if(sp->top==sqstack_maxsize-1}{error(“栈满”);return(0);} else{________________: ________________=x; return(1);} } 9.以下运算实现在顺序栈上的退栈,请在________________用适当句子予以填充。 Int Pop(SqStackTp *sq,DataType *x) {if(sp->top==0){error(“下溢”);return(0);} else{*x=________________; ________________; return(1);} } 10. 以下运算实现在顺序栈上判栈空,请在________________处用适当句子予以填充。 Int EmptyStack(SqStackTp *sq) {if(________________) return(1); else return(0); } 11.以下运算实现在顺序栈上取栈顶元素,请在________________处用适当句子予以填充。 Int GetTop(SqStackTp *sq,DataType *x) {if(________________) return(0);

土木工程测量6_计算题库及参考答案

土木工程测量6_计算题库 及参考答案 -标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

计算题库及参考答案 1、设A 点高程为,欲测设设计高程为的B 点,水准仪安置在A 、B 两点之间,读得A 尺读数a=,B 尺读数b 为多少时,才能使尺底高程为B 点高程。 【解】水准仪的仪器高为=i H +=,则B 尺的后视读数应为 b==,此时,B 尺零点的高程为16m 。 2、在1∶2000地形图上,量得一段距离d =,其测量中误差=d m ±,求该段距离的实地长度D 及中误差D m 。 【解】==dM D ×2000=464m ,==d D Mm m 2000×=200cm=2m 。 3、已知图中AB 的坐标方位角,观测了图中四个水平角,试计算边长B →1,1→2,2→3,3→4的坐标方位角。 【解】=1B α197°15′27″+90°29′25″-180°=107°44′52″ =12α107°44′52″+106°16′32″-180°=34°01′24″ =23α34°01′24″+270°52′48″-180°=124°54′12″ =34α124°54′12″+299°35′46″-180°=244°29′58″ 4、在同一观测条件下,对某水平角观测了五测回,观测值分别为:39°40′30″,39°40′48″,39°40′54″,39°40′42″,39°40′36″,试计算: ① 该角的算术平均值——39°40′42″; ② 一测回水平角观测中误差——±″; ③ 五测回算术平均值的中误差——±″。 5、在一个直角三角形中,独立丈量了两条直角边a ,b ,其中误差均为m ,试推导由a ,b 边计算所得斜边c 的中误差c m 的公式 【解】斜边c 的计算公式为22b a c +=,全微分得 db c b da c a bdb b a ada b a d c +=+++=--2)(212)(2121 222 1 22 应用误差传播定律得2 22 222222222m m c b a m c b m c a m c =+=+= 6、已知=AB α89°12′01″,=B x ,=B y ,坐标推算路线为B →1→2,测得坐标推算路线的右角分别为=B β32°30′12″,=1β261°06′16″,水平距离分别为=1B D ,=12D ,试计算1,2点的平面坐标。 【解】 1) 推算坐标方位角 =1B α89°12′01″-32°30′12″+180°=236°41′49″ =12α236°41′49″-261°06′16″+180°=155°35′33″ 2) 计算坐标增量 =?1B x ×cos236°41′49″=, =?1B y ×sin236°41′49″=。 =?12x ×cos155°35′33″=, 图 推算支导线的坐标方位角

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步后的排列 41 1 14 2 32 4 23 3 【答案】l、2、4、3 4 用"选择排序法"对n个数据排序,需要进行n-1步。其中第k步的任务是:在第k个数据到第n个数据中寻找最小数,和第k个数据交换。现在假设有4个数据:4、1、3、2要排序,则利用"冒泡排序法"执行第2步后的结果是______________________。 【分析】开始排序前的排列为:413 2 执行第1步后的排列为:143 2 执行第2步后的排列为:123 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'};

数组习题及参考答案

第七章数组 一、单项选择题 1.若有说明“int a[3][4]={0};”,则下面正确的是_____。 A.只有元素a[0][0]可得到初值0 B. 此说明语句不正确 C. 数组a各元素都可得到初值,但其值不一定是0 D. 数组a中每个元素均可得到初值0 2.以下不能正确定义二维数组的选项是_____。 A. int a[2][2]={{1},{2}} B. int a[2][2]={{1},2,3} C. int a[2][]={{1,2},{3,4}} D. int a[][2]={1,2,3,4} 3.在下列对字符数组进行初始化中正确的是_____。 A.char s1[]=”abcd” B.char s2[3]=”xyz” C.char s3[][]={…a?,?x?,?y?} D.char s4[2][3]={“xyz”,”mnp”} 二、写出下列程序的运行结果 有以下程序: 1. #include int main () {

int a[]={4,0,2,3,1},i,j,t; for(i=1;i<5;i++) { t=a[i];j=i-1; while(j>=0&&t>a[j]) { a[j+1]=a[j]; a[j]=t; j--; } } for(i=0;i<5;i++) { cout<

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() {

数组典型例题及参考答案

第7章数组 7-1输入一个正整数n(1≤n≤10),再输入n个整数 (1)输出最大数和最小数,并输出平均值。 (2)将最小数与第一个数交换,最大数与最后一个数交换,然后输出交换后的结果。 (3)输出所有比平均值大的数。 (4)找到最接近平均值的数。(提示:考虑差的绝对值)

/* 将最小数与第一个数交换,最大数与最后一个数交换*/ t=a[0]; a[0]=a[q]; a[q]=t; t=a[N-1]; a[N-1]=a[p]; a[p]=t; printf("After exchange: "); for(i=0; iave) printf("%d ", a[i]); /* 找到最接近平均值的数*/ printf("\nThe number closest to the average is: "); sub = a[0]>ave? a[0]-ave: ave-a[0]; p=0; for(i=1; iave? a[i]-ave: ave-a[i]) < sub ) { sub = a[i]>ave? a[i]-ave: ave-a[i]; p=i; } } printf("%d.", a[p]); } Output Please input 10 integers: 17 34 -11 2 5 10 7 -9 0 25 /* input */ The maximum is: 34, the minimum is: -11, the average is 8.00 After exchange: -11 25 17 2 5 10 7 -9 0 34 Larger than the average: 25 17 10 34 The number closest to the average is: 7 7-2输入一个日期(按照year-month-day格式),计算该日期为当年的第几天。 (提示:注意闰年)

相关文档
最新文档