文档库 最新最全的文档下载
当前位置:文档库 › C语言习题集合(数组)

C语言习题集合(数组)

C语言习题集合(数组)
C语言习题集合(数组)

第四章数组

4.1 选择题

1. 以下关于数组的描述正确的是( )。

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. 在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]+1

B. &bb[1]

C. &bb[0]++

D. bb+1

6. 假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中

所占字节数是( )。

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的表达式是( )

A. a[g-c]

B. a[4]

C. a['d'-'c']

D. a['d'-c]

8. 以下程序段给数组所有的元素输入数据,请选择正确答案填入( )。

#include

main()

{

int a[10],i=0;

while(i<10) scanf("%d",________ );

}

A. a+(i++)

B. &a[i+1]

C. a+i

D. &a[++i]

9. 执行下面的程序段后,变量k中的值为( )。

int k=3, s[2];

s[0]=k; k=s[1]*10;

A. 不定值

B. 33

C. 30

D. 10

10. 以下程序的输出结果是( )

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. 258

B. 741

C. 852

D. 369

11. 以下程序运行后,输出结果是( )。

main()

{

int n[5]={0,0,0},i,k=2;

for(i=0;i

printf("%d\n",n[k]);

}

A. 不确定的值

B. 2

C. 1

D. 0

12. 以下程序运行后,输出结果是( )。

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. 10000

B. 10010

C. 00110

D. 10100

13. 以下程序运行后,输出结果是( )。

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]

else a[k]=a2[j++];

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

}

A. 1234

B. 1324

C. 2413

D. 4321

14. 以下程序运行后,输出结果是( )。

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;

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

}

A. 20

B. 21

C. 22

D. 23

15. 以下程序运行后输出结果是( )。

main( )

{

int n[3],i,j,k;

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

n[i]=0;

k=2;

for (i=0;i

for (j=0;j

n[j]=n[i]+1;

printf("%d\n",n[1]); }

A. 2

B. 1

C. 0

D. 3

16. 下列程序的主要功能是输入10个整数存入数组a,再输入一个整数x,在数组a中查找x。

找到则输出x在10个整数中的序号(从1开始);找不到则输出0。程序缺少的是 ( )。

main()

{

int i,a[10],x,flag=0;

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

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

scanf("%d",&x);

for(i=0;i<10;i++) if _______ {flag=i+1; break;}

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

}

A. x!=a[i]

B. !(x-a[i])

C. x-a[i]

D. !x-a[i]

17. 若说明:int a[2][3]; 则对a数组元素的正确引用是( ) 。

A. a(1,2)

B. a[1,3]

C. a[1>2][!1]

D. a[2][0]

18. 若有定义:int b[3][4]={0};则下述正确的是( ) 。

A. 此定义语句不正确

B. 没有元素可得初值0

C. 数组b中各元素均为0

D. 数组b中各元素可得初值但值不一定为0

19. 若有以下数组定义,其中不正确的是( ) 。

A. int a[2][3];

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

C. int c[100][100]={0};

D. int d[3][]={{1,2},{1,2,3},{1,2,3,4}};

20. 若有以下的定义:int t[5][4];能正确引用t数组的表达式是( )。

A. t[2][4]

B. t[5][0]

C. t[0][0]

D. t[0,0]

21. 在定义int m[ ][3]={1,2,3,4,5,6};后,m[1][0]的值是( )。

A. 4

B. 1

C. 2

D. 5

22. 在定义int n[5][6]后第10个元素是( )。

A. n[2][5]

B. n[2][4]

C. n[1][3]

D. n[1][4]

23. 若二维数组c有m列,则计算任一元素c[i][j]在数组中的位置的公式为( )。

(假设c[0][0]位于数组的第一个位置)

A. i*m+j

B. j*m+i

C. i*m+j-1

D. i*m+j+1

24. 若有以下定义语句,则表达式“x[1][1]*x[2][2]”的值是( )。

float x[3][3]={{1.0,2.0,3.0},{4.0,5.0,6.0}};

A. 0.0

B. 4.0

C. 5.0

D. 6.0

25. 以下程序运行后,输出结果是 ( )。

main()

{

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

printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],a[3][0]);

}

A. 0650

B. 1470

C. 5430

D. 输出值不定

26. 以下程序运行后,输出结果是( )。

main()

{

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

int i,s=0;

for(i=0;i<4;i++) s+=aa[i][1];

printf(“%d\n”,s);

}

A. 11

B. 19

C. 13

D. 20

27. 有以下程序

main( )

{

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

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

for(j=0;j<=i;j++) s+=a[i][j];

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

}

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

A. 18

B. 19

C. 20

D. 21

28. 若定义如下变量和数组:

int i;

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

则下面语句的输出结果是( )。

for(i=0;i<3;i++) printf("%d",x[i][2-i]);

A. 1 5 9

B. 1 4 7

C. 3 5 7

D. 3 6 9

29. 下述对C语言字符数组的描述中错误的是( )。

A. 字符数组可以存放字符串

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

C. 可以在赋值语句中通过赋值运算符"="对字符数组整体赋值

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

30. 下述对C语言字符数组的描述中正确的是 ( )。

A. 任何一维数组的名称都是该数组存储单元的开始地址,且其每个元素按照顺序连续占

存储空间

B. 一维数组的元素在引用时其下标大小没有限制

C. 任何一个一维数组的元素,可以根据内存的情况按照其先后顺序以连续或非连续的方

式占用存储空间

D. 一维数组的第一个元素是其下标为1的元素

31. 不能把字符串:Hello!赋给数组b的语句是( )。

A. char str[10]= {'H', 'e', 'l', 'l', 'o', '! '};

B. char str[10];str="Hello!";

C. char str[10];strcpy(str,"Hello!");

D. char str[10]="Hello!";

32. 合法的数组定义是( )。

A. int a[]="string";

B. int a[5]={0,1,2,3,4,5};

C. int s="string";

D. char a[]={0,1,2,3,4,5};

33. 下列语句中,不正确的是( )。

A. static char a[2]={1,2};

B. static char a[2]={ '1', '2'};

C. static char a[2]={ '1', '2', '3'};

D. static char a[2]={ '1'};

34. 若给出以下定义:

char x[ ]="abcdefg";

char y[ ]={'a','b','c','d','e','f','g'};

则正确的叙述为( )。

A. 数组x和数组y等价

B. 数组x和数组y的长度相同

C. 数组x的长度大于数组y的长度

D. 数组x的长度小于数组y的长度

35. 若有数组定义: char array [ ]="China"; 则数组 array所占的空间为( )。

A. 4个字节

B. 5个字节

C. 6个字节

D. 7个字节

36. 若有定义和语句:

char s[10];s="abcd";printf("%s\n",s);

则结果是(以下└┘代表空格)( )。

A. 输出abcd

B. 输出a

C. 输出abcd└┘└┘└┘└┘

D. 编译不通过

37. 下面程序运行后,输出结果是( )。

main()

{

char ch[7]={ "65ab21"};

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. 12ba56

B. 6521

C. 6

D. 62

38. 运行下面的程序,如果从键盘上输入:123<空格>456<空格>789<回车>,输出结果是( )。

A. 123,456,789

B. 1,456,789

C. 1,23,456,789

D. 1,23,456

main()

{

char s[100]; int c, i;

scanf("%c",&c); scanf("%d",&i); scanf("%s",s);

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

}

39. 运行下面的程序,如果从键盘上输入:

ab<回车>

c <回车>

def<回车>

则输出结果为( )。

A. a

B. a

C. ab

D. abcdef

b b c

c c d

d d

e

f

#include

#define N 6

main()

{

char c[N];

int i=0;

for( ;i

for( i=0;i

printf("\n");

}

40. 运行下面的程序,如果从键盘上输入:ABC时,输出的结果是( )。

#include

main()

{

char ss[10]="12345";

strcat(ss, "6789" );

gets(ss);printf("%s\n",ss);

}

A. ABC

B. ABC9

C. 123456ABC

D. ABC456789

41. 判断两个字符串是否相等,正确的表达方式是( )。

A.while(s1==s2)

B. while(s1=s2)

C. while(strcmp(s1,s2)==0)

D. while(strcmp(s1,s2)=0)

42. 以下程序的输出结果是()。

main()

{

char str[12]={ 's','t','r','i','n','g'};

printf("%d\n",strlen(str));

}

A. 6

B. 7

C. 11

D. 12

43. 若有以下程序片段:

char str[ ]="ab\n\012\\\"";

printf("%d",strlen(str));

上面程序片段的输出结果是 ( )。

A. 3

B. 4

C. 6

D. 12

44. 若有以下程序段,输出结果是( )。

char s[ ]="\\141\141abc\t";

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

A. 9

B. 12

C. 13

D. 14

45. 设有static char str[ ]="Beijing";

则执行printf("%d\n", strlen(strcpy(str,"China")));

后的输出结果为 ( )。

A. 5

B. 7

C. 12

D. 14

46. 以下程序运行后,输出结果是( )。

main()

{

char cf[3][5]={"AAAA","BBB","CC"};

printf("\"%s\"\n",ch[1]);

}

A. "AAAA"

B. "BBB"

C. "BBBCC"

D. "CC"

47. 以下程序运行后,输出的结果是( )。

#include

#include

main()

{

char w[ ][10]={"ABCD","EFGH","IJKL","MNOP"},k;

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

printf("%s\n",&w[k][k]);

}

A. ABCD

B. ABCD

FGH EFG

KL IJ

M

C. EFG

D. FGH

JK KL

O

48. 以下程序运行后,输出结果是( )。

main()

{

char arr[2][4];

strcpy(arr,"you"); strcpy(arr[1],"me");

arr[0][3]='&';

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

}

A. you&me

B. you

C. me

D. err

4.2 填空题

1. C语言中,数组元素的下标下限为 ________。

2. C程序在执行过程中,不检查数组下标是否________。

3. 在定义时对数组的每一个元素赋值叫数组的________;C语言规定,只有________存储类

型和________存储类型的数组才可定义时赋值。

4. 下面程序的运行结果是________。

#define N 5

main()

{

int a[N]={1,2,3,4,5},i,temp;

for(i=0;i

{temp=a[i]; a[i]=a[N-i-1]; a[N-i-1]=temp;}

printf("\n");

for(i=0;i

}

5. 以下程序以每一行输出4个数据的形式输出a数组。

#include

main()

{

int a[20],i;

for(i=0;i<20;i++) scanf("%d", 【1】);

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

{if ( 【2】 ) 【3】;

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

}

printf("\n");

}

6. 以下程序分别在a数组和b数组中放入an+1和bn+1个由小到大的有序数,程序把两个

数组中的数按由小到大的顺序归并到c数组中。

#include

main()

{

int a[10]={1,2,5,8,9,10}, an=5,b[10]={1,3,4,8,12,18},bn=5;

int i,j,k,c[20],max=9999;

a[an+1]=b[bn+1]=max;

i=j=k=0;

while((a[i]!=max)||(b[j]!=max))

if(a[i]

else {c[k]= 【3】; k++; 【4】;}

for(i=0;i

}

7. 以下程序的功能是:从键盘上输入若干个学生的成绩,计算出平均成绩,并输出低于平

均分的学生成绩,用输入负数结束输入。请填空。

main( )

{

float x[1000], sum=0.0, ave, a;

int n=0, i;

printf("Enter mark:\n");scanf("%f",&a);

while(a>=0.0&& n<1000)

{ sum+=【1】; x[n]= 【2】;

n++; scanf("%f",&a);

}

ave=【3】;

printf("Output:\n");

printf("ave=%f\n",ave);

for (i=0;i

if (【4】) printf ("%f\n",x[i]);

}

8. 以下程序把一个整数转换成二进制数,所得二进制数的每一位放在一维数组中,输出此

二进制数。注意:二进制数的最低位在数组的第一个元素中。

#include

main()

{

int b[16],x,k,r,i;

printf("please input binary num to x"); scanf("%d",&x);

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

k=-1;

do

{r=x% 【1】 ;

b[++k]=r;

x/= 【2】 ;

}

while(x>=1);

for(i=k; 【3】 ;i--)

printf("%d",b[i]); printf("\n");

}

9. 输入10个整数,用选择法排序后按从小到大的次序输出。

#define N 10

main( )

{

int i,j,min,temp,a[N];

for(i=0;i

scanf("%d", 【1】);

printf("\n");

for(i=0; 【2】; i++)

{min=i;

for(j=i;j

if(a[min]>a[j]) 【3】 ;

temp=a[i];

a[i]=a[min];

a[min]=temp;

}

for (i=0;i

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

printf("\n");

}

10. 当先后输入1,3,4,12,23时,屏幕上出现________;再输入12时,屏幕上出现________。

#include

#define N 5

main()

{

int i,j,number,top,bott,min,loca,a[N],flag;

char c;

printf("please input 5 numbers a[i]>a[i-1]\n");

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

while(i

{scanf("%d",&a[i]); if(a[i]>=a[i-1]) i++;} printf("\n");

for(i=0;i

flag=1;

while(flag)

{ scanf("%d",&number); loca=0; top=0; bott=N-1;

if ((numbera[N-1])) loca=-1;

while((loca==0)&&(top<=bott))

{min=(bott+top)/2;

if(number==a[min])

{loca=min;printf("%d is the %dth number\n",number,loca+1);}

else if (number

else top=min+1;

}

if (loca==0||loca==-1) printf("%d is not in the list \n",number);

c=getchar();

if (c==’N’||c==’n’) flag=0;

}

}

11. 以下程序运行结果是 ________.

#include

main()

{

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

for(i=0;i<=2;i++) { s1=s1+ a[i][i];

s2=s2*a[i][i];};

printf("s1=%d,s2=%d",s1,s2);

}

12. 以下程序完成功能是:计算两个3*4阶矩阵相加,并打印出结果。请填空。

#include

main()

{

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

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

int i,j,c[3][4];

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

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

________;

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

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

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

printf("\n");

}

}

13. 以下程序的运行结果是________.

main()

{

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

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

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

{if(i==3) a[i][j]=a[i-1][a[i-1][j]]+1;

else a[i][j]=j;

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

}

printf("\t");

}

}

14. 阅读下列程序:

#include

main()

{

int i, j, row, column,m;

static int array[3][3]={{100,200,300},{28,72,-30},{-850,2,6}};

m=array[0][0];

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

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

if (array[i][j]

{ m=array[i][j]; row=i; column=j;}

printf("%d,%d,%d\n",m,row,column);

}

上述程序的输出结果是 ________。

15. 若想通过以下输入语句使a中存放字符串1234,b中存放字符5,则输入数据的形式应该

是________。

:

.

char a[10],b;

scanf("a=%s b=%c",a,&b);

:

.

16. 以下程序段的输出结果是________。

main()

{

char b[]="Hello,you";

b[5]=0;

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

}

17. 若有以下程序段,若先后输入:

English↙

Good↙

则其运行结果是________。

main()

{

char c1[60],c2[3];

int i=0,j=0;

scanf("%s",c1);

scanf("%s",c2);

while(c1[i]!= '\0') i++;

while(c2[j]!= '\0') c1[i++]=c2[j++];

c1[i]= '\0';

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

}

18. 从键盘输入由5个字符组成的单词,判断此单词是不是hello,并显示结果。

#include

main()

{

static char str[ ]={‘h’,’e’,’l’,’l’,’o’};

char str1[5];

【1】;

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

【2】;

flag=0;

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

if 【3】 {flag=1; break;}

if(flag) printf("this word is not hello");

else printf("this word is hello");

}

19. 以下程序的功能是:将字符数组a中下标值为偶数的元素从小到大排列,其它元素不变。

请填空。

#include

#include

main()

{

char a[]="clanguage",t;

int i, j, k;

k=strlen(a);

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

for(j=i+2; j<=k; 【1】)

if( 【2】 )

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

puts(a);

printf("\n");

}

20. 输入5个字符串,将其中最小的打印出来。

main()

{

char str[10],temp[10]; int i;

【1】;

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

{gets(str);

if (strcmp(temp,str)>0) 【2】;

}

printf("\nThe first string is:%s\n",temp);

}

21. 以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不

相同字符的ASCII码之差。例如:输入的两个字符串分别为abcdef和abceef,则输出为-1。

请填空。

#include

main( )

{

char str1[100],str2[100],c;

int i,s;

printf("\n input string 1:\n"); gets(str1);

printf("\n input string 2:\n"); gets(str2);

i=0;

while((strl[i]==str2[i]&&(str1[i]!= 【1】))

i++;

s= 【2】 ;

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

}

22. 设有下列程序:

#include

#include

main()

{

int i;

char str[10], temp[10];

gets(temp);

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

{ gets(str);

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

}

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

}

上述程序运行后,如果从键盘上输入(在此代表回车符):

C++

BASIC

QuickC

Ada

Pascal

则程序的输出结果是 ________。

23. 以下程序功能是:统计从终端输入的字符中每个大写字母的个数。用#号作为输入结束标

志,请填空。

#include

#include

main( )

{

int num[26],i; char c;

for(i=0; i<26; i++) num[i]=0;

while( 【1】 != '#') /*统计从终端输入的大写字母个数*/

if( isupper(c)) num[c-65]+=1;

for(i=0; i<26; i++) /*输出大写字母和该字母的个数*/

if(num[i]) printf("%c:%d\n",i 【2】 , num[i]);

}

24. 下面程序段完成功能是:输出两个字符串中对应字符相等的字符。请填空。

char x[ ]= "language";

char y[ ]= "llngga";

int i=0;

while (x[i]!= 【1】 &&y[i]!= 【2】 )

{ if (x[i]==y[i]) printf("%c", 【3】);

else i++;

}

25. 下面程序完成功能是:计算一个字符串中子串出现的次数。

#include

main()

{

int i ,j, k,count;

char str1[20],str2[20];

printf("zhu chuan:");

gets(str1);

printf("zi chuan:");

gets(str2);

【1】;

for(i=0;str1[i];i++)

for(j=i,k=0;str1[j]==str2[k];j++,k++)

if ( 【2】 )

count++;

printf("chuxian cishu=%d\n",count);

}

26. 下面程序完成以下功能:从键盘输入一行字符,统计其中有多少个单词,单词之间用空

格分隔。

#include

main()

{

char s[81];

int i , c, num=0,word=0;

【1】;

for(i=0;(c=s[i])!=’\0’;i++)

if(c==32) 【2】;

else if (word==0) {word=1; 【3】;}

printf("there are %d words.\n",num);

}

27. 下面程序完成功能是:判定用户输入的正整数是否为“回文数”,所谓“回文数”是指正

读反读都相同的数。请填空。

#include

main()

{

int buffer[10], i,k,flag;

long number ,n;

printf("please input one number");

scanf("%ld",&number);

k=0;

n=number;

do

{ 【1】 ;

k=k+1;

n=n/10;

}while (n!=0);

flag=1;

for( i=0;i<=(k-1)/2;i++)

if ( 【2】 )

flag=0;

if(flag)

printf("%ld is huiwenshu\n",number);

else printf("%ld is not huiwenshu\n",number);

}

4.3 答案及部分解析

一.选择题答案

1. C

2. D

3. C

4. C

5. C

6. D

7. D 8. A 9. A 10. C 11. D 12. B

13. A 14. B 15. D 16. B 17. C 18. B

19. D 20. C 21. A 22. C 23. D 24. A

25. A 26. B 27. A 28. C 29. C 30. A

31. B 32. D 33. C 34. C 35. C 36. D

37. C 38. D 39. C 40. A 41. C 42. A

43. C 44. A 45. A 46. B 47. D 48. A

11. 解析:程序中的for语句为n[0]和n[1]重新赋了值,但要输出的应该是n[2](n[k])值。

13. 解析:第一个for语句中当k=0时 a1[0]a2[0],

a[1]=2,j值为1;当k=2时,a1[1]a2[1]

a[3]=4,j值为2第二个for语句输出a数组。

14. 解析:第一个for循环是为了将0,1,2,3,4,5,6,7,8,9分别赋给a[0]-a[9];

第二个for循环再将a[0],a[2],a[6]的值赋给p[0],p[1],p[2];第三个for循环

将3个数组下标变量值*2后累加,结果为16,再和k初值5相加,最终结果为

21。

27. 解析:本题考点是关于给数组赋初值时,初值的个数少于数组中元素个数。a数组实际

存储状态是a[0][2]=0,a[1][2]=0,a[2][2]=0.

35. 解析:字符串的最后一个字符应该是结束符’\0’。

36. 解析:在程序执行语句部分,不允许把字符串赋予一个数组。

40. 解析:函数strcat()是字符串连接。gets()中输入数据时以回车符作为结束符。在纳

入内存时,输入字符串末尾的回车符自动变换成代码‘\0’,从而使它成为C字符

串。它在stdio.h中被定义,输出ss时,遇到“0”停止输出。

47. 解析:本题中strcpy(arr,”you”)函数的功能是将”you” 3个字符分别赋给

arr[0][0]、 arr[0][1] 和a[0][2];strcpy(arr[1],”me”)函数的功能是将

“me” 分别赋给arr[1][0]和a[1][1]。

二.填空题答案

1.答案:0

2.答案:越界

3.答案:初始化静态外部

4. 答案:5 4 3 2 1

5. 答案:【1】&a[i] 【2】i%4==0 【3】printf("\n");

6. 答案:【1】a[i] 【2】i++或++i 【3】b[j] 【4】j++或++j

7. 答案:【1】a 【2】a 【3】sum/n 【4】x[i]

8. 答案:【1】2 【2】2 【3】i>=0

解析: 采用辗转相除法进行进制之间的相互转换,将结果存储在一维数组b中,最后显示其值即可。

9. 答案:【1】&a[i] 【2】i

10. 答案: 1 3 4 12 23 12 is the 4th number

11. 答案: s1=15 ,s2=45

12. 答案: c[i][j]=a[i][j]+b[i][j]

解析: 使用两个二维数组a和b存放两个3*4阶矩阵的元素值,然后用两重for循环进行相加求值产生二维数组c,最后显示c的各元素值。

13. 答案:0 1 2 0 1 2 0 1 2

14. 答案:-850,2,0

15. 答案:a=1234 b=5 A或a=1234b=5

16. 答案:Hello

17. 答案:EnglishGood

18. 答案:【1】 int i,flag 【2】 str[i]=getchar( ) 【3】 str1[i]!=str[i]

19. 答案:【1】 j+=2 【2】 a[i]>a[j]

解析: 外层for循环控制i步长为2,内层for循环控制j步长为2.当i=0时,j=2,a[0]>a[2],交换c和a;j=4,a[0]

不交换字符; 当i=2时,j=4,a[2]a[6], 交换a和c

字符;j=8,a[2]a[6], 交换c和g字

符;j=8,a[4]a[8], 交换e和g字符;输

出”alancuegg”。

20. 答案:【1】 gets(temp) 【2】 strcpy(temp,str)

21. 答案:【1】 '\0'或0 【2】 strl[i]-str2[i]

22. 答案:QuickC

23. 答案:【1】 (c=getchar()) 注意,外层括号不得遗漏【2】 +65 或 +'A'

24. 答案:【1】 '\0' 【2】 '\0' 【3】 x[i++]

25. 答案:【1】 count=0 【2】!str2[k+1]

26. 答案:【1】 gets(s) 【2】 word=0 【3】 num++

27. 答案:【1】buffer[k]=n%10 【2】buffer[i]!=buffer[k-1-i]

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函数时发生错误,则函数的返回值是()。

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}; 规定,定义字符型数组时不允许直接使用 "字符常量"的方式赋初值,所以备选答案②也就是错误的。 备选答案③符合题意。【答案】③ 6定义一个名为"s"的字符型数组,并且赋初值为字符串"123"的错误语句就是() ① char s[]={ '1','2','3',' \0 '}; ② char s 「」={"123"}; ③ char s[]={"123\n"}; ④ char s[4]={'1','2','3'}; 【分析】备选答案①中省略了数组长度 ,所以每个元素都赋了初值,共计4个元素,初值依次为T '3'、’ \0',最后一个元素的值为字符串结束标记 ,所以数组S 中存放的就是字符串"123",该答案不符合 题意(即正确的);备选答案③中直接赋予字符串作为初值所以数组 s 的长度为4,其中的初值就是字符串 "123",不符合题意(即正确的);备选答案③中也就是给数组 s 赋予字符串的初值,但就是字符串不就是 方法三: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 较,小者调上;该操作反复执行 n- k 次。现在假设有 则利用"冒泡排序法"执行第2步后的结果就是 【分析】开始排序前的排列执行第 4 1 - 3 : (不能直接赋予字符常量,必须用花括号括住),所 步。其中第k 步的任务就是:自下而上,相邻两数比 4个数据:4、l 、3、2要排序,假定4为上、2为下, O 1步后的排列执行第 2步后的排列 1 2 4 2 【答案】l 、2、4、 3 4用"选择排序法"对n 个数据排序,需要进行n-1 据中寻找最小数,与第k 个数据交换。现在假设有 行第2步后的结果就是 ____________________ 【分析】 开始排序前的排列为: 4 执行第1步后的排列为: 执行第2步后的排列为: 【答案】1、2、3、4 5下列数组定义语句中,正确的就是() ① int a[][]={1,2,3,4,5,6}; ② char a[2] ③ int a[][3]= {1,2,3,4,5,6}; ④ static int a[][] 【分析】C 语言规定,二维数组定义时不允许省略第二维的长度 步。其中第k 步的任务就是:在第k 个数据到第n 个数 4个数据:4、 1、 3、2要排序,则利用"冒泡排序法"执 「3] = 'a','b'; ={{1,2,3},{4,5,6}}; ,所以备选答案①④就是错误 C 语言还 显然 、'2'、

C语言循环数组练习题

循环数组练习题 一.选择题 1.for(i=0;i<10;i++);结束后,i的值是;B A 9 B 10 C 11 D 12 2.下面程序的循环次数是:D int k=0; while(k<10) {if(k<1) continue; if(k==5) break; k++; } A. 5 B 6 C 4 D 死循环,不能确定循环次数3.下面程序的输出结果是() main() { int s,k; for(s=1,k=2;k<5;k++) s+=k; printf(“%d\n”,s); } A 1 B 9 C 10 D 15 4.要使下面程序输出10个整数,则在下画线处填入正确的数是:for(i=0;i<= ;) printf(“%d\n”,i+=2); A 9 B 10 C 18 D 20 5.运行下面程序: main() { int i=10,j=0; do { j=j+i; i--; }while(i>5); printf(“%d\n”,j); }

输出结果是: A 45 B 40 C 34 D 55 6.运行下面程序 #include “stdio.h” main() { int k=0,a=1; while(k<10) { for( ; ;) { if((k%10)==0) break; else k--; } k+=11; a+=k; } printf(“%d %d\n”,k,a); } 则输出的结果是() A 21 32 B 21 33 C 11 12 D 10 11 7.以下叙述正确的是: A.do---while语句构成的循环不能用其他语句构成的循环来代替。 B.do---while语句构成的循环只能用break语句退出。 C.用do---while语句构成的循环,在while 后的表达式为非零时结束循环。 D.用do---while语句构成的循环,在while后的表达式为零时结束循环。 8.有如下程序: main() { int x=3; do{ printf(“%d”,x--);

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 ).

C语言数组例题

6.1.1 Fibonacci数列 /* Fibonacci数列递推求解 */ main() {int k,n; long s,f[50]; printf("求数列的第n项与前n项和,请输入n:"); scanf("%d",&n); f[1]=1;f[2]=1;s=2; /* 数组元素与和变量赋初值 */ for(k=3;k<=n;k++) {f[k]=f[k-1]+f[k-2]; /* 实施递推 */ s+=f[k];} /* 实施求和 */ printf("F数列第%d项为:%ld\n",n,f[n]); printf("F数前%d项之和为:%ld\n",n,s); } 6.1.2 幂序列 /* 幂序列程序 */ main() {int k,n; long a,b,s,f[100]; printf("求数列的第n项与前n项和,请输入n:"); scanf("%d",&n); a=2;b=3;s=0; for(k=1;k<=n;k++) {if(a

else {f[k]=b;b=b*3;} /* 用3的幂给f[k]赋值 */ s+=f[k];} printf("数列的第%d项为:%ld\n",n,f[n]); printf("数列的前%d项之和为:%ld\n",n,s); } 6.1.3 双关系递推数列 /* 双关系2x+1,3x+1递推 */ main() {int n,i,j,h,m[1500]; m[1]=1; scanf("%d",&n); for(i=1;i<=n;i++) {m[2*i]=2*m[i]+1;m[2*i+1]=3*m[i]+1; for(j=i+2;j<=2*i+1;j++) {if(m[i+1]>m[j]) /* m(i+1)与m(j)比较 */ {h=m[j]; m[j]=m[i+1];m[i+1]=h;} /* 交换,使m(i +1)最小 */ if(m[i+1]==m[j]) m[j]=20000+j;}} /* 置m(j)为一出界大数,以避免重复 */ for(i=1;i<=n;i++) {printf(" %4d",m[i]);

c语言练习题

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 在内存中所占字 节数 就是(B )。 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",); } A 、 a+(i++) B 、 &a[i+1] C 、 a+i D 、 &a[++i] 9、 执行卜面的程序段后 int k=3, s[2]; s[0]=k; k=s[1]*10; ,变量k 中的值为(A)。 A 、 不定值 B 33 C 、 30 D 、 10 10、以下程序的输出结果就是 (C ) 4.1 1、 A 、B 、C 、D 2、 A 、C 、选择题 以下关于数组的描述正确的就是 数组的大小就是固定的 数组的大小就是可变的 数组的大小就是固定的 数组的大小就是可变的 以下对一维整型数组 int a(10); int n; scanf("%d”,&n); (c )。 ,但可以有不同的类型的数组元素 ,但所有数组元素的类型必须相同 ,所有数组元素的类型必须相同 ,可以有不同的类型的数组元素 a 的正确说明就是 B D 、 (D)。 int n=10,a[n]; #define SIZE 10 int a[SIZE];

c语言数组练习题大全

231页; 本节设计程序完成一个简单的学籍; 3管理系统的案例,学生的基本信息:学号,姓名,年龄,c 语言成绩。假设班级有10名学生,能实现以下功能: (1)输入10名学生的基本信息。 (2)输出10名学生的基本信息。 (3)输入学号、姓名,输出该学生的基本信息。 (4)按学号年龄对学生进行排序(升序),按c 语言成绩降序排序。 (5)统计优 良 不及格。 1.数据结构分析 此案例是一位数组,二维数组的综合运用。10名学生的学号,年龄,c 语言成绩可分别用长度为10的一位数组sno (long ),sage (int 型),cs (float 型)存储;10名学生的姓名可用元素长度为20个字符的一位数组,既字符型二维数组sname 存储。 2算法分析 使用模块化设计思想,进入系统主界面时有六个主要模块,输入学生的基本信息,输出学生的信息,查找学生 的基本信息,排序,统计,退出。学籍管理系统的机构功能框架,如图 5-28 所示。 图 5-28 学生管理系统的结构功能框架 5.5.2 奇数阶魔方矩阵 本节将实现技术矩魔方矩阵。 项目任务:用数组实现N 阶魔方矩阵(N 为奇数)。所谓的N 阶魔方矩阵是指把1~N*N 自然数按一定的方法排列成N*N 的矩阵,使得:任意行、任意列以及两个对角线上的数之和都为65。 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 本章习题: 1.设数组int a【N】的元素全部不相等,求a中最大元素和次大元素。 2.求有10个整数的数组a中奇数的个数和平均值,以及偶数个数和平均值。 3.统计输入的一串字符(“假设以‘\n’结束”)中,大写字母A,B...Z各出现的次数。 4.数组a:“1,7,9,11,13,15,17,19”;数组b:“2,4,6,8,10”两个数组合并为数组c;按升序排列。 5.输入10个数,将10个整数按升序排列输出,并且奇数在前,偶数在后。如果输入的10个数是:10 9 8 7 6 5 4 3 2 1,则输出:1 3 5 7 8 2 4 6 8 10 (编程提示、;可利用两个数组变量,一个用来存放输入的整数,输入后,对该数组进行排序,然后将数据复制到另一个数组中,先复制奇数再复制偶数)。 6.定义一个有10个元素的一位数组count ,从键盘上输入8个整数,将其按从大到小的顺序排列,并将排列后的数组输出。 7.求数组int a【M】【N】每行元素的平均值和平均最大的行号。 8.求A【M】【N】与B【M】【N】两矩阵的和矩阵C【M】【N】和差矩阵D【M】【N】(矩阵的值由键盘输入)。 9.有n个学生,每人考m门课。 (1)找出成绩最高的学生的学号和课程号 (2)找出有不及格课程的学生的学号及其各门课的全部成绩。 (3)求全部学生全部课程的平均分。

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语言复习题及答案 第七章 数组教程文件

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语言中,引用数组元素时,其数组下标的数据类型允许是()。

C语言数组练习题

本文由分享咱的文档贡献 doc文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。 程序设计(数组) C 程序设计(数组) 12.23 。 【题1】 在C 语言中, 引用数组元素时, 其数组下标的数据类型允许是 A)整型常量 B)整型表达式 C)整型常量或整型表达式 D)任何类型的表达式 【题 2】C 语言中,数组名代表 A.数组全部元素的值 B.数组首地址 C.数组第一个元素的值 D.数组元素的个数 【题3】以下对一维整型数组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]; 【题 4】合法的数组定义是 A.int 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}; 【题 5】若有定义和语句:char s[10]; s=”abcd”; printf(“%s\n”,s); 则 结果是(以下 u 代表空格) A.输出 abcd B.输出 a C.输出 abcd u u u u u D.编译不通过 【题 6】有以下语句,则下面是正确的描述 static char x [ ]=“12345”; static char y[ ]={‘1’,‘2’, ‘3’,‘4’,‘5’}; A.x 数组和 y 数组的长度相同。 B.x 数组长度大于 y 数组长度。 C.x 数组长度小于 y 数组长度 D.x 数组等价于 y 数组。 。 【题7】若有说明:int a[10];则对a 数组元素的正确引用是 A)a[10] B)a[3.5] C)a(5) D)a[10-10] 【题8】在C 语言中,一维数组的定义方式为:类型说明符 数组名 ; A)[整型常量表达式] B)[整型表达式] C)[整型常量] 或[整型表达式] D)[常量] 【题9】以下能对一维数组a 进行正确初始化的语句是 。 A)int a[10]=(0,0,0,0,0); B)int a[10]={}; C)int a[]={0}; D)int a[10]=”10*1”; 【题10】对以下说明语句的正确理解是 。 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) 因为数组长度与初值的个数不相同,所以此语句不正确 【 题 11 】 若 已 定 义 数 组 : float a[8] ; 则 下 列 对 数 组 元 素 引 用 正 确 的 。 A a[0] =1; B. a[8] = a[0]; C. a=1; D. a[3.5]=1; 【题12】下面程序如果只有一个错误,那么是(每行程序前面的数字表示行 号) 。 1 main() 2 { 3 float 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)没有错误 【题13】下面程序 (每行程序前面的数字表示行号)。 1 main() 2 { 3 float a[10]={0.0}; 4 int i; 5 for(i=0;i<3;i++) scanf(“%d”,&a[i]); 6 for(i=1;i<10;i++) a[0]=a[0]+a[i]; 7 printf(“%f\n”,a[0]); 8 } A)没有错误 B)第3 行有错误 C)第5 行有错误 D)第7 行有错误 【题14】下面程序中有错误的行是 (每行程序前面的数字表示行号)。 1 main() 2 { 3 float a[3]={1}; 4 int i; 5 scanf(“%d”,&a); 6 for(i=1;i<3;i++) a[0]=a[0]+a[i]; 7 printf(“a[0]=%d\n”,a[0]); 8 } A)3 B)6 C)7 D)5 【题15】下面程序 (每行程序前面的数字表示行号)。 1 main() 2 { 3 float a[3]={0}; 4 int i; 5 for(i=0;i<3;i++) scanf(“%f”,&a[i]); 6 for(i=1;i<4;i++) a[0]=a[0]+a[i]; 7 printf(“%f\n”,a[0]); 是 8 } A)没有错误 B)第3 行有错误 C)第5 行有错误 D)第6 行有错误 【题 16】阅读程序,写出运行结果: main() { int i,a[10]; for(i=0;i<10;i++) scanf(“%d”,&a[i]); while(i>0) { printf(“%3d”,a[--i]); if(!(i%5)) putchar(‘\n’); } } 输入数据 1 2 3 4 5 6 7 8 9 10,则运行结果为: A.1 2 3 4 5 6 7 8 9 10 B.10 9 8 7 6 5 4 3 2 1 C.1 2 3 4 5 D.10 9 8 7 6 6 7 8 9 10. 5 4 3 2 1 1本文由分享咱的文档贡献 doc文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。 程序设计(数组) C 程序设计(数组)

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

《C语言程序设计》第7章 数组

第7章数组 第1次课:2学时 一、教学内容 1、一维数组的定义和引用 2、二维数组的定义和引用 二、教学目标 1.了解一维数组、二维数组的基本概念; 2.掌握数组的定义与引用; 3.掌握数组元素的引用 三、教学重点及难点 重点:数组的定义和引用 难点:数组的定义和引用 四、教学方法 多媒体教学,案例驱动,实例演示,提问。 五、教学过程设计 在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。在C语言中,数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。本章介绍数值数组和字符数组,其余的在以后各章陆续介绍。 7.1 一维数组的定义和引用 7.1.1 一维数组的定义方式 在C语言中使用数组必须先进行定义。 一维数组的定义方式为:类型说明符数组名[常量表达式]; 其中:类型说明符是任一种基本数据类型或构造数据类型;数组名是用户定义的数组标识符;方括号中的常量表达式表示数据元素的个数,也称为数组的长度。 对于数组类型说明应注意以下几点: (1) 数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是相同的。 (2) 数组名的书写规则应符合标识符的书写规定。 (3) 数组名不能与其它变量名相同。 (4) 方括号中常量表达式表示数组元素的个数,如a[5]表示数组a 有5 个元素。但是其下标从0 开始计算。因此5个元素分别为a[0],a[1],a[2],a[3],a[4]。 (5) 不能在方括号中用变量来表示元素的个数,但是可以是符号常数或常量表达式。

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",

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语言练习题带详解答案

一、编程题 1.输入2个整数,求两数的平方和并输出。 #include int main(void) { intt a ,b,s; printf("please input a,b:\n"); scanf("%d%d”,&a,&b); s=a*a+b*b; printf("the result is %d\n",s); return 0; } 2. 输入一个圆半径r,当r>=0时,计算并输出圆的面积和周长,否则,输出提示信息。 #include #define PI 3.14 int main(void)

{ double r ,area , girth; printf("please input r:\n"); scanf("%lf",&r); if (r>=0) { area =PI*r*r; girth =2*PI*r ; printf("the area is %.2f\n", area); printf("the girth is %.2f\n", girth);} else printf("Input error!\n"); return 0; } 3、已知函数y=f(x),编程实现输入一个x值,输出y值。 2x+1 (x<0) y= 0 (x=0)

2x-1 (x>0) #include void main() { int x,y; scanf(“%d”,&x); if(x<0) y=2*x+1; else if(x>0) y=2*x-1; else y=0; printf(“%d”,y); } 4.从键盘上输入一个百分制成绩score,按下列原则输出其等级:score≥90,等级为A;80≤score<90,等级为B;70≤score<80,等级为C;60≤score<70,等级为D;score<60,等级为E。 #include void main(){ int data;

广技师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”);

相关文档