当前位置:文档之家› 数组练习题及答案

数组练习题及答案

数组练习题及答案
数组练习题及答案

第五章数组练习题及答案

一、选择题

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;

while(x[i]!='\0'&&y[i]!='\0')

if(x[i]==y[i]) printf("%c",《1》);

else i++;

A、x[i++]

B、y[++i]

C、x[i]

D、y[i]

6、有下面的程序段,则()

char a[3],b[]="china";

a=b;

printf("%s",a);

A、运行后将输出China

B、运行后将输出Ch

C、运行后将输出Chi

D、编译出错

7、下面程序的运行结果是()

main()

{ char ch[7]={"12ab56"};

int i,s=0;

for(i=0;ch[i]>='0'&&ch[i]<='9';i+=2)

s=10*s+ch[i]-'0';

printf("%d\n",s);

}

A、1

B、1256

C、12ab56

D、1

2

5

6

8、定义如下变量和数组:则下面语句的输出结果是()

int k;

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

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

printf("%d",a[k][2-k]);

A、3 5 7

B、3 6 9

C、1 5 9

D、1 4 7

9、下面程序段的运行结果是()

char c[5]={'a','b','\0','c','\0'};

printf("%s",c);

A、'a''b'

B、ab

C、ab c

D、abc

10、若有说明:int a[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是()

A、2

B、3

C、4

D、无确定值

11、下面程序的运行结果是()

main()

{ int a[6],i;

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

{ a[i]=9*(i-2+4*(i>3))%5;

printf("%2d",a[i]);

}

}

A、-4 0 4 0 4

B、-4 0 4 0 3

C、-4 0 4 4 3

D、-4 0 4 4 0

12、下面程序的运行结果是()

main()

{int a[6][6],i,j;

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

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

a[i][j]=(i/j)*(j/i);

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

{ for(j=1;j<6;j++)

printf("%2d",a[i][j]);

printf("\n");

}

}

A、1 1 1 1 1

B、0 0 0 0 1

C、1 0 0 0 0

D、1 0 0 0 1

1 1 1 1 1 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0

1 1 1 1 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0

1 1 1 1 1 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0

1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1

13、下述对C语言字符数组的描述中错误的是()

A、字符数组可以存放字符串。

B、字符数组的字符串可以整体输入、输出。

C、可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值。

D、不可以用关系运算符对字符数组中的字符串进行比较。

14、判断字符串s1是否大于字符串s2,应当使用()

A、if(s1>s2)

B、if(strcmp(s1,s2))

C、if(strcmp(s2,s1)>0)

D、if(strcmp(s1,s2)>0)

15、下面程序(每行程序前面的数字表示行号):()

1 main()

2 {

3 int a[3]={3*0};

4 int i;

5 for(i=0;i<3;i++) scanf("%d",&a[i]);

6 for(i=1;i<3;i++) a[0]=a[0]+a[i];

7 printf("%d\n",a[0]);

8 }

A、第3行有错误

B、第7行有错误

C、第5行有错误

D、没有错误

16、下面程序的功能是从键盘输入一行字符,统计其中有多少个单词,单词之间用空格分隔。横线处应填入()

main()

{char s[80],c1,c2=' ';

int i=0,num=0;

gets(s);

while(s[i]!='\0')

{c1=s[i];

if(i==0) c2=' ';

else c2=s[i-1];

if(《1》) num++;

i++;

}

printf("%d",num);

}

A、c1==' '&&c2==' '

B、c1!=' '&&c2==' '

C、c1==' '&&c2!=' '

D、c1!=' '&&c2!=' '

17、有字符数组a[80]和b[80],则正确的输出语句是()

A、puts(a,b);

B、printf("%s,%s",a[],b[]);

C、putchar(a,b);

D、puts(a),puts(b);

18、下面描述正确的是()

A、两个字符串所包含的字符个数相同时,才能比较字符串。

B、字符个数多的字符串比字符个数少的字符串大.

C、字符串“STOP ”与“STOP”相等。

D、字符串“That”小于字符串“The”

19、有两个字符数组a、b,则以下正确的输入语句是()

A、gets(a,b);

B、scanf("%s%s",a,b);

C、scanf("%s%s",&a,&b);

D、gets("a"),gets("b");

20、以下不正确的定义语句是()

A、double x[5]={2.0,4.0,6.0,8.0,1.0};

B、int y[5]=}{0,1,2,3,4,5,6}

C、char c1[]={'1','2','3','4','5'};

D、char c2[]={'\x10','\xa','\x8'};

21、调用函数时,若实参是一个数组名,则向函数对应的形参传送的是()

A、数组的长度

B、数组的首地址

C、数组第一个元素的值

D、整个数组元素的值

22、下面程序段的运行结果是()

char s[6]; s=”abcd”; printf(“\”%s\”\n”,s);

A、“abcd”

B、”abcd “

C、\”abcd\”\n

D、编译出错

23、(多项选择)以下不能对二维数组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}};

24、(多项选择)若有说明:int a[3][4];则对a数组元素不能正确引用是()

A.a[2][4] B、a[1,3] C、a[1+1][0] D、a(2)(1)

25、(多项选择)若有说明“static int a[3][4]={0};”则下面正确的叙述是()

A、只有元素:a[0][0]可得到初值0

B、此说明语句不正确

C、数组a中各元素都可得到初值,但其值不一定为0

D、数组a中每个元素均可得到初值0

26、以下对一维整型数组的正确说明是()

A、int a(1);

B、int n=10,a[n];

C、int n;scanf(“%d”,&n);int a[n];

D、#define SIZE 10 int a[SIZE];

27、有以下程序,其输出结果是()

void swap1(int c[])

{ int t;

t=c[0];c[0]=c[1];c[1]=t;

}

void swap2(int c0,int c1)

{ int t;

t=c0;c0=c1;c1=t;

}

main( )

{ int a[2]={3,5},b[2]={3,5};

swap1(a); swap2(b[0],b[1]);

printf(“%d%d %d %d\n”,a[0],a[1],b[0],b[1]);

}

A、5 3 5 3

B、5 3 3 5

C、3 5 3 5

D、3 5 5 3

28、以下程序执行后的输出结果是()

int f(int b[][4])

{ int i,j,s=0;

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

{ i=j;

if(i>2) i=3-j;

s+=b[i][j];

}

return s;

}

main( )

{int [4][4]={{1,2,3,4},{0,2,4,5},{3,6,9,12},{3,2,1,0}}; printf(“%d\n”,f(a));}}

A、12

B、11

C、18

D、16

29、执行下列程序后输出的结果是()

int a[3][3]={{1},{2},{3}};

int b[3][3]={1,2,3};

main()

{printf(″﹪d \ n″,a[1][0] + b[0][0]);}

A、0

B、1

C、2

D、3

30、以下程序运行后,输出结果是()

main()

{ int y=18,i=O,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、1000

B、10010

C、00110

D、10100

二、填空题

1、设数组a中的元素均为正整数,以下程序是求a中偶数的个数和偶数的平均值。请填空。(填空时数组元素请用数组表示方法)

main()

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

int k,s,i; float ave;

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

{if(a[i]%2!=0) 《1》;

s+=《2》;k++;

}

if(k!=0) { ave=s/k; printf("%d,%f",k,ave); }

}

2、下面程序的运行结果是()

main()

{int num_list[]={6,7,8,9};

int k,j,b,u=0,m=4,w;

w=m-1;

while(u<=w)

{j=num_list[u];

k=2;b=1;

while(k<=j/2&&b) b=j%++k;

if(b) printf("%d",num_list[u++]);

else {num_list[u]=num_list[w]; num_list[w--]=j; }

}

}

3、下面程序的功能是将字符数组a[6]={'a','b','c','d','e','f'}变为a[6]={'f','a','b','c','d','e'}。请填空。(注:填空时数组元素请用数组表示方法)

main()

{char t,a[6]={'a','b','c','d','e','f'};

int i;

《1》;

for(《2》;i>0;i--) a[i]=a[i-1];

a[0]=t;

for(i=0;i<=5;i++) printf("%c",a[i]);

}

4、下面程序的运行结果是()

main()

{int i;

char a[]="Time",b[]="Tom";

for(i=0;a[i]!='\0'&&b[i]!='\0';i++)

if(a[i]==b[i])

if(a[i]>='a'&&a[i]<='z') printf("%c",a[i]-32);

else printf("%c",a[i]+32);

else printf("*");

}

5、下面程序的运行结果是()

main()

{int i=1;n=3,j,k=3;

int a[5]={1,4,5};

while(i<=n&&k>a[i]) i++;

for(j=n-1;j>=i;j--) a[j+1]=a[j];

a[i]=k;

for(i=0;i<=n;i++) printf("%2d,",a[i]);

}

6、当从键盘输入18并回车后,下面程序的运行结果是()

main()

{int x,y,i,a[8],j,u,v;

scanf("%d",&x);

y=x;i=0;

do

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

}while(y>=1);

for(j=i-1;j>=0;j--) printf("%d",a[j]);

}

7、下面程序的运行结果是()

main()

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

int k,s,i;

float ave;

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

{if(a[i]%2==0)continue;

s+=a[i]; k++;}

if(k! =0) {ave=s/k; printf("The number is:%d,The average is:%f\n",k,ave); }

}

8、若有以下输入(表示回车),则下面程序的运行结果是()

3 1 2 3 2 2 2 1 1 3 0

main()

main()

{int a[4],x,i;

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

a[i]=0;

scanf("%d",&x);

while(x>0)

{a[x]+=1;scanf("%d",&x); }

for(i=1;i<=3;i++) printf("a[%d]=%d,",i,a[i]);

}

9、当运行以下程序时,从键盘输入:

BOOK

CUT

GAME

PAGE(表示回车),则下面程序的运行结果是()

#include "stdio.h"

#include "string.h"

main()

{int i;

char str[10],temp[10]="Control";

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

{gets(str);

if(strcmp(temp,str)<0) strcpy(temp,str);

}

puts(temp);

}

10、当运行以下程序时,从键盘输入

girl

boy(表示回车),则下面程序的运行结果是()

#include "stdio.h"

#include "string.h"

main()

{char a[2][80],t;

int i,j,m,n,le,max;

for(i=0;i<=1;i++) gets(a[i]);

t=a[0][0];

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

{le=strlen(a[i]);

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

if(a[i][j]>t) {max=a[i][j]; m=i; n=j; }

}

printf("%c %d %d\n",max,m,n);

}

11、下面程序的功能是在三个字符串中找出最小的。请填空(注:填空时请用数组元素表示方法)。

#include "stdio.h"

#include "string.h"

main()

{char s[20],str[3][20];

int i;

for(i=0;i<3;i++) gets(str[i]);

strcpy(s, (《1》)str[0]:str[1]);

if(strcmp(str[2],s)<0) strcpy(s,str[2]);

printf("%s\n",《2》);

}

12、下面程序段的运行结果是()

char ch[]="600";

int a,s=0;

for(a=0;ch[a]>='0'&&ch[a]<='9';a++) s=10*s+ch[a]-'0';

printf("%d",s);

13、下面程序的运行结果是()

main()

{ int a[3][3],i,j;

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

for(j=1;j<3;j++) a[i][j]=(i/j)*(j/i);

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

for(j=1;j<3;j++) printf("%d,",a[i][j]));

}

14、下面程序段将输出computer,请填空。

char c[ ]="It's a computer";

for(i=0;i<=《1》;i++)

printf("%c",c[i《2》]);

15、下面程序的运行结果是()

main()

{ int a[9]={0,6,12,18,42,44,52,67,94};

int x=52,i,n=9,m;

i=n/2+1; m=n/2;

while(m!=0)

{if(x

else if(x>a[i]) {i=i+m/2+1;m=m/2;}

else break;

}

printf("%d",i);

}

三、判断题

1、有以下说明语句:int a[10]={6,7,8,9,10};则将5个初值依次赋给a[1]至a[5]。()

2、若有说明:int a[][4]={0,0};则只有元素a[0][0]和a[0][1]可得到初值0。()

3、int a[]={0};是对一维数组a进行正确初始化的语句。()

4、有以下语句是正确的。char s[10]; s="China";()

5、若有说明:int a[3][4]={0};则数组a中每个元素均可得到初值0。()

6、float a[3,4];是对二维数组a的正确定义。()

7、在C语言中,引用数组元素时,其数组下标的数据类型允许是整型常量或整型表达式。()

8、以下是对一维整型数组a的正确定义:int n; scanf("%d",&n); int a[n]; ()

9、若有定义:int a[10];则a[10]是对a数组元素的正确引用。()

10、若有以下定义:static int a[3][4];则数组a中各元素不能得到确定的值。()

11、int a[][3]={{1,2},{3}};是能对二维数组a进行正确的初始化的语句。()

12、有以下定义和语句:char s1[10]="China"; printf("%d",strlen(s1));输出结果为5。()

四、程序填空

1、将一个数列头尾颠倒。设该数列为1,3,5,7,9,11,13,15,17,19。要求19,17,15,13,11,9,7,5,3,1次序存放并输出。要求写一函数实现对包含任意个数据的颠倒处理。

void f2(char a[],int n)

{int i,t;

for(《1》;i

{ t=a[i]; a[i]=a[n-i]; a[n-i]=t; }

}

2、编写串连接函数strcat。(注:填空请用数组表示方法)

void strcat(char s1[],char s2[])

{int i,j;

for(i=0;《1》;i++);

for(j=0;《2》;j++) s1[i+j]=s2[j];

s1[i+j]=《3》

}

3、下面程序用“两路合并法”把两个已按升序排列的数组合并成一个升序数组。请填空。(注:填空请用数组表示方法)

main()

{int a[3]={5,9,19};

int b[5]={12,24,26,37,48};

int c[10],i=0,j=0,k=0;

while(i<3&&j<5)

if(a[i]>b[j]) {《1》;k++;j++;}

else{《2》;k++;i++;}

while(i<3) {《3》;i++;k++;}

while(j<5) {《4》;k++;j++;}

}

4、用冒泡法进行排序函数如下,请填空。

void bubble(int a[ ],int n)

{int i,j,t,temp;

for(《1》;i<=n-1;i++)

{t=n《2》;

for(j=0;j<=t-1;j++)

if(a[j]>a[j+1]) {temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; }

}

}

5、下面程序的功能是输入5个整数,找出最大数和最小数所在的位置,并把二者对调,然后输出调整后的5个数。请填空。

main()

{int a[5],max,min,i,j,k;

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

scanf("%d",&a[i]);

《1》a[0];

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

if(a[i]

《3》a[0];

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

if(a[i]>max){max=a[i];《4》;}

a[k]=max;a[j]=min;

printf("\nThe position of min is :%d\n",k);

printf("The position of max is :%d\n",j);

for(i=0;i<5;i++) printf("%5d",a[i]);

}

6、有三行文字,找出其中共有多少个空格、多少个单词。规定单词间以一个或多个空格相隔。如果一个单词恰好在行末结束,则下一行开头应有空格。句号或逗号后面

亦应有空格。(注:填空请用数组表示方法)

main()

{char a[3][80];

int i,j,wd=0,bk=0,《1》;

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

for(j=0;j<80;j++) scanf("%c",&a[i][j]);

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

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

{ if((a[i][j]>='a'&&a[i][j]<='z')||(a[i][j]>='A'&&a[i][j]<='Z')&&(《2》))

{wd=wd+1;flag=1;}

if(《3》) {bk=bk+1;flag=0;}

}

}

7、删除一个字符串中的第n个字符。(注:填空请用数组表示方法)

void del_str(char a[],int n)

{《1》;

}

8、下面程序可求出矩阵a的两条对角线上的元素之和,请填空。

main()

{int a[4][4]={1,3,6,7,9,11,14,15,0,19,13,2,5,8,12,21};

int sum1=0,sum2=0,i,j;

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

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

if(i《1》) sum1=sum1+a[i][j];

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

for(《2》;j>=0;j--)

if(i+j==《3》) sum2=sum2+a[i][j];

printf("%d,%d",sum1,sum2);

}

9、下面程序的功能是检查一个二维数组是否对称,(即:对所有i和j都有a[i][j]=a[j][i])。请填空。

main()

{int a[4][4],i,j,found=0;

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

for(j=0;j<4;j++) scanf("%d",&a[i][j]);

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

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

if(a[i][j]《1》) {《2》;break;}

if(found==1) printf("Yes");

else printf("No")

}

10、设计一个函数,有一个数组有n个数据,已按由小到大排序好,要求输入一个数,把它插入到原有数列中,而且仍然保持有序。

void f3(char a[],int n,int x)

{int i=0,j,flag=0;

while((i

{if(a[i]>x) 《1》;

i++;

}

if(flag==1) for(j=《2》;j<=《3》;j--) a[j+1]=a[j];

else a[n]=x;

}

11、下面函数是用折半查找方法在数组a中查找x。

void binary_search(int a[],int n,int x)

{int mid,top,bot,i,find;

top=0; bot=n-1; find=0;

do

{mid=(top+bot)/2;

if(x==a[mid]) 《1》;

else if(x

else if(x>a[mid]) 《3》=mid+1;

}while((top<=bot)&&(find==0));

if(find==1) printf("been found");

else printf("not been found");

}

12、下面程序将二维数组a的行和列元素互换后存到另一个二维数组b中,请填空。

main()

{int a[2][3]={{1,2,3},{4,5,6}}, b[3][2],i,j;

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

for(j=0;j<=2;j++)《1》;

for(i=0;i

{ for(j=0;j

printf(“\n”);

}

14、有n个串,要求按字母先后顺序排列,并按序输出。(注:填空请用数组表示方法)

main()

{char c[10][80];

int n,i,j,p;

scanf("%d",&n);

for(i=0;i

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

{《2》;

for(j=i《3》;j

if(《4》>0) p=j;

if(p!=i)

{strcpy(t,c[p]);

strcpy(c[p],c[i]);

strcpy(c[i],t);

}

}

for(i=0;i

}

五、综合应用

1、插入法:有n个数,已按由小到大顺序排列好,要求输入一个数据,把它插入到原有数列中,而仍然保持有序。

void f(int a[ ],int n,int x)

{int I,j;

while(a[i]<=x && i

i++;

If(a[i]>x)

{for(j=n-1;j>=I;j--)

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

a[i]=x;

}

else

a[i]=x;

}

改写:

void f(int a[ ],int n,int x)

{int I,j;

while(a[i]<=x && i

i++;

for(j=n-1;j>=I;j--)

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

a[i]=x;

}

2、插入法:下面程序的运行结果是()。

main()

{ int I=0,n=3,j,k=3;

int a[5]={1,4,5};

while(I<=n&&k>a[I]) I++;

for(j=n-1;j>=I;j--)

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

a[i]=k;

for(I=0;I<=n;I++)

printf(“%3d”,a[i]);

}

3、插入法:若有以下程序段:

…………..

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+1]=a[j];j--;}

a[j+1]=t;

}

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

printf(“%d ”,a[i]);

…………

则该程序段的输出结果是()。

4、下面程序用“两路合并法”把两个已按升序排列的数组合并成一个升序数组。请填空。

main()

{ int a[3]={5,9,19};

int b[5]={12,24,26,37,48};

int c[10],I=0,j=0,k=0;

while(I<3&&j<5)

if(__________)

{c[k]=b[j];k++;j++;}

else

{c[k]=a[i];k++;I++;}

while(________)

{ c[k]=b[j];k++;j++;}

while(________)

{ c[k]=a[i];k++;I++;}

for(I=0;I

printf(“%3d”,c[i]);

}

5、下面程序用“顺序查找法”查找数组a中是否存在某一关键字。请填空。

main()

{int a[8]={25,57,48,37,12,92,86,33};

int I,x;

scanf(“%d”,&x);

for(I=0;I<8;I++)

if(x==a[I])

{printf(“Found! The index is :%d\n”,--i);____________;} if(____________)

printf(“Can?t found!”);

}

6、要求写一函数,实现对包含任意个数据的数列实现头尾颠倒。

void f(int a[ ],int n)

{int I,t;

for(I=0;I

{

t=a[i];a[i]=a[n-i];a[n-i]=t;

}

}

7、下面程序的运行结果是()。

main()

{int a[10]={1,2,2,3,4,3,4,5,1,5};

int n=0,I,j,c,k;

for(I=0;I<10-n;I++)

{c=a[i];

for(j=I+1;j<10-n;j++)

if(a[j]==c)

{for(k=j;k<10-n;k++)

a[k]=a[k+1];

n++;

}

}

for(I=0;I<10-n;I++)

printf(“%d”,a[i]);

}

8、当从键盘输入18并回车后,下面程序的运行结果是()。

main()

{

int x,y,I,a[8],j,u,v;

scanf(“%d”,&x);

y=x;I=0;

do

{ u=y/2;

a[i]=y%2;

I++;y=u;

}while(y>=1);

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

printf(“%d”,a[j]);

}

9、有17个人围成一圈,编号为0—16,从第0号的人开始从1报数,凡报到3的倍数离开圈子,然后再数下去,直到最后只剩下一个人为止,问此人原来的位置是多少号。

main()

{int a[17],I,t=0,s=0;

for(I=0;I<17;I++)

a[i]=1;

while(t<=16)

{ for(I=0;I<17;I++)

if(a[i]==0) {s=s+1;

if(s%3==0) {a[i]=0;t=t+1;}

}

}

for(I=0;I<17;I++)

if(a[i]==1) printf(“%d”,i);

}

10、将一个二维数行、列互换后输出。

Void f(int a[ ],int n,int m ,int b[ ])

{int I,j;

for(I=0;I

for(j=0;j

b[j*n+i]= a[I*m+j];

for(j=0;j

{

for(I=0;I

printf(“%4d”,b[j*n+i]);

p rintf(“\n”);

}

}

11、求矩阵对角线元素之和

main()

{int a[3[3]={1,3,6,7,9,11,14,15,17},sum=0,I,j;

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

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

if((I==j)||(I+j==3)) sum=sum+a[I][j];

}

12、下面程序的功能是检查一个二维数组是否对称(即:对所有I和j 都有a[I][j]=a[j][I])。请填空。

main()

{int a[4][4]={1,2,3,4,2,2,5,6,3,5,3,7,4,6,7,4};

int I,j,found=0

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;

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

C语言练习题集(带答案解析)

精品文档 1. ( A )是构成C 语言程序的基本单位。 A 、函数 B 、过程 C 、子程序 D 、子例程 2. C 语言程序从 ____ C ________ 开始执行。 A ) 程序中第一条可执行语句 B )程序中第一个函数 C )程序中的main 函数 D )包含文件中的第一个函数 3、以下说法中正确的是( C )。 A 、 C 语言程序总是从第一个定义的函数开始执行 B 、 在 C 语言程序中,要调用的函数必须在 main ()函数中定义 C 、 C 语言程序总是从 main ()函数开始执行 D 、 C 语言程序中的 main ()函数必须放在程序的开始部分 4. 下列关于C 语言 的说法错误的是( B ) 。 A ) C 程序的工作过程是编辑、编译、连接、运行 B ) C 语言不区分大小写。 C ) C 程序的三种基本结构是顺序、选择、循环 D ) C 程序从main 函数开始执行 5. 下列正确的标识符是(C )。 A. -a1 B.a[i] C.a2_i 6. 下列C 语言用户标识符中合法的是( B )。 A) 3ax B)x C)case D)-e2 E)u nion 7. 下列四组选项中,正确的 C 语言标识符是 (C )。 A ) %x B ) a+b C ) a123 D ) 8、 下列四组字符串中都可以用作 A 、print _3d db8 aBc B C 、str_1 Cpp pow while D 9. C 语言中的简单数据类型包括( A 、整型、实型、逻辑型 C 、整型、字符型、逻辑型 C 语言程序中的标识符的是( A ) 、I\am one_half start$it 3pai 、Pxq My->book line# His.age D )。 B 、整型、实型、逻辑型、字符型 D 、整型、实型、字符型 10. 在C 语言程序中,表达式 5%2的结果是—C_ A)2.5 B)2 C)1 D)3 11. 如果int a=3,b=4 ;则条件表达式"a

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。 答案:

数组习题及参考答案

第七章数组 一、单项选择题 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<

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

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

23 int InitStack(SqStackTp *sq) 24 { ________; 25 return(1);} 26 8.以下运算实现在顺序栈上的进栈,请在________处用适当的语句27 予以填充。 28 Int Push(SqStackTp *sq,DataType x) 29 { if(sp->top==sqstack_maxsize-1}{error(“栈满”);return(0);} 30 else{________________: 31 ________________=x; 32 return(1);} 33 34 } 35 9.以下运算实现在顺序栈上的退栈,请在________________用适当36 句子予以填充。 37 Int Pop(SqStackTp *sq,DataType *x) 38 {if(sp->top==0){error(“下溢”);return(0);} 39 else{*x=________________; 40 ________________; 41 return(1);}

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

数组典型例题及参考答案

第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格式),计算该日期为当年的第几天。 (提示:注意闰年)

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

第三章栈、队列和数组 一、名词解释: 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);

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'};

《C++数组》习题参考答案

《C++数组》习题 学号姓名 一、选择题 1、下列对字符数组进行初始化的语句正确的是 A A.char a[]= "Hello"; B.char a[][]= {'H','e','l','l','o'}; C.char a[5]="Hello"; D.char a[2][5]= {"Hello","World"}; 2、以下一维数组a的正确定义是 D A.int a(10) ; B.int n=10,a[n]; C.int n; D.#define size 10 cin>>n; int a[size]; int a[n]; 3、以下对二维数组a进行不正确初始化的是 C 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); 4、执行以下程序后,s的值为 A int a[]={5,3,7,2,1,5,4,lO); int s=0,k; for(k=0;k<8;k+=2) s+=*(a+k); A.17 B.27 C.13 D.无定值 5、为了判断两个字符串sl和s2是否相等,应当使用 D A.if (s1==s2)

B.if (s1=s2) C.if(strcpy(S1,s2)) D.if(strcmp(s1,s2)==O) 6、有定义int a[2][5];,若a[0][1]的地址为x,则a[0][O]、a[1][3]地址分别为(假设一个整型数据占用两个字节的内存空间): A A.x-2,x+14 B.x-1,x+7 C.x+1,x+7 D.x-1,x+14 7、若有定义float a[m][n];,且a[1][1]的地址为x,每个float元素占用4个字节,则a[il[j]的地址为 A A.x+4*(i-1)*n+4*(j-1) B.x+(i-1)*n+(j-1) C.x+4*(i-1)*j+(j-1) D.x+4*i*j+4*j 二、填空题 1、char st[20] = "SEU\0\t\\"; cout<

C语言数组练习及答案

C语言数组练习及答案集团文件版本号:(M928-T898-M248-WU2669-I2896-

第四部分数组 4.1 选择题 1. 以下关于数组的描述正确的是(c )。 A. 数组的大小是固定的,但可以有不同的类型的数组元素 B. 数组的大小是可变的,但所有数组元素的类型必须相同 C. 数组的大小是固定的,所有数组元素的类型必须相同 D. 数组的大小是可变的,可以有不同的类型的数组元素 2. 以下对一维整型数组a的正确说明是(d )。 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. 在C语言中,引用数组元素时,其数组下标的数据类型允许是(c )。 A. 整型常量 B. 整型表达式 C. 整型常量或整型表达式 D. 任何类型的表达式 4. 以下对一维数组m进行正确初始化的是(c )。 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]的地址的是(c )。 A. &bb[0]+1 B. &bb[1] C. &bb[0]++ D. bb+1 6. 假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是(d )。 A. 3 B. 6 C. 10 D. 20 7. 若有以下说明: int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}; char c='a',d,g;

广技师C语言复习题5.练习(数组)(有答案)

一、选择题 1. 以下对一维整型数组a的正确说明是。 A.int a(10); B.int n=10, a[n]; C.int n; scanf(“%d”,&n); int a[n]; D.#define SIZE 10 int a[SIZE] 2. 若有说明:int a[10]; ,则对a数组元素的正确引用是。A.a[10] B.a[ 3.5] C.a(5) D.a[10-10] 4. 以下对二维数组a的正确说明是。 A.int a[3][ ]; B.float a(3,4); C.double a[ ][4]; D.float a(3)(4); 5. 若有说明:int a[3][4]; 则对a数组元素的正确引用是。A.a[3][4] B.a[1, 3] C.a[1+1][0] D.a(2)(1) 6. 以下能对二维数组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,0},{ },{1,1}}; 7. 下面程序段(每行代码前面的数字表示行号)。 1 int a[3]={3*0}; 2 int i 3 for(i=0; i<3; i++) scanf(“%d”,&a[i]);

4 for(i=1; i<3; i++) a[0]=a[0]+a[i]; 5 printf(“%d\n”,a[0]); A.第1行有错误B.第5行有错误 C.第3行有错误D.没有错误 8. 若有定义float x[4]={1.3, 2.4, 5.6},y=6; 则错误的语句是。A.y=x[3]; B.y=x+1; C.y=x[2]+1 D.x[0]=y; 9. 定义如下变量和数组: int k; int a[3][3]={1,2,3,4,5,6,7,8,9}; 则下面语句的输出结果是。 for(k=0; k<3; k++) printf(“%d”,a[k][2-k]); A.3 5 7 B.3 6 9 C.1 5 9 D.1 4 7 11. 下面是对数组s的初始化,其中错误的语句是。 A.char s[5]={“abc”}; B.char s[5]={‘a’, ‘b’, ‘c’}; C.char s[5]= “”; D.char s[5]= “abcde”; 12. 下面程序段的运行结果是。(□表示1个空格) char c[5]={'a','b','\0','c','\0'}; printf("%s",c); A.'a''b' B.ab C.ab□c D.ab□ 13. 有两个字符数组a、b,则以下正确的输入格式是。 A.gets(a,b); B.scanf(“%s%s”,a,b); C.scanf(“%s%s”,&a,&b); D.gets(“a”),gets(“b”);

C语言复习题及答案 第七章 数组

第七章数组 (8学时) 学习目的与要求: 1 、重点掌握一维数组的定义和引用; 2 、基本掌握二维数组的定义和引用; 3 、重点掌握字符型数组的定义与引用; 4 、能正确使用字符串处理函数; 5 、学会使用数组解决实际问题。 重点: 1 、一维数组的定义与引用; 2 、二维数组的定义与引用; 3 、字符数组的定义与引用; 第1讲 知识归纳: 1、一维数组的定义:类型说明符数组名[ 常量表达式] ; (1) (1)数组名后必须用方括弧[ ] ,用其他括弧均错误; (2) 方括弧中的常量表达式表示数组的元素个数; (3) 方括弧中的常量表达式,必须是能计算出具体数值,且不改变的常量,不能是变量; 2、一维数组的引用: 数组名[ 下标] //下标从0开始,可以是整型常量或整型表达式; (1) 注意:数组元素引用时,不要超出数组范围; 如int a[10] ; //可以引用的数组元素为a[0]……a[9] , a[10] 不是本数组元素; 3、一维数组的初始化: (1) (1)可以在定义数组后,立刻赋值;如int a [3] = { 1,3, 5} ; 但下面这样是错误的: int a[3] ; a = { 1,3, 5} ; (2) (2)可以给数组的部分元素赋值,不赋值的元素,默认值为int 0, char, …?, float 0.0 ; 如int a [3]= {1,3 } ; //a[0] =1 ; a[1]= 3 ; a[2]= 0 ; (3) 在对数组全部元素赋初值时,可以不指定元素个数; (4) 可以在循环控制下,给数组各元素赋值; 如:int a[10] ; for ( i=0 ; i <10 ;i ++ ) a [ i ] = i ; 基础训练(A) 一、选择题 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、以下对数组的正确定义是:()。 A) float b[5.0] B) float b[5] C) float b(5) D) float b[] 4、对以下说明语句的正确理解是()。 int a[10]={6,7,8,9,10}; A)将5个初值依次赋给a[1]至a[5]

C语言数组练习及答案

第四部分数组 4.1 选择题 1. 以下关于数组的描述正确的是(c )。 A. 数组的大小是固定的,但可以有不同的类型的数组元素 B. 数组的大小是可变的,但所有数组元素的类型必须相同 C. 数组的大小是固定的,所有数组元素的类型必须相同 D. 数组的大小是可变的,可以有不同的类型的数组元素 2. 以下对一维整型数组a的正确说明是(d )。 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. 在C语言中,引用数组元素时,其数组下标的数据类型允许是(c )。 A. 整型常量 B. 整型表达式 C. 整型常量或整型表达式 D. 任何类型的表达式 4. 以下对一维数组m进行正确初始化的是(c )。 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]的地址的是(c )。 A. &bb[0]+1 B. &bb[1] C. &bb[0]++ D. bb+1 6. 假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在存中所占字节数是(d )。 A. 3 B. 6 C. 10 D. 20 7. 若有以下说明: int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}; char c='a',d,g; 则数值为4的表达式是(d ) A. a[g-c] B. a[4] C. a['d'-'c'] D. a['d'-c] 8. 以下程序段给数组所有的元素输入数据,请选择正确答案填入(a )。 #include main() { int a[10],i=0; while(i<10) scanf("%d",________ ); ┇ }

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