admin 管理员组

文章数量: 1087139


2024年4月21日发(作者:相框图片素材)

C语言程序设计_单元测试题三

本单元包含“数组、函数”的内容。

一、选择题

1.以下为一维整型数组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];

2.以下对二维数组a的正确说明是________.

A)int a[3][]; B)float a(3,4);

C)double a[1][4] D)float a(3)(4);

3.若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为______.

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

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

4.若二维数组a有m列,则在a[i][j]前的元素个数为________.

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

5.25.若有以下程序段:

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

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

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

while(j>=0&&t>a[j])

{a[j+1]=a[j];j--;}

a[j+1]=t;}

... ...

则该程序段的功能是_________.

A)对数组a进行插入排序(升序) B)对数组a进行插入排序(降序)

C)对数组a进行选择排序(升序) D)对数组a进行选择排序(降序)

6.有两个字符数组a、b,则以下正确的输入语句是_______.

A)gets(a,B); B)scanf("%s%s",a,B);

C)scanf("%s%s",&a,&B); D)gets("a"),gets("b");

7.下面程序段的运行结果是_________.

char a[7]="abcdef";

char b[4]="ABC";

strcpy(a,B);

printf("%c",a[5]);

A)空格 B)0 C)e D)f

8.判断字符串s1是否大于字符串s2,应当使用_______.

A)if(s1>s2) B)if(strcmp(s1,s2))

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

9.下面程序的功能是从键盘输入一行字符,统计其中有多少个单词,单词之间用

空格分隔,请选择填空。

#include

main()

{

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

int i=0,num=0;

gets(s);

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

{c1=s[i];

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

else c2=s[i-1];

if(___)num++

i++;

}

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

}

A)c1==''&&c2=='' B)c1!=''&&c2==''

C)c1==''&&c2!='' D)c1!=''&&c2!=''

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

#include

main()

{char str[]="SSSWLIA",c;

int k;

for(k=2;(c=str[k])!='0';k++)

{switch(C)

{case 'I':++k;break;

case 'L':continue;

default:putchar(C);continue;

}

putchar('*');

}

}

A)SSW* B)SW* C)SW*A D)SW

11.以下正确的说法是_________.

建立函数的目的之一是

A)提高程序的执行效率 B)提高程序的可读性

C)减少程序的篇幅 D)减少程序文件所占内存

12.以下正确的函数定义形式是________.

A)double fun(int x,int y) B)double fun(int x; int y)

C)double fun(int x, int y); D)double fun(int x,y);

13.C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式为______.

A)地址传递

B)单向值传递

C)由实参传给形参,再由形参传回给实参

D)由用户指定传递方式

14.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是______.

A)float B)int C)long D)double

15.已有以下数组定义和f函数调用语句,则在f函数的说明中,对形参数组array

的错误定义方式为________.

int a[3][4];

f(A);

A)f(int array[][6]) B)f(int array[3][])

C)f(int array[][4]) D)f(int array[2][5])

16.以下程序的正确运行结果是_________.

#include

void num()

{extern int x,y;int a=15,b=10;

x=a-b;

y=a+b;

}

int x,y;

main()

{

int a=7,b=5;

x=a+b;

y=a-b;

num();

printf("%d,%dn",x,y);

}

A)12,2 B)不确定 C)5,25 D)1,12

17. 以下对一维整型数组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];

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

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

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

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

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

20.下面程序段的运行结果是_________。

char a[7]=”abcdef”;

char b[4]=”ABC”;

strcpy(a,b);

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

A)[空格] B)0 C)e D)f

21.对两个数组a和b进行如下初始化

char a[ ]=”ABCDEF”;

char b[ ]={‘A’,’B’,’C’,’D’,’E’,’F’};

则以下叙述正确的是_________。

A)a与b数组完全相同 B)a与b长度相同

C)a和b中都存放字符串 D)a数组比b数组长度长

22. 对以下说明语句的正确理解是_________。

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) 因为数组长度与初值的个数不相同,所以此语句不正确

23. 若二维数组a有m列,则在a[i][j]前的元素个数为_________。

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

24. 若有以下程序段:

„„

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

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

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

while(j>=0&&t>a[j])

{a[j+1]=a[j];j--;}

a[j+1]=t;

„„

}

则该程序段的功能是_________。

A) 对数组a进行插入排序(升序)

B) 对数组a进行插入排序(降序)

C) 对数组a进行选择排序(升序)

D) 对数组a进行选择排序(降序)

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

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

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

二、填空题

1. 若有定义:double x[3][5];则x数组中行下标的下限为____【1】_____,列下标的上限为____【2】_____.

2.下面程序以每行4个数据的形式输出a数组,请填空。

#define N 20

main()

{int a[N],i;

for(i=0;i

for(i=0i

{if (______【4】_______) _____【5】________


本文标签: 数组 程序 进行 函数 字符串