当前位置:文档之家› c语言数组有答案.doc

c语言数组有答案.doc

c语言数组有答案.doc
c语言数组有答案.doc

一、选择题

1.以下对一维整型数组a的正确说明是___________ 。

A. int a(10);

B. int n=0, a[n];

C. intn; D? #define SIZE 10

scanf(“%cf',&n); int a[SIZE]

int a[n];

2.若有说明:int a[10];,则对a数组元素的正确引用是_____________ 。

A. a[10] B? a[3.5] C. a(5) D? a[10-10]

3.以下能对一维数组a进行正确初始化的语句形式是____________ 。

A. int a[ 10]二(0,0, 0,0,0);

B. int a[10]={ };

C? double a[][4]; D. int a[10]={ 10*1};

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[l,3]

C. a[l + l][0]

D. a(2)(l)

6.以下能对二维数组a进行正确初始化的语句是_____________ 。

A. inta[2][]={{l,0, 1},{5,2,3}};

B? inta[][3]={{ 1,2,3)44,5,6}};

C? inta[2][4]={{l,2,3},{4,5},{6}};

D? inta[][3]={{l,0,l,0},{ },{1,1}};

7.下而程序段______________ (每行代码前而的数字表示行号)。

1inta[3]={3*0};

2int i

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

4for(i=l; i<3; i++) a[0]=a⑹+a[i];

5printf(“%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]+l

D. x[0]=y;

9.定义如下变量和数组:

int k;

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

则下而语句的输出结果是 ____________ o

for(k=0; k<3; k++) printf(u%d,\a[k][2-k]);

A. 3 5 7 B? 3 6 9 C? 15 9 D. 1 4 7

10. ___________________________ 下而程序的运行结果是

# include

int main()

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

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

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

a[i]UJ=(i/j)*(j/i); for(i=l;i<6;i++)

{ for(j=l;j<6;j++) printf(,,%2d\a[i][j]);

printf(H\n n);

}

return 0;

}

A- 11111 B. 0000 1 C. 1 0000 D. 1 000 1 11111 000 1 0 0 1 000 0 10 10

11111 00 100 00 1 00 00 1 00

11111 0 1000 000 1 0 0 10 10

11111 1 0000 0000 1 1 000 1

11 . 下面是对数组

5

;的初始化,其中错误的语句是O

A. chars[5]={“abc"};B? char s[5]二{'a','b',};

C? char s[5]二“ ";D?char s[5]= “a bcde";

12.下而程序段的运行结果是__________ 。(□表示1个空格) charc[5]={'a,;b,,,\0,;c';\0,};

printf(H%s\c);

A. 'a”b‘

B. ab

C. abQc

D. ab口

13.有两个字符数组a、b,则以下正确的输入格式是____________ o

A. gets(a,b); B? scanf(tt%s%s,,,a,b);

C?scanf(“%s%s",&a,&b); D. gets(“a"),gets(“b'');

14.有字符数组a[80]和b[80],则正确的输出形式是_____________ 。

A. puts(a,b);

B. printf(u%s%s n,a[ ],b[ ]);

C. putchar(a,b);

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

15.有下而的程序段,则_________ o

char a[3],b[ ]=,,China n;

a=b;

printf(H%s\a);

A.运行后将输出China

B.运行后将输出Ch

C.运行后将输出Chi D?编译出错

16.下而程序段的功能是输出两个字符串中对应相等的字符,请选择填空。char x[ ]="programming,';

char y[ ]="Fortran H;

int i=0;

while(x[i]!二'\(X && y[i]W)

if(x[i]= =y[i]) printf("%c\ ___________ );

else i++;

A. x[i++] B? y[++i] C. x[i] D. y[i]

17.下而程序的功能是将字符串s中所有的字符c删除。请选择填空。

#include

int main()

{char s[80]; int i,j;

gets(s);

for(i二j=0;s[i]U\0‘; i++)

if(s[i]!=*c*) ______________ ;

sljZ;

puts(s);

return 0;

}

A. s[j++]二s[i]

B. s[++j]二s[i]

C. s[j]二s[i];j++

D. sUJ=s[i]

18.下而程序的运行结果是__________ o

#include

int main()

{char ch ⑺二{T2ab56”};

int i,s=0;

for(i=0;ch[i]>=,0, && ch[i]v=9;i+=2)

s二10*s+ch[i]」0:

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

return 0;

}

A. 1

B. 1256 C? 12ab56 D? 15

19.当运行以下程序时,从键盘输入:abv回车〉c<回车>def<回车〉,则下而程

序的运行结果是。

C. b

c

d

D. ab

c

d

int main()

{ char a[]=n morning ,\t; int ij=O; for(i=l;i<7;i++)

if(aUJ

A- mogninr

B. mo C- morning D. mornin

l.D 2. D 3.B 4.C 5.C 6-B 7. A 8. B 9. A 10. C 11. D

12. B 13. B 14. D 15. D 16. A 17. A 18. A 19. D 20. B

#include #define N 6 int main() { char c[N]; int i=0;

for(; i

A. abcdef

B. a

b c d

20. 下而程序的运行结果是 #include

答案:

二、填空题

1. 若有定义float a[3][5];则"数组所含数组元素个数是 __________ , a 数组所占的 字节数是 _________

o

2. 若有定义:double x[3][5];,则x 数组中行下标的下限为 ___________ ,列下表的

上限为 ________ o

3.假设M为已经声明的符号常量,则定义一个具有MXM个元素的双精度型数组a,且所有元素初值为0的形式是_________________________ 。

4.若有定义:inta[3][4]={{ 1,2}, {0}, {4,6,8,10}};则初始化后,a[l][2]得到的初

值是 __________ , a[2][l]得到的初值是______________ o

5.下而程序给a数组输入数据并以每行4个数据的形式输出。请填空。

#include

#define N 20

int main()

{int a[N],i;

for(i=0;i

for(i=0;i

{if( __________ ) ______________

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

}

printf(n\n,r);

return 0;

}

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

#include

int main()

{ inta[2][3]={ {1,2,3},{4,5,6}};

intb[3]⑵,i,j;

printf("array a:\n");

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

{for(j 二0; ____________ ;j++)

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

}

printf(n\n u);

}

printf(H array b:\n H);

for(i=0; _____________ ;i++)

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

printfC%5d”,b[i][j]);

printf(H\n n);

}

return 0;

}

7.下而程序段的运行结果是_____________ o

int x[5], i;

x[0]=l;x[l]=2;

for(i=2;i<5;i++) x[i]=x[i- l]+x[i-2];

for(i=2;i<5;i++) printf(n%d n,x[i]);

8.下而程序的运行结果是___________ 。

# include

int main()

{ int a⑸⑸,ij,n=l;

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

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

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

printf(H The result is:\n");

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

{ for(j=0;jv二i;j++)

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

printf(H\n n);

}

return 0;

}

9.以下程序的功能是求1000以内的水仙花数。(提示:所谓水仙花数是指一个3 位正整数,其各位数字的立方之和等于该正整数。例如:407MX4X4+0X0X

0+7X7X7,故407是一个水仙花数。)请填空。

#include

int main()

{int xyz,a[8],m,i=0;

printf(H The special numbers are:\n H);

for( ___________________ ; m++)

{x=m/100; y= ____________ ; z=m%10;

if(m=x*x*x+y*y*y+z*z*z)

{ ____________ ;i++;}

}

for(x=0;x

printf(H%6d n,a[x]);

printfCAn");

return 0;

}

10.下而程序的运行结果是___________ o

#include

int main()

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

while(i

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

i+=2;j-=2;

}

for(i=0;ivl0;i+=2)printf(”%cT,a[i]);

return 0;

}

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

#include

int main()

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

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

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

min=a[0];

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

if(a[i]

max=a[0];

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

if(a[i]>max) {max=a[i]; _________ 汀

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

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

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

printfC%5d”,a[i]);

printf(n\n u);

return 0;

}

12.下而程序的功能是检查一个二维数组是否对称(即对所有i、j都有

a[i]U]=a[j][i])。请填空。

#include

int main()

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

int ij,found=0;

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

for( __________ ; i<4; i++)

if(aUJ[i]!=a[i]Ul)

{ ______________ ; break;}

if(found==l) printf(H No\n n);

else printf(H Yes\n H);

return 0;

}

13.设数组a中的元素均为正整数,以下程序是求a中偶数的个数和偶数的平均值。请填空。

# include

int 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; ivlO; i++)

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

s+= ___________ ;

k++;

}

if(k!=O)

{ave=s/k; printf("%d,%f\n n,k,ave);}

return 0;

}

14.以下程序是将矩阵a、b的和存入矩阵c中并按矩阵形式输出。请填空。

# include

int main()

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

int b[3][4]={{?2,0丄4},{5,? 1,7,6}, {6,8,0,2}}; int i,j,c[3][4];

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

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

{c[i]UJ= _____________________ ;

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

}

}

return 0;

}

15.以下程序段的功能是求数组num中小于零的数据之和。请填空。

int num[20]={10,20,1 ,-20,203,-21,2,-2,-2,11,-21,22,12,-2,-234,-90,22,90,-45,20}; int sum=0,i;

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

if( ___________ ) sum= _______________ ;

printf(H sum=%6d H,sum);

16.以下程序段的功能是____________ ,运行后输出结果是______________。int num[10]={ 103,1 ,-20,-203,-21,2,-2,-2,13,-21};

int sum=0,i;

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

if(num[i]>0 && num[i]%10==3) sum=sum+num[i];

printf(H sum=%d\n H,sum);

17.下而程序用“快速顺序查找法”判断数组a中是否存在某一数。请填空。

# include

int main()

{int a[9]={25,57,4&37,12,92,86,33},i,x;

scanf(”%d”,&x);

i=0; _____________ ;

while(a[i]!=x) i++;

if( ___________ ) printf(n Found! The index is:%d\n n,i);

else printf(n Can,t found!\n n);

return 0;

}

18.下而程序是用“插入法”对数组a进行降序排序。请填空。

#include

int main()

{int a[5]={4,7,2,5,l},i,j,m;

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

{m=a[i];

j= __________ ;

while(j>=0 &&

{ _____________ ;j-;}

___________ =m;

}

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

printf(n\n n);

return 0;

}

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

#include

int main()

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

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

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

while(i<3 &&jv5)

if( ____________ )

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

else

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

while( _________ )

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

while( _________ )

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

for(i=0;i

putcharCXn1);

return 0;

}

20.字符串”ab\n\\012\\\””的长度是___________ 。

21.下而程序段将输出computero请填空。

char c[ ]=n It is a computer";

int i,j;

for(i=0; ___________ ;i++)

{ ____________ ; printf(n%c n,c[j]);}

22.下而程序的功能是从键盘输入一个大写英文字母,要求按字母的顺序打印出3个相邻的字母,指定的字母在中间。若指定的字母为乙则打印出YZA;若为A,则打印出ZABo请填空。

#include

int main()

{char a[3],c;

int i;

c=getchar();

a[l]=c;

if(c=Z) {a[2]=W; ________________ ;}

elseif(c二二A) {a[0]二Z; _____________ ;}

else {a[0]=c-1; a[2]=c+1;}

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

return 0;

}

23.下面程序段的功能是将字符数组a[6]= {?a'/bVcVd'/eVf}变为a[6]=

{T/aVbVcVdVe'Jo 请填空。

#include

int main()

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

int i;

for(i=4;i>=0;i-) ______________

a[O]=t;

for(i=0;i<=5;i++) putchar(a[i]); return 0;

24.下而程序的功能是在任意的字符串a中,将与字符c相等的所有元素的下标值分别存放在整型数组b中。请填空。

#include

int main()

{char a[80];

int i,b[80],k=0;

gets(a);

for(i=0;a[i]!=,\0,;i++)

if( ____________ ) {b[k]=i; _________ ;}

for(i=0;i

return 0;

}

25.有10个字符串。下而程序的功能是在每个字符串中找岀最大字符,并按一一对应的顺序放入一维数组a中,即第i个字符串中的最大字符放入a[i]中,输出每个字符串中的最大字符。请填空。

#include

int main()

{char s[10][20],a[10];

int i,j;

for(i=0;i<10;i++) gets(s[i]);

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

fog 二l;s[i][j]=\0:j++)

if(a[i]

}

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

return 0;

}

答案:

1. 15 60

2.0 4

3. double a[M][M]={0};

4.0 6

5.scanf(“%d",&a[i])

i%4==0 printf(“\iT);

6.j<=2 b[j][i]=a[i]U] i<=2

7.358

116

8. 1 6

7

11 12 13

16 17 18 19 21 22 23 24 25

9. m=100; m<=999 m/10%10 a[i]=m

10. 46108

11. k=i j=i a[j]=min; a[k]=max; 12. i=j+l found=l; 13. continue a[i]

14. a[i ]UJ+b[i][j] printf(“\rf') 15. num[i]<0 sum+num[i]

16. 计算数组num 中大于零且个位数为3的数据之和 17. a[8]=x i<8 18. i-1 aU+U=aU]

aU+l]

19. b[j]

j<5

20.9

21.i<=7 j 二 i+8

22. a[0]=c-l

a[2]=c+l 23. t=a[5] a[i+l]=a[i] 24. a[i]==,c ,

k++

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语言练习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语言数组作业编程题答案

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

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语言复习题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语言数组练习及答案

第四部分数组 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",________ ); ┇ }

大学C语言考试题(含答案)

大学C语言考试题(含答案) 姓名成绩 温馨提示:同学们,经过培训学习,你一定积累了很多知识,现在请认真、仔 细地完成这张试题吧。加油! 一单项选择题 1. 在C语言中,以 D 作为字符串结束标志 A)’\n’ B)’’ C) ’0’ D)’\0’ 2.下列数据中属于“字符串常量”的是( A )。 A.“a” B.{ABC} C.‘abc\0’ D.‘a’若干个字符构成字符串 在C语言中,用单引号标识字符;用双引号标识字符串 选项B,C,分别用{}和’’标识字符串 选项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 D.int t 6.下列C语言用户标识符中合法的是( B )。 A)3ax B)x C)case D)-e2 E)union 7.下列四组选项中,正确的C语言标识符是( C )。 A) %x B) a+b C) a123 D) 123 8、下列四组字符串中都可以用作C语言程序中的标识符的是( A )。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 9.C语言中的简单数据类型包括( D )。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是 C 。 A)2.5 B)2 C)1 D)3 11.如果int a=3,b=4;则条件表达式"a

C语言-数组-实验题目及答案

实验六数组程序设计 【实验目的】 1、掌握使用一维数组编程方法 2、掌握使用二维数组进行程序设计 【实验内容】 一、上机验证程序,并分析结果 要求:读懂程序,写出分析结果;上机运行程序,得到运行结果,比较之。1、#include int main() { int a[ ]={1,2,3,4,5} , i, j, s=0 ; j = 1; for ( i = 4 ; i>=0 ; i--) { s = s+ a[i] * j ; j = j * 10 ; } printf(" s= %d \n" , s ); return 0; } 二、程序改错题 1.下面程序的功能,是从键盘输入一个数组(数组长度为10),查找数组中正数的个数。源代码如下,程序中存在错误,请将其改正。 #include int main()

{ int a(10);/*定义数组*/ int count,i;/* i循环变量 count 正数个数*/ for(i=0;i<=10;i++) {/*循环输入*/ scanf("%d",a[i]); } count=1; for(i=0;i<=10;i++) {/*查找正数*/ if(a(i)>0) count++; } printf("数组中正数有:%d个\n",count); return 0; } 三编写程序 1.编写程序要求输入30个学生的单科成绩,输出高于平均分的成绩。#include #define N 30 int main() { float score[N],sum=0,aver; int i; for(i=0;i<30;i++) { scanf("%f",&score[i]); sum=sum+score[i]; } aver=sum/30; printf("平均分为:%.2f\n",aver); for(i=0;iaver) printf("%.2f ",score[i]); printf("\n");

C语言数组练习及答案

第四部分数组 4. 1 选择题 1.以下关于数组的描述正确的是(c ) 。 A.数组的大小是固定的,但可以有不同的类型的数组元素 B.数组的大小是可变的,但所有数组元素的类型必须相同 C.数组的大小是固定的,所有数组元素的类型必须相同 D.数组的大小是可变的,可以有不同的类型的数组元素 2.以下对一维整型数组a的正确说明是(d )。 a(10); B. int n=10,a[n]; 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", _______ );

C语言(数组与函数)习题与答案

1、有以下程序 main() { int p[8]={11,12,13,14,15,16,17,18},i=0,j=0; while(i++<7) if(p[i]%2) j+=p[i]; printf("%d\n",j); } 程序运行后的输出结果是()。 A.42 B.56 C.60 D.45 正确答案:D 2、以下叙述中错误的是()。 A.数组名代表的是数组所占存储区的首地址,其值不可改变 B.只有double类型数组,不可以直接用数组名对数组进行整体输入或输出 C.可以通过赋初值的方式确定数组元素的个数 D.当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息 正确答案:B 3、以下能正确定义一维数组的选项是()。 A.int a[5]={0,1,2,3,4,5}; B.int a[5]="0123"; C.char a[]={0,1,2,3,4,5}; D.char a={'A','B','C'}; 正确答案:C

解析: D、不加[ ],a只能被看作是一个字符变量,只能接收一个字符 4、有以下程序 main() { char p[ ]={‘a’,’b’,’c’},q[ ] =”abc”; printf("%d %d\n",sizeof(p),sizeof(q)); }; 程序运行后的输出结果是()。 A.4 4 B.3 3 C.3 4 D.4 3 正确答案:C 解析: C、p[] 只能认作字符数组,不会有字符串的结束标志,所以只有3个字符q[] 是字符串,末尾还会有字符串的结束标志,所以有4个字符 5、以下程序运行后的输出结果是()。 main() { int i,j,a[][3]={1,2,3,4,5,6,7,8,9}; for(i=0;i<3;i++) for(j=i+1;j<3;j++) a[j][i]=0; for(i=0;i<3;i++) { for(j=0;j<3;j++) printf("%d ", a[i][j]); printf("\n"); } } A.1 2 3 0 5 6 0 0 9

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

C语言(数组)习题与答案

一、单选题 1、下列描述中不正确的是() A.字符串的结束符是'\0'。 B.可以对字符型数组进行整体输入、输出。 C.字符型数组中能存放字符串。 D.字符串函数声明在ctype.h中。 正确答案:D 2、下面是有关C语言字符数组的描述,其中错误的是() A.不可以用赋值语句给字符数组名赋字符串 B.可以用输入语句把字符串整体输入给字符数组 C.字符数组只能存放字符串 D.字符数组中的内容不一定是字符串 正确答案:C 3、下面是对数组s的初始化操作,其中不正确的是() A.char s[5]= " "; B.char s[5]={'a'}; C.char s[5]={"a"}; D.char s[5]= "abcdef"; 正确答案:D 4、下面叙述正确的是() A.字符串"123 "与"123"相等。 B.字符串"123"小于字符串"2"。 C.两个字符串所包含的字符个数不相同时,才能进行大小比较。 D.字符个数多的字符串比字符个数少的字符串大。 正确答案:B

5、下面程序段的输出结果是() char a[7]=“123456”; char b[4]=”ABC”; strcpy(a,b); printf(“%c”,a[5]); A.\0 B. C.5 D.6 正确答案:D 6、以下对二维数组a的正确说明是__。 A.double a[1][4]; B.float a(3)(4); C. floatf a(3,4); D. int a[3][]; 正确答案:A 7、以下能对二维数组a进行正确初始化的语句是__。 A. int a[][3]={{1,2,3},{4,5,6}}; B.int a[2][]={{1,0,1},{5,2,3}}; C.int a [2][4]={{1,2,3},{4,5},{6}}; D. int a[][3={{1,0,1},{},{1,1}}; 正确答案:A 8、若有说明: int a[3][4]={0};则下面正确的叙述是__。 A.数组a中各元素都可得到初值,但其值不一定为0。 B.只有元素a[0][0]可得到初值0。 C.数组a中每个元素均可得到初值0 。

c语言数组练习题及答案

/* 4.16 5*5矩阵中每行的绝对值最大值,与同行对角线交换*/ #include "stdio.h" #include "math.h" void main() { int a[5][5]={{1,2,3,4,-5},{3,5,-2,4,2},{4,1,2,3,-2}, {1,3,-2,4,6},{2,2,0,7,4}} ; int i,k,max,sub,temp; /* i 循环变量,控制行,k 循环变量,控制列,max 当前最大绝对值,sub 当前最大绝对值元素的下标 temp 临时用于交换的变量*/ printf("交换之前,输出\n"); /*交换之前,输出*/ for(i=0;i<=4;i++) { for(k=0;k<=4;k++) printf("%4d",a[i][k]); printf("\n"); } /*交换*/ for(i=0;i<=4;i++) { /*假设第一个元素最大*/

max=fabs(a[i][0]); sub=0; /*寻找绝对值最大的元素记下下标*/ for(k=1;k<=4;k++) { if(fabs(a[i][k])>max) { max=fabs(a[i][k]); sub=k; } } /*交换*/ temp=a[i][i]; a[i][i]=a[i][sub]; a[i][sub]=temp; } /*交换之后,输出*/ printf("交换之后,输出\n"); for(i=0;i<=4;i++) { for(k=0;k<=4;k++) printf("%4d",a[i][k]); printf("\n"); } }

c语言数组有答案.doc

一、选择题 1.以下对一维整型数组a的正确说明是___________ 。 A. int a(10); B. int n=0, a[n]; C. intn; D? #define SIZE 10 scanf(“%cf',&n); int a[SIZE] int a[n]; 2.若有说明:int a[10];,则对a数组元素的正确引用是_____________ 。 A. a[10] B? a[3.5] C. a(5) D? a[10-10] 3.以下能对一维数组a进行正确初始化的语句形式是____________ 。 A. int a[ 10]二(0,0, 0,0,0); B. int a[10]={ }; C? double a[][4]; D. int a[10]={ 10*1}; 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[l,3] C. a[l + l][0] D. a(2)(l) 6.以下能对二维数组a进行正确初始化的语句是_____________ 。 A. inta[2][]={{l,0, 1},{5,2,3}}; B? inta[][3]={{ 1,2,3)44,5,6}}; C? inta[2][4]={{l,2,3},{4,5},{6}}; D? inta[][3]={{l,0,l,0},{ },{1,1}}; 7.下而程序段______________ (每行代码前而的数字表示行号)。 1inta[3]={3*0}; 2int i 3for(i=0; i<3; i++) scanf(“%d",&a[i]); 4for(i=l; i<3; i++) a[0]=a⑹+a[i]; 5printf(“%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]+l D. x[0]=y; 9.定义如下变量和数组: int k; int a[3][3]={ 1,2,34,5,6,7,8,9}; 则下而语句的输出结果是 ____________ o for(k=0; k<3; k++) printf(u%d,\a[k][2-k]);

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、对以下说明语句的正确理解是()。

c语言数组练习题及答案

c语言数组练习题及答案 第一题:在数组a中,存放有n个学生的成绩.试编一函数:将低于平均分的学生人数m由函数值返回,将低于平均分的分数由数组b带回. int fun(int a[],int n,int b[]) { int i,m=0,aver=0; for(i=0;i

data=m+1; n=0; while(n

C语言必背的典型程序设计题目 - 数组、函数-------参考答案

数组部分必须会编写的程序(参考答案)1、使用选择法、冒泡法对10个数进行排序,并输出排序前后的数列。 //选择法 #include void main() { int a[10]={12,45,7,8,96,4,10,48,2,46},n=10,i,j,t,temp; printf("Before sort:"); for(i=0;i<10;i++) { printf("%4d",a[i]); } printf("\n"); //排序 for(i=0;i<9;i++) { t=i; for(j=i+1;j<10;j++) { if(a[t]>a[j]) { t=j; } } if(t!=i) { temp=a[i]; a[i]=a[t];a[t]=temp; } } printf("Aftere sorted:"); for(i=0;i<10;i++) { printf("%4d",a[i]); } printf("\n"); } //冒泡法 #include void main() { int a[10]={12,45,7,8,96,4,10,48,2,46},n=10,I,j,t; printf(“Before sort:”); for(i=0;i<10;i++) { printf("%4d",a[i]); } prtintf(“\n”); //排序 for(i=0;i<=n-1;i++) { for(j=0;ja[j+1]) {t=a[j];a[j]=a[j+1];a[j+1]=t;}

} printf(“Aftere sorted:”); for(i=0;i<10;i++) { printf("%4d",a[i]); } prtintf(“\n”); } 2、已知数组a中的元素已按由小到大顺序排列,以下程序的功能是将输入的一个数插入数组a中,插入后,数组a中的元素仍然由小到大顺序排列。 #include void main() { int a[10]={0,12,17,20,25,28,30}; /*a[0]为工作单元,从a[1]开始存放数据*/ int x , i, j=6; /*j为元素个数*/ printf("Enter a number: "); scanf("%d",&x); a[0]=x; i=j; /*从最后一个单元开始*/ while(a[i]>x) { a[i+1]=a[i]; i--; /*将比x大的数往后移动一个位置*/ } a[++i]=x; j++; /*插入x后元素总个数增加*/ for(i=1;i<=j;i++) printf("%8d",a[i]); printf("\n"); } 3、(提高题目)编号为1,2,3,……n的n个人按顺时针方向围坐一圈。任选一个正整数作为报数上限m,从第1个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止。设计程序输出出列顺序。 #include #define nmax 50 void main() { int i,k,m,n,t,num[nmax]; printf("please input the total of numbers:"); scanf("%d",&n); printf("please input the upper bound of numbers:"); scanf("%d",&m); for(i=0;i

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