文档库 最新最全的文档下载
当前位置:文档库 › C语言数组练习及答案

C语言数组练习及答案

C语言数组练习及答案
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",________ );

}

A、 a+(i++)

B、 &a[i+1]

C、 a+i

D、 &a[++i]

9、执行下面得程序段后,变量k中得值为(a )。

int k=3, s[2];

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

A、不定值

B、 33

C、 30

D、 10

10、以下程序得输出结果就是(c )

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、以下程序运行后,输出结果就是(d )。

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、以下程序运行后,输出结果就是(b )。

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、以下程序运行后,输出结果就是(a )。

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、以下程序运行后,输出结果就是(b )。

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、以下程序运行后输出结果就是(d )。

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。程序缺少得就是 (b )。

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数组元素得正确引用就是(c ) 。

A、 a(1,2)

B、 a[1,3]

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

D、 a[2][0]

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

A、此定义语句不正确

B、没有元素可得初值0

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

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

19、若有以下数组定义,其中不正确得就是(d ) 。

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数组得表达式就是(c )。

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

A、 4

B、 1

C、 2

D、 5

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

A、 n[2][5]

B、 n[2][4]

C、 n[1][3]

D、 n[1][4]

23、若二维数组c有m列,则计算任一元素c[i][j]在数组中得位置得公式为(d )。(假设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]”得值就是(a )。

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、以下程序运行后,输出结果就是 (a )。

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、以下程序运行后,输出结果就是(b )。

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

A、 18

B、 19

C、 20

D、 21

28、若定义如下变量与数组:

int i;

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

则下面语句得输出结果就是(c )。

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语言字符数组得描述中错误得就是(c )。

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

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

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

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

30、下述对C语言字符数组得描述中正确得就是 (a )。

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

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

C、任何一个一维数组得元素,可以根据内存得情况按照其先后顺序以连续或非连续得方式占用存储空间

D、一维数组得第一个元素就是其下标为1得元素

31、不能把字符串:Hello!赋给数组b得语句就是(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、合法得数组定义就是(d )。

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、下列语句中,不正确得就是(c )。

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

则正确得叙述为(c )。

A、数组x与数组y等价

B、数组x与数组y得长度相同

C、数组x得长度大于数组y得长度

D、数组x得长度小于数组y得长度

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

A、 4个字节

B、 5个字节

C、 6个字节

D、 7个字节

36、若有定义与语句:

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

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

A、输出abcd

B、输出a

C、输出abcd└┘└┘└┘└┘

D、编译不通过

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

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<回车>,输出结果就是

(d )。

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<回车>

则输出结果为(c )。

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时,输出得结果就是(a )。

#include

main()

{

char ss[10]="12345";

strcat(ss, "6789" );

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

}

A、 ABC

B、 ABC9

C、 123456ABC

D、 ABC456789

41、判断两个字符串就是否相等,正确得表达方式就是(c )。

A、while(s1==s2)

B、 while(s1=s2)

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

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

42、以下程序得输出结果就是(a )。

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

上面程序片段得输出结果就是 (c )。

A、 3

B、 4

C、 6

D、 12

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

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

A、 5

B、 7

C、 12

D、 14

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

main()

{

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

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

}

A、 "AAAA"

B、 "BBB"

C、 "BBBCC"

D、 "CC"

47、以下程序运行后,输出得结果就是(d )。

#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、以下程序运行后,输出结果就是(a )。

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

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语言程序设计实验报告(数组)

C语言程序设计实验报告(数组) 1实验目的 (1)熟练掌握一维数组,二维数组的定义,初始化和输入、输出方法; (2)熟练掌握字符数组和字符串函数的使用; (3)掌握与数组有关的常用算法(查找、排序等)。 2实验内容 编写函数catStr(char str1[],char str2[])用于进行两个字符串的连接,编写函数lenStr(char str[])用于统计一个字符串的长度,并在主函数中调用。 要求: 1、不允许用strcat()和strlen()字符处理库函数; 2、在主函数以直接初始化的方式输入两个字符串str1和str2.调用函数 strlen()计算并返回两个字符串的长度; 3、调用函数catstr()连接两个字符串(将str2连接在str1后面); 4、调用函数lenstr()计算并返回连接后字符串的长度; 5、在主函数中输入两个原始的字符串及几个字符串的长度,以及处理后字 符串及其长度。

3算法描述流程图

4源程序 #include #include void catStr(char str1[],char str2[]) { int i,j; for (i=0;str1[i]!='\0';i++); for(j=0;str2[j]!='\0';j++) str1[i+j]=str2[j]; str1[i+j]='\0'; } lenStr(char m[] ) {int i;

for (i=0;m[i]!='\0';i++); printf("%d",i); } void main() {char s1[50]="forever",s2[50]="more"; printf("s1=%s,s2=%s",s1,s2); printf("\ns1的长度:"); lenStr(s1); printf("\ns2的长度:"); lenStr(s2); catStr(s1,s2); printf("\n连接后的字符:"); printf("%s\n",s1); printf("连接后字符的长度:"); lenStr(s1); printf("\n"); } 5测试数据 s1=forever, s2=more 6运行结果 7出现问题及解决方法 在输入程序时,少写了半边引号,调试时发现存在错误,找到了错误并加以改正。无论什么事,细心都是必不可少的,认真是解决问题的关键。 8实验心得 通过本次实验,对于函数的定义和声明,数组以及循环语句有了进一步的认识,掌握了字符数组和字符串函数的使用,以及与数组有关的常用算法。此次实验不是调用strlen()和strcat()函数,而是通过自己设计程序来进行字符串的连接以及计量字符串的长度,由此我学会了如何去理清自己的思路来设计程序。

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

第四部分数组 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语言数组编程题

实验4 数组 一.实验目的: 1.掌握一维数组的定义、赋值和输入输出的方法; 2.掌握字符数组定义、初始化、赋值的方法; 3.了解常见的字符串函数功能及其使用方法; 4.掌握二维数组的定义与引用。 二.实验内容: 1.编写程序,输入10个整数存入一维数组,统计输出其中的正数、负数和零的个数。 2.编写程序,输入10个整数存入一维数组,再按逆序重新存放后再输出。 3.编写程序,输入10个整数存入一维数组,对其进行升序排序后输出。 4.编写程序,求二维数组中元素的最大值和最小值。 5.编写程序,求一个4×4矩阵中所有元素之和。 6.编写程序:从键盘上输入一字符串,统计输出该字符串中的字母字符、数字字符、空格以及其他字符的个数。 7.编写程序:从键盘上输入一字符串,并判断是否形成回文(即正序和逆序一样,如“abcd dcba”)。 8. 产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。 9. 产生一个由10个元素组成的一维数组,数组元素由随机数(0-99)构成。按照升序排列并输出。再输入一个数,按原来的规律将其插入并输出。 页脚内容1

10. 产生一个由10个元素组成的一维数组,数组元素由随机数(0-99)构成。按照升序排列并输出。再输入一个数,要求找出该数是数组中的第几个元素,如果不在数组中,则输出找不到。 11. 找出一个二维数组中的鞍点,即该位置上的元素在该行最大,在该列最小。可能没有鞍点。 12. 编程输出杨辉三角。(要求输出10行)(杨辉三角:每行端点与结尾的数为1.每个数等于它上方两数之和。每行数字左右对称,由1开始逐渐变大) 13. 输入一行字符,统计大写字母、小写字母、数字、空格以及其它字符个数。 14. 编写程序,将两个字符串连接起来,不用strcat。 15. 编写程序实现strcpy函数功能。 16. 编程实现strlen函数功能。 17. 编程求2-4+6-8…-100+102的值。 18. 假设某人有100,000现金。每经过一次路口需要进行一次交费。交费规则为当他现金大于50,000时每次需要交5%如果现金小于等于50,000时每次交5,000。请写一程序计算此人可以经过多少次这个路口。 19. 输入若干个正整数,以0结束,将其中大于平均值且个位为5的数排序后输出。(按由大到小的顺序排序) 20. 输入一个字符串,将其中ASCII码值为基数的字符排序后输出。(按由小到大的顺序) 21. 输入一个以回车结束的字符串(少于80个字符),滤去所有的非16进制字符后,组成一个新字符串(16进制形式),然后将其转换为10进制数后输出。 22. 读入一个正整数n(1<=n<=6),再读入n阶矩阵,计算该矩阵除副对角线、最后一行、最后一列 页脚内容2

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语言综合习题及答案

C语言综合习题及答案 Prepared on 24 November 2020

C语言练习题 一、选择题 1. 一个完整的C源程序是【B 】。 A)要由一个主函数或一个以上的非主函数构成 B)由一个且仅由一个主函数和零个以上的非主函数构成 C)要由一个主函数和一个以上的非主函数构成 D)由一个且只有一个主函数或多个非主函数构成 2. 以下关于函数的叙述中正确的是【C】。 A)C语言程序将从源程序中第一个函数开始执行 B)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行C)C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束 D)main可作为用户标识符,用以定义任意一个函数 3. 以下关于函数的叙述中不正确的是【B】。 A)C程序是函数的集合,包括标准库函数和用户自定义函数 B)在C语言程序中,被调用的函数必须在main函数中定义 C)在C语言程序中,函数的定义不能嵌套 D)在C语言程序中,函数的调用可以嵌套 4. 在一个C程序中,【B 】。 A)main函数必须出现在所有函数之前 B)main函数可以在任何地方出现 C)main函数必须出现在所有函数之后 D)main函数必须出现在固定位置 程序的执行是从【A 】开始的。 A)主函数 B)子函数 C)从程序第一行 D)printf()函数 6.以下选项中不合法的标识符是【C 】 A)print B)FOR C)&a D)_00 7.以下选项中可作为C语言合法常量的是【A】 A)-80 B)-080 C) D) 8.以下选项中不属于字符常量的是【B】 A)′C′ B)"C" C)′\xCC′ D) ′\072′ 9. 若在C语言中未说明函数的类型,则系统默认该函数的数据类型是【C】

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

第四部分数组 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、有以下程序 main() { int a[]={2,4,6,8,10}, y=0, x, *p; p=&a[1]; for(x= 1; x< 3; x++) y += p[x]; printf("%d\n",y); } 程序运行后的输出结果是 A)10 B)11 C)14 D)15 2、有以下程序 void sum(int a[]) { a[0] = a[-1]+a[1]; } main() { int a[10]={1,2,3,4,5,6,7,8,9,10}; sum(&a[2]); printf("%d\n", a[2]); } 程序运行后的输出结果是 A)6 B)7 C)5 D)8 3、有以下程序 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)45 C)56 D)60 4、设有定义语句 int x[6]={2,4,6,8,5,7},*p=x,i; 要求依次输出x数组6个元素中的值,不能完成此操作的语句是 A)for(i=0;i<6;i++) printf("%2d",*(p++)); B)for(i=0;i<6;i++) printf("%2d",*(p+i)); C)for(i=0;i<6;i++) printf("%2d",*p++); D)for(i=0;i<6;i++) printf("%2d",(*p)++); 5、有以下程序 #include < stdio.h > main() { int a[]={1,2,3,4,5,6,7,8,9,10,11,12,},*p=a+5,*q=NULL; *q=*(p+5); printf("%d %d\n",*p,*q); } 程序运行后的输出结果是 A)运行后报错 B)6 6 C)6 11 D)5 10

广技师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语言数组练习及答案

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语言考试题(含答案)

大学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、使用选择法、冒泡法对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++)

C语言程序设计数组(说课稿)

C语言程序设计——数组(说课稿) 南京浦口中等专业学校—陈松一、课程目标 《C语言程序设计》是中职对口单招计算机专业理论考试和技能考试中一门重要的课程。要求学生掌握计算机编程语言的基本知识,初步掌握程序设计的基本思想,具有基本的C程序设计能力,能比较熟练地阅读、理解和编制简单的C程序。 二、学情分析 本课程是针对综合高中对口单招班高二年级计算机专业的学生,学生已学习了计算机基础和计算机原理课程,对专业知识有了一定的了解。但班级学生参差不齐,不少学生学习习惯较差,基础较薄弱。教师必须首先弄清学生对专业课学习的障碍及原因,再根据教学原理制定出相应的对策,培养学生学习的积极,提高解决实际问题的能力。 三、教材与参考书 本课程使用的教材是《C语言编程基础》(第2版)电子工业出版社。此教材分为两部分,第一部分是基础知识模块,第二部分是选用模块。对口单招学生只学习第一部分内容,第二部分内容单招计算机专业的考纲中是不要求的。 辅导练习: 1、C语言阶段综合测试卷集。 2、自己编写的每次课的学生工作页。

四、教材分析 1、单元内容 数组单元是C语言的一个重要章节,本单元教学内容有: (1)一维数组的定义、引用和初始化、一维数组应用。 (2)二维数组的定义、引用和初始化、二维数组应用。 (3)字符串与字符数组、字符串的输入输出、字符串处理函数、字符数组应用。 2、单元设计 (1)本单元每次课都编写了学生工作页,让学生根据任务去学习本单元内容。 (2)本单元加强了上机实习的课时数,着重培养学生上机实践能力,提高他们的程序设计能力。

3、教学目标 ?知识目标: (1)了解一维数组、二维数值型数组的定义和使用方法。 (2)掌握对数组的初始化。 (3)掌握字符串的输入、输出和处理。 (4)熟练掌握使用数组进行程序设计的方法。 (5)理解程序设计中的几种常见算法的基本思路。 ?技能目标: (1)学生能正确的定义数组;能正确的引用数组和初始化数组;能使用数组进行程序设计。 (2)培养学生的分析、思考能力,提高解决问题的能力。 ?情感目标: (1)通过上机实习调试程序,在学习中培养学生理论联系实际,使学生对编程更加感兴趣。 (2)培养学生认真学习的态度,激发学生学习C语言的兴趣。 4、单元重、难点 ?重点: 数组的定义、引用和初始化。 ?难点: 数组的应用及常见算法的基本思路。

C语言程序设计实验报告-数组

一、实验项目名称 数组 二、实验目的 1.掌握数组的基本概念,包括:数组的定义、数组的类型、数组的初始化、数组的赋值、数组元素下标的范围、数组元素的正确以及引用数组元素的输入/输出。 2.掌握字符数组与字符串的使用方法。理解字符数组与其它数组的区别、理解字符串及其特点。掌握常用的字符串处理库函数的用法并清楚对字符串的简单处理。 3.掌握与数组相关的算法,包括排序算法和查找算法等。 三、实验内容 进行有关数组的程序设计。 具体内容: 1.编程实现:对任意一个一维数组,从中找出数组元素的最大值和最小值。 要求: (1)数组为整型数组(10个元素)。 (2)使用scanf函数实现数组元素的输入。在输入前给出必要的提示。 (3)输出时给出必要的说明,首先输出原始的10个元素,换行后输出最大值以及最大值在数组中的位置、最小值以及最小值在数组中的位置。 (4)如果现改为20个元素的数组,怎样修改程序?修改程序后,运行程序进行检查。如果需要数组元素不断改变,应怎样修改程序? 2.编程实现:在给定的字符串中查找满足条件的第一个字符。 要求: (1)字符串采用初始化的方式处理。 (2)通过scanf函数读入一个任意字符。 (3)在字符串中查找该字符,如果存在该字符,输出该字符在字符串中的位置以及相应的说明。如果不存在该字符,则要给出相应的信息。 3.编程实现:首先任意输入一个大于2且小于10的整数n,再输入一个由n决定的二维整型数组(n ?n),形成n ?n阶矩阵,将矩阵中最大元素所在的行和最小元素所在的行对调后,再输出该矩阵(注意:数组不允许动态定义)。 例如:原始数据:n=4 结果数据: 1 2 3 4 8 11 14 16 3 5 9 10 3 5 9 10 8 11 14 16 1 2 3 4 15 2 7 6 15 2 7 6 要求: (1)本题中所涉及到的循环都采用for语句。 (2)在输入/输出时进行必要的说明。

相关文档