C语言单元三测试题

C语言单元三测试题

2023年7月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】________ printf("%3d",a[i]);

}

printf("n");

}

3. 下面程序可求出矩阵a的主对角线上的元素之和,请填空。

main()

{int a[3][3]={1,3,5,7,9,11,13,15,17},sum=0,i,j;

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

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

if(___【6】__)sum=sum+___【7】____;

printf("sum=%dn",sum);

}

4. 当从键盘输入18并回车后,下面程序的运行结果是___【8】_____.

main()

{int x,y,i,a[8],j,u,v;

scanf("%d",&x);

y=x;i=0;

do

{u=y/2;

a[i]=y%2;

i++;y=u;

}while(y>=1)

for(j=i-1;j>=0;j--)

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

}

5. 下面程序用插入法对数组a进行降序排序。请填空。

main()

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

int i,j,m;

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

{m=a[i];

j=____;【9】

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

{_______;【10】

j--;

}

_______=m; 【11】

}

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

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

printf("n");

}

6. 下面程序的功能是在三个字符串中找出最小的,请填空。

#include

#include

main()

{char s[20],str[3][20];

int i;

for(i=0;i<3;i++)gets(str[i]);

strcpy(s,_______); 【12】

if(strcmp(str[2],s)<0)strcpy(s,str[2]);

printf("%sn",_______);【13】

}

7. 下面程序的运行结果是________.【14】

#include

main()

{char s[]="ABCCDA";

int k;char c;

for(k=1;(c=s[k])!='0';k++)

{switch(C)

{case 'A':putchar('%');continue;

case 'B':++k;break;

default:putchar('*');

case 'C':putchar('&');continue;

}

putchar('#');

}

}

8.以下程序的运行结果是_____.【15】

#include

main()

{int a=1,b=2,c;

c=max(a,B);

printf("max is %dn",C);

}

max(int x,int y)

{int x;

z=(x>y)?x:y;

return(z);

}

9.函数gongyu的作用是求整数num1和num2的最大公约数,并返回该值。请填空。 gongyu(int num1,int num2)

{int temp,a,b;

if(num1(_____) num2) 【16】

{temp=num1;num1=num2;num2=temp;}

a=num1;b=num2;

while(____)【17】

{temp=a%b;a=b;b=temp;}

return(A);

}

10.以下程序的运行结果是________.【18】

int a=5;int b=7;

main()

{ int a=4,b=5,c;

c=plus(a,B);

printf("A+B=%dn",C);

}

plus(int x,int y)

{int z;

z=x+y;

return(x);

}

11.以下程序的运行结果是_______.【19】

main()

{incx();

incy();

incx();

incy();

incx();

incy();

}

incx()

{

int x=0;

printf("x=%dt",++x);

}

incy()

{static int y=0;

printf("ny=%dn",++y);

}

12.下面程序段的运行结果是__________。【20】//本程序将数字字符串转换成数值

#include "stdio.h"

main()

{

char ch[]="600"; //ch中放数字字符串 int a,s=0; //转换后的值放在s中

for(a=0;ch[a]>='0'&&ch[a]<='9';a++) //当字符为数字字符时循环,否则跳出

s=10*s+ch[a]-'0'; //将数字字符与’0’相减,再加上初值的十倍,得到数值

printf("n%d",s);

}

13. 以下正确的说法是__________。【21】

A) 用户若需调用标准库函数,调用前必须重新定义

B) 用户可以重新定义标准库函数,若如此,该函数将失去原有含义

C) 系统根本不允许用户重新定义标准库函数

D) 用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调

14. 以下正确的函数定义形式是__________。【22】

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

15. 以下正确的说法是__________。在C语言中 【23】

A) 实参和与其对应的形参各占用独立的存储单元

B) 实参和与其对应的形参共占用一个存储单元

C) 只有当实参和与其对应的形参同名时才共占用存储单元

D) 形参是虚拟的,不占用存储单元

16. 以下正确的说法是__________。【24】

A) 定义函数是,形参的类型说明可以放在函数体内

B) return后边的值不能为表达式

C) 如果函数值的类型与返回值类型不一致,以函数值类型为准

D) 如果形参与实参的类型不一致,以实参类型为准

18. C语言允许函数值类型缺省定义,此时该函数值隐含的类型是__________。【25】

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

三、编程题

1.定义一个10个元素的一维数组,然后完成下列任务:

(1) 用随机函数给元素赋以(30,90)间的随机值,并输出。

(2) 用冒泡法对数组作升序排序,并输出后的数。

(3) 从键盘输入一个数,然后插入数组中,并使数组仍然有序;然后输出插入后的数组。

(4) 从键盘输入一个原数组中存在的数,然后从数组中删除此数;然后输出删除后的数组。

2.将上题中的输出定义为一个输出函数“out(int a[],n)”,然后完成上题中的所有任务。

发布者:admin,转转请注明出处:http://www.yc00.com/news/1689940882a295852.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信