文档库 最新最全的文档下载
当前位置:文档库 › C语言习题六(数组部分)习题及答案

C语言习题六(数组部分)习题及答案

习题六

一.选择题

1.在C语言中,引用数组元素时,其数组下标的数据类型允许是 c 。A)整型常量B)整型表达式

C)整型常量或整型表达式C)任何类型的表达式

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.若有定义:int a[10],则对数组a元素的正确引用是 D 。

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

4.以下不能对一维数组a进行正确初始化的语句是B 。

A)int a[10]={0,0,0,0,0}; B)int a[10]={} ;

C)int a[ ] = {0} ; D)int a[10]={10*1} ;

5.若有定义:int a[3][4],则对数组a元素的正确引用是。A

A)a[2][3] B)a[1,3] C)a(5) D)a[10-10]

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

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

7.以下不能对二维数组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} ;

8.若有说明:int a[3][4]={0};则下面正确的叙述是D。

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

B)此说明语句不正确

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

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

9.若有说明:int a[][4]={0,0};则下面不正确的叙述是D。

A)数组a的每个元素都可得到初值0

B)二维数组a的第一维大小为1

C)因为二维数组a中初值个数除以第二维大小的值的商向上取整为1,故数组a的行数为1

D)只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0

10.若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为。(设a[0][0]位于数组的第一个位置上)D

A)i*m+j B)j*m+i C)i*m+j-1 D)i*m+j+1

11.若有说明:int a[][3]={1,2,3,4,5,6,7};则数组a第一维大小是B。

A)2 B)3 C)4 D)无确定值

12.以下不正确的定义语句是B。

A)double x[5]={2.0,4.0,6.0,8.0,10.0};

B)int y[5]={0,1,3,5,7,9} ;

C)char c1[ ]={…1‟,‟2‟,‟3‟,‟4‟,‟5‟} ;

D)char c2[ ]={…\x10‟,‟\xa‟,‟\x8‟} ;

13.下面程序段的输出结果是。A

int k,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

14.下面是对s的初始化,其中不正确的是D。

A)char s[5]={“abc”}; B)char s[5]={…a‟,‟b‟,‟c‟};

C)char s[5]=””;D)char s[5]=”abcde”;

15.下面程序段的输出结果是。B

char c[5]={…a‟,‟b‟,‟\0‟,‟c‟,‟\0‟}

printf(“%s”,c);

A)‟a‟‟b‟ B)ab C)ab c D)abc

17.有两个字符数组a,b,则以下正确的输入语句是B。

A)gets(a,b); B)scanf(“%s%s”,a,b);

C)scanf(“%s%s”,&a,&b); D)gets(“a”),gets(“b”); 18.下面程序段的输出结果是D。

char a[7]=”abcdef”;

char b[4]=”ABC”;

strcpy(a,b);

printf(“%c”,a[5]);

A)B)\0 C)e D)f

19.下面程序段的输出结果是B。

char c[ ]=”\t\v\\\0will\n”;

printf(“%d”,strlen(c));

A)14 B)3 C)9 D)6

20.判断字符串a和b是否相等,应当使用D。

A)if (a= =b) B)if (a=b)

C)if (strcpy(a,b)) D) if (strcmp(a,b)==0)

21.判断字符串a是否大于b,应当使用。D

A)if (a>b) B)if (strcmp(a,b))

C)if (strcmp(b,a)>0) D)if (strcmp(a,b)>0)

22.下面叙述正确的是D。

A)两个字符串所包含的字符个数相同时,才能比较字符串B)字符个数多的字符串比字符个数少的字符串大

C)字符串”STOP”与”STOP”相等

D)字符串”That”小于字符串”The”

23.下面有关字符数组的描述中错误的是C。

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

B)字符串可以整体输入,输出

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

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

24.下面程序的输出结果是。A

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

25.下面程序的输出结果是B。

main ( )

{

char str[ ]=”SSWLIA” , C;

int k;

for (k=1;(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

二.填空题

1.在C语言中,二维数组的元素在内存中的存放顺序是以行为主序。

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

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

0 ,a[2][1]得到的值为 6 。

5.下面程序段的运行结果是he 。

char x[ ]=”the teacher”;

int i=0;

while (x[++i]!=‟\0‟)

if (x[i-1]==‟t‟) printf(“%c”,x[i]);

6.欲为字符串S1输入”Hello World!”,其语句是gets(s1); 。

7.欲将字符串S1复制到字符串S2中,其语句是strcpy(s2,s1); 。9.C语言数组的下标总是从0 开始,不可以为负数;构成数组各个元素具有相同的数据类型。

10.字符串是以…\0‟为结束标志的一维字符数组。有定义:char a[]=””;则a数组的长度是 1 。

三.程序阅读题

1.写出下面程序的运行结果。

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

1 0 0 0 0

0 1 0 0 0

0 0 1 0 0

0 0 0 1 0

0 0 0 0 1

2.写出下面程序的运行结果。

main ( )

{ int i=0;

char a[ ]=”abm”, b[ ]=”aqid”, c[10];

while (a[i]!=‟\0‟ && b[i]!=‟\0‟) {

if (a[i]>=b[i]) c[i]=a[i]-32 ;

else c[i]=b[i]-32 ;

i++;

}

c[i]=‟\0‟;

puts(c);

}

AQM

3.当运行下面程序时,从键盘上输入AabD↙,则写出下面程序的运行结果。 main ( )

{ char s[80];

int i=0;

gets(s);

while (s[i]!=‟\0‟) {

if (s[i]<=‟z‟ && s[i]>=‟a‟)

s[i]=‟z‟+‟a‟-s[i] ;

i++;

}

puts(s);

}

AzyD

4.写出下面程序的运行结果。

main ( )

{ int i,c;

char s[2][5]={“8980”,”9198”};

for (i=3; i>=0 ; i--) {

c=s[0][i]+s[1][i]-2*‟0‟;

s[0][i] = c % 10 + …0‟ ;

}

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

}

7078

9198

5.当运行下面程序时,从键盘上输入7 4 8 9 1 5↙,则写出下面程序的运行结果。 main ( )

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

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

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

for (i=5 ; i>=0; i--) {

k=a[5];

for (j=4; j>=0; j--)

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

a[0]=k;

for (m=0 ; m<6 ; m++)

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

printf(“\n”);

}

}

5 7 4 8 9 1

1 5 7 4 8 9

9 1 5 7 4 8

8 9 1 5 7 4

4 8 9 1

5 7

7 4 8 9 1 5

四.程序判断题

1.下面程序为数组输入数据并输出结果;判断下面程序的正误,如果错误请改正过来。

main ( )

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

int i;

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

for (i=0; i<3; i++) printf(“%d”,a[i]);

}

2.下面程序为数组输入数据并输出结果;判断下面程序的正误,如果错误请改正过来。

main ( )

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

scanf(“%d%d%d”,&a);

for (i=0; i<3; i++) prin tf(“%d”,a[i]);

}

3.下面程序的功能是:先将在字符串s中的字符按逆序存放到t串中,然后把s 中的字符按正序连接到t串的后面。例如,当s中的字符串为:“ABCDE”时则t 中的字符串应为:“EDCBAABCDE”;判断下面程序的正误,如果错误请改正过来。

main ( )

{ char s[80],t[200]; int i,sl ;

gets(s); sl = strlen(s);

for (i=0; i

for (i=0; i

puts(t);

}

4.下面程序的功能是:将n各无序整数从小到大排序;判断下面程序的正误,如果错误请改正过来。

main ( )

{ int a[100], i, j, p, t, n=20 ;

for (j = 0; j

for (j = 0;j

{ p = j;

for ( i=j+1; i

if (a[p]>a[i]) t=i;

if (p!=j)

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

}

for ( j = 0; j

}

5.下面程序的功能是:统计子字符串substr在字符串str中出现的次数。例如,若字符串为aaas lkaaas,子字符串为as,则应输出2;判断下面程序的正误,如果错误请改正过来。

main ( )

{ char substr[80],str[80];

int i,j,k,num=0;

gets(substr); gets(str);

for (i = 0, str[i], i++)

for (j=i,k=0;substr[k]==str[j];k++,j++)

if (substr[k+1]!=‟\0‟) {

num++;

break;

}

printf(“num=%d”, num);

}

2.下面程序将十进制整数n转换成base进制,请填(3)空使程序完整。

main ( )

{ int i=0,base,n,j,num[20] ;

scanf(“%d”,&n);

scanf(“%d”,&base) ;

do {

i++;

num[i]=【1 】;

n=【2 】;

} while (n!=0);

for (【3 】)

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

}

3.下面程序的功能是输入10个数,找出最大值和最小值所在的位置,并把两者对调,然后输出调整后的10个数,请填(3)空使程序完整。

main ( )

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

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

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

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

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

if (a[i]

if (a[i]>max) {max=a[i]; 【2 】; }

}

【3 】;

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

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

}

六.编程题

1.用选择法对10个整数排序。

2.有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中。

4.对三人的四门课程分别按人和科目求平均成绩,并输出包括平均成绩的二维成绩表。

5.提高题:将一个数组中的值按逆序重新存放。例如:原来顺序为8,6,5,4,1。要求改为1,4,5,6,8。

6.提高题:打印出杨辉三角形(要求打印出10行,课本P141页

7.6)

7.提高题:编写程序:

(1)求一个字符串S1的长度;

(2)将一个字符串S1的内容复制给另一个字符串S2;

(3)将两个字符串S1和S2连接起来,结果保存在S1字符串中;

(4)搜索一个字符在字符串中的位置(例如:‟I‟在”CHINA”中的位置为3)。如果没有搜索到,则位置为-1。

(5)比较两个字符串S1和S2,如果S1>S2,输出一个正数;如果S1=S2,输出0;如果S1

以上程序均使用gets或puts函数输入,输出字符串。不能使用string.h中的系统函数。

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语言程序设计第六章数组习题及答案

1.以下对一维整型数组a的定义,正确的是_。(2分) A.int a(10) ; B.int n = 10 , a[n] ; C.int n ; scanf( "%d" , &n ) ; int a[n] ; D.int a[10] ; 2.若有定义:int a[10] ;,则对a数组元素的正确引用是_。(2分) A.a[10] B.a[3.5] C.a(5) D.a[10-10] 3.对定义int a[10] = {6 , 7 , 8 , 9 , 10} ; 的正确理解是_。(2分) A.将5个初值依次赋给a[1]--a[5] B.将5个初值依次赋给a[0]--a[4] C.将5个初值依次赋给a[6]--a[10] D.因为数组长度与初值个数不相同,所以此语句不正确 4..若有定义:int a[3][4]; , 则对a数组元素的正确引用是_。(2分) A.a[3][4] B.a[1,3] C.a[1+1][0] D.a(2)(1) 5.以下对二维数组a初始化正确的语句是_。(2分) A.int a[2][ ]={{0 , 1 , 2}, {3 , 4 , 5}}; B.int a[ ][3]={{0, 1, 2}, {3, 4, 5}}; C.int a[2][4]={{0, 1 , 2}, {3 , 4}, {5}}; D.int a[ ][3]={{0, 1, 2}, { }, {3, 4}}; 6.对二维数组a进行如下初始化: int a[ ][3]={0 , 1 , 2 , 3 , 4 , 5}; 则a[1][1]的值是_。(2分) A.0 B.3 C.4 D.1 7.下面程序段的运行结果是_。(2分) #include int main( ){ int i , x[3][3] = {1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9} ;

C语言程序设计实例教程 第2版 习题答案 作者 李红 第6章 数组

6.4 课后习题 6.4.1 项目练习 一.练习目的 1.进一步巩固一维数组的定义与数组元素的引用方法 2.进一步巩固二维数组的定义与数组元素的引用方法 3.进一步巩固字符数组的定义与引用方法 二.练习内容 1.用起泡法对10个数由大到小进行排序。 分析:起泡法的算法思想是,n个数排序,将相邻两个数依次进行比较,将大数调在前头,逐次比较,直至将最小的数移至最后,然后再将n-1个数继续比较,重复上面操作,直至比较完毕。 可采用双重循环实现起泡法排序,外循环控制进行比较的次数,内循环实现找出最小的数,并放在最后位置上(即沉底)。 #include "stdio.h" main() { int a[10]; int i,j,t; printf("请输入10个整数:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<9;i++) for(j=0;j<9-i;j++) if(a[j]

printf("请输入这10个整数:"); for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<10;i++) { if(a[i]==3) printf("3包含于数列中,输入顺序号是:%d",i+1); else printf("3不包含于此数列中"); } getch(); } 3.编程:一个3*5的数组,要求每行都进行降序排列,并求出每行的平均值。#include "stdio.h" #define N 5 #define M 3 main() { int x,i,j,k,t,a[M][N]; float sum=0.0,avg[M]; //输入数组: for(x=0;xa[x][k]) k=j; if(k!=i) { t=a[x][i]; a[x][i]=a[x][k]; a[x][k]=t; } } } for(x=0;x

C语言程序设计第六章数组习题及答案

C语言程序设计第六章数组习题及答案 1.以下对一维整型数组a的定义,正确的是_。(2分) A.int a(10) ; B.int n = 10 , a[n] ; C.int n ; scanf( "%d" , &n ) ; int a[n] ; D.int a[10] ; 2.若有定义:int a[10] ;,则对a数组元素的正确引用是_。(2分) A.a[10] B.a[3.5] C.a(5) D.a[10-10] 3.对定义int a[10] = {6 , 7 , 8 , 9 , 10} ; 的正确理解是_。(2分) A.将5个初值依次赋给a[1]--a[5] B.将5个初值依次赋给a[0]--a[4] C.将5个初值依次赋给a[6]--a[10] D.因为数组长度与初值个数不相同,所以此语句不正确 4..若有定义:int a[3][4]; , 则对a数组元素的正确引用是_。(2分) A.a[3][4] B.a[1,3] C.a[1+1][0] D.a(2)(1) 5.以下对二维数组a初始化正确的语句是_。(2分) A.int a[2][ ]={{0 , 1 , 2}, {3 , 4 , 5}}; B.int a[ ][3]={{0, 1, 2}, {3, 4, 5}}; C.int a[2][4]={{0, 1 , 2}, {3 , 4}, {5}}; D.int a[ ][3]={{0, 1, 2}, { }, {3, 4}}; 6.对二维数组a进行如下初始化:

int a[ ][3]={0 , 1 , 2 , 3 , 4 , 5}; 则a[1][1]的值是_。(2分) A.0 B.3 C.4 D.1 7.下面程序段的运行结果是_。(2分) #include int main( ){ int i , x[3][3] = {1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9} ; for( i = 0 ; i < 3 ; i++ ) printf( "%2d" , x[i][2-i] ) ; return 0 ; } A.1 5 9 B.1 4 7 C.3 5 7 D.3 6 9 8.以下对数组s的初始化,错误的是_。(2分) A.char s[5] = { "abc" } ; B.char s[5] = { 'a' , 'b' , 'c' } ; C.char s[5] = "" ; D.char s[5] = "abcde" ; 9.对两个数组a和b进行如下初始化: char a[ ] = "ABCDEF" ; char b[ ] = { 'A' , 'B' , 'C' , 'D' , 'E' , 'F' } ; 则以下叙述正确的是_。(2分) A.a和b数组完全相同 B.a与b长度相同 C.a的长度比b短

C语言数组练习及答案

第四部分数组 4.1选择题 1.以下关于数组的描述正确的是(c} A.数组的大小是固定的,但可以有不同的类型的数组元素 B.数组的大小是可变的,但所有数组元素的类型必须相同 C.数组的大小是固定的,所有数组元素的类型必须相同 D.数组的大小是可变的,可以有不同的类型的数组元素 2.以下对一维整型数组a的正确说明是(d)。 A.inta(10); C.intn; scanf("%d",&n); inta[n]; B.intn=10,a[n]; D.#defineSIZE10inta[SIZE]; 3.在C语言中,引用数组元素时,其数组下标的数据类型允许是(c)。 A.整型常量 B.整型表达式 C.整型常量或整型表达式 D.任何类型的表达式 页脚内容1

4.以下对一维数组m进行正确初始化的是(c)。 A.intm[10]=(0,0,0,0); B.intm[10]={}; C.intm[]={0}; D.intm[10]={10*2}; 5.若有定义:intbb[8];。则以下表达式中不能代表数组元bb[1的地址的是(c> A.&bb[0]+1 B.&bb[1] C.&bb[0]++ D.bb+1 6.假定int类型变量占用两个字节,具有定义:intx[10]={0,2,4};,则数组x在内存中所占字节数是(d) A.3 B.6 C.10 D.20 7.若有以下说明: inta[12]={1,2,3,4,5,6,7,8,9,10,11,12}; charc='a',d,g; 则数值为4的表达式是(d) A.a[g-c] B.a[4] C.a['d'-'c'] D.a['d'-c] 8.以下程序段给数组所有的元素输入数据,请选择正确答案填入(a)。 #includemain() { inta[10],i=0; while(i<10)scanf("%d",); 页脚内容2 ) A.a+(i++) B.&a[i+1] C.a+i D.&a[++i] 9.执行下面的程序段后,变量k中的值为(a)。 intk=3,s[2];

C语言第六章数组习题答案

第六章 数组 习题答案 2、0 4 3、0 6 4、&a[i] i%4==0 printf("\n"); 5、i+j==3_ a[i][j] 6、12 7、a[i][j]+b[i][j] printf(“\n ”) 8、按行存放 9、( a[i]>a[j]) 10、将串str2复制到串str1中后再将串str3连接到串str1之后 三、阅读题 1、如右图所示 2、AQM 3、AzyD 4、9198 5、如右图所示 6、92 7、1,2,5,7, 8、2 9、v1=5,v2=8,v3=6,v4=1 10、a*b*c*d* 四、编程题 1(1)选择法排序 #include void main( ) {int i,j,n=10,p,a[10];int temp; for(i=0;i

for(j=i+1;j void main( ) {int i,j,n=10,p,a[10];int temp; for(i=0;ia[j]) {temp=a[i];a[i]=a[j];a[j]=temp;} printf("\n排序后的一维数组:\n"); for(i=0;i void main( ) {int a[11],i,n=10,k; int point; printf("\n 请输入原始数据:\n"); for(i=0;ik) {point=i; break;} if(i!=n) {for(i=n;i>point;i--) a[i]=a[i-1]; a[point]=k;} /*从后向前方式*/ else a[n]=k; printf("插入后的数是:\n"); for(i=0;i int main() {int i,j,upp,low,dig,spa,oth; char text[3][80];

c语言数组试题及答案

c语言数组试题及答案 1. 请编写一个程序,要求用户输入10个整数,然后将其存储在一个数组中,并输出这个数组的内容。 答案: ```c #include int main() { int numbers[10]; int i; printf("请输入10个整数:\n"); for (i = 0; i < 10; i++) { scanf("%d", &numbers[i]); } printf("数组内容为:\n"); for (i = 0; i < 10; i++) { printf("%d ", numbers[i]); } return 0; }

``` 2. 请编写一个程序,要求用户输入一个整数n(n>0),然后分别输入n个整数存储在一个数组中,计算并输出这个数组中所有元素的和。 答案: ```c #include int main() { int n; int numbers[100]; int sum = 0; int i; printf("请输入整数n:\n"); scanf("%d", &n); printf("请输入%d个整数:\n", n); for (i = 0; i < n; i++) { scanf("%d", &numbers[i]); sum += numbers[i]; } printf("数组元素之和为:%d\n", sum);

return 0; } ``` 3. 请编写一个程序,要求用户输入一个整数n(n>1),然后分别输入n个整数存储在一个数组中,计算并输出这个数组中最大和最小的元素。 答案: ```c #include int main() { int n; int numbers[100]; int max, min; int i; printf("请输入整数n:\n"); scanf("%d", &n); printf("请输入%d个整数:\n", n); for (i = 0; i < n; i++) { scanf("%d", &numbers[i]);

C语言习题六(数组部分)习题及答案

C语言习题六(数组部分)习题及答案 习题六 一.选择题 1.在C语言中,引用数组元素时,其数组下标的数据类型允许是 c 。A)整型常量B)整型表达式 C)整型常量或整型表达式C)任何类型的表达式 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.若有定义:int a[10],则对数组a元素的正确引用是 D 。 A)a[10] B)a[3.5] C)a(5) D)a[10-10] 4.以下不能对一维数组a进行正确初始化的语句是B 。 A)int a[10]={0,0,0,0,0}; B)int a[10]={} ; C)int a[ ] = {0} ; D)int a[10]={10*1} ; 5.若有定义:int a[3][4],则对数组a元素的正确引用是。A A)a[2][3] B)a[1,3] C)a(5) D)a[10-10] 6.以下能对二维数组a进行正确初始化的语句是B。 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}} ; 7.以下不能对二维数组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} ; 8.若有说明:int a[3][4]={0};则下面正确的叙述是D。

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语言程序设计(第二版)-习题答案 第6章习题答案

《C语言程序设计(Visual C++6.0环境)》习题答案 习题六 一、思考题 1、编写程序,将10个整形数 2、4、6,…18,20赋给一个数组,然后使用指针输出显示该数组各元素的值。 #include “stdio.h” main() {int i,*p; int a[10]={2,4,6,8,10,12,14,16,18,20}; p=a; for(i=0;i<10;i++) printf(“%3d”,*(p+i)); } 2、编写程序,将两个字符串连接起来。 #include #define N 120 main() { char s1[N+N],s2[N],*p,*q; printf("输入2个字符串\n"); scanf("%s%s",s1,s2); for(p=s1;* p!='\0'; p++); for(q=s2;*p++=*q++;); printf("两字符串连接后:%s\n",s1); } 3、输入5个字符串,按英文字典排序从小到大顺序输出。 #include "stdio.h" #include "string.h" void sort(char *name[],int count) {char *temp; int i,j,min; for(i=0;i0) min=j; if(min!=i) {temp=name[i];name[i]=name[min];name[min]=temp;} }} main() {char *name[5]={"BASIC","FORTRON","PASAL","C","FOXBASE"};

c语言练习题6(数组与链表,有答案)

c语言练习题6(数组与链表,有答案) 1、(1)数据结构中,与所使用的计算机无关的是数据的_C_______。 A)存储结构B)物理结构C)逻辑结 构D)物理和存储结构 评析:数据结构概念一般包括3个方面的内容,数据的逻辑结构、存储结构及数据上的运算集合。数据的逻辑结构只抽象的反映数据元素之间的逻辑关系,而不管它在计算机中的存储表示形式。 2、栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈, 则出栈序列可能是____D____。 A)ABCED B)DBCEA C)CDABE D)DCBEA 评析:栈操作原则上“后进先出”,栈底至栈顶依次存放元素A、B、c、D,则表明这4个元素中D是最后进栈,B、c处于中间,A最早进栈。所以出栈时一定是先出D,再出c,最后出A。 3、线性表的顺序存储结构和线性表的链式存储结构分别是____B____。 A)顺序存取的存储结构、随机存取的存储结构 B)随机存取的存储结构、顺序存取的存储结构 C)随机存取的存储结构、随机存取的存储结构 D)任意存取的存储结构、任意存取的存储结构 评析:顺序存储结构中,数据元素存放在一组地址连续的存储单元中,每个数据元素地址可通过公式LOC(ai)。LOC(a1)+(i-1)L计算得到,从而实现了随机存取。对于链式存储结构,要对某结点进行存取,都得从链的头指针指向的结点开始,这是一种顺序存取的存储结构。 4、在单链表中,增加头结点的目的是____A__。 A)方便运算的实现B)使单链表至少有一个结点 C)标识表结点中首结点的位置D)说明单链表是线性表的链式存储实现 评析:头结点不仅标识了表中首结点的位置,而且根据单链表(包

C语言第六章习题答案

6.1 用筛选法求100之内的素数. #include #define N 101 void main() { int i,j,line,a[N]; for(i=1;i<=100;i++) a[i]=i; a[1]=0; for(i=2;i

} } 6.2 用选择法对10个数排序. #define N 10 main() { int i,j,min,temp,a[N]; printf("请输入十个数:n"); for (i=0;i<=10;i++) { printf("a[%d]=",i); scanf("%d",&a[i]); } printf("n"); for(i=1;i<=10;i++) printf("%5d",a[i]); printf("n"); for (i=1;i<=9;i++) { min=i; for(j=i+1;j<=10;j++) if(a[min]>a[j]) min=j; temp=a[i]; a[i]=a[min];

a[min]=temp; } printf("n排序结果如下:n"); for(i=0;i

C语言程序设计习题答案(6-13)

C语言程序设计习题答案 习题六数组 一、选择题 1~10:BDBCD CDBAB 11~20:BCDCC DABBC 21~30:CCADC ABBCB 31~41:BDDDD CDCCB A 二、填空题 1.9 、0 2.先行后列 3.连续的存储空间中 4.QuickC 5。(c=getchar( )) 、‘A’+i或65+i 6. ‘\0’、str1[i]—str2[i] 7.CDABC 8.10 14 9. 6 10. 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 11.600 12.AzyD 13 4 some string *test 三、编程题 1。定义一个有20个元素的整型数组,分别求出下标为奇数和偶数的元素的平均值。 答:程序参见文件Cprogram\xt6_3_01.c #include "stdio。h" #include "math.h" main() {int i,s0=0,s1=0,a[20]; for(i=0;i<20;i++) a[i]=rand()%100; for(i=0;i〈20;i+=2) {printf(”%3d”,a[i]); s0=s0+a[i]; } printf(” sum is:%d ave=%f\n",s0,s0/10。0); for(i=1;i〈20;i+=2) {printf("%3d”,a[i]); s1=s1+a[i]; } printf(" sum is:%d ave=%f\n”,s1,s1/10。0); }

2. 设有一个整型数组,另输入一个整数,编程查找这个整数是否在数组中出现过,若出现,则输出第一次出现的位置,否则,输出no found。 答:程序参见文件Cprogram\xt6_3_02.c #include ”stdio。h” #include "math.h" main() {int i,s,a[20]; for(i=0;i<20;i++) a[i]=rand()%100; scanf(”%d”,&s); for(i=0;i<20;i++) if(a[i]==s) {printf(”found:a[%d]=%d\n”,i,a[i]); break; } if(i==20) printf(”no found\n”); for(i=0;i<20;i++) printf("%3d",a[i]); printf("\n"); } 3. 设有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入到数组中。 答:程序参见文件Cprogram\xt6_3_03。c #include ”stdio.h” #define N 10 main() {int i, j, s, a[N]={17,15,13,11,9,7,5,3,1}; //int a[N]={1,3,5,7,9,11,13,15,17}; scanf("%d",&s); i=0; if (a[0]i;j-—) a[j]=a[j-1]; a[j]=s; for(i=0;i〈N;i++) printf(”%3d”,a[i]); printf("\n”); } 4. 编一程序,从一个已排好序的数组中删去某个位置上的元素。 答:程序参见文件Cprogram\xt6_3_04。c #include "stdio。h” #define N 10 main() {int i,j,a[N]={1,3,5,7,9,11,13,15,17,19}; for(i=0;i〈N;i++) printf(”%3d”,a[i]); printf(”\n”); scanf(”%d",&i);

相关文档
相关文档 最新文档