首页 > 全部 > 二级C语言 > 国家二级C语言(函数和数组)机试模拟试卷16

国家二级C语言(函数和数组)机试模拟试卷16

本单篇文档共10028字,内容预览3600字,预览为有答案版,源文件无水印,下载后包含无答案空白卷版和有答案版,同时也有计算机类NCRE全国计算机二级整科真题模拟题,讲义课件,思维导图,易错高频题等下载。
二级C语言 章节练习 2491人下载
价格: 2.00 原价:¥9.60
收藏

国家二级C语言(函数和数组)机试模拟试卷16

选择题

1.有以下程序

#include <stdio.h>

void fun(int a, int b)

{ int t;

t=a; a=b; b=t;

}

main()

{ int c[10]={1,2,3,4,5,6,7,8,9,0), i;

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

fun(c[i], c[i+l]);

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

printf(\\(C)

A. 2,1,4,3,6,5,8,7,0,9,

B. 0,9,8,7,6,5,4,3,2,1,

C. 1,2,3,4,5,6,7,8,9,0,

D. 0,1,2,3,4,5,6,7,8,9,

解析:C语言规定,实参变量对形参变量的数据传递是“值传递”,即单向传递,只由实参传给形参,而不能由形参传回来给实参。在调用函数时,给形参分配存储单元,并将实参对应的值传递给形参,调用结束后,形参单元被释放,实参单元仍保留并维持原值。由此可知,在本题中,函数fun(int a,int b)的功能是实现形参整形变量a和b值的互换。当在主函数中调用fun(c[i],c[i+1])时,把实参变量c[i]和c[i+1]的值赋给形参变量a和b,执行完函数fun(c[i],c[i+1])时,形参变量a和b的值发生了互换,实参变量c[i]和c[i+1]的值并没有发生互换,所以输出的值为1,2,3,4,5,6,7,8,9,0。

2.有下列程序:

main( )

{ int i,s=0,t[ ]={l,2,3,4,5,6,7,8,9};

for(i=0;i<9;i+ =2) s+ =*(t+i);

printf(\\(D)

A. 20

B. 45

C. 36

D. 25

解析:本题在主函数中定义了一维整型数组t[ ]={1,2,3,4,5,6,7,8,9};然后在for循环语句中自变量i从0开始,每次自加2,执行s+=*(t+i)语句,因为C语言规定数组名代表数组的首地址,也就是第一个元素的地址。因此*(t+i)代表数组的第i+1个元素。所以程序运行的结果是1+3+5+7+9=25,即变量s的值等于25。

3.下列选项中,能正确定义数组的语句是(D)

A. int num[];

B. int N=2008; int num[N];

C. int num[0..2008];

D. #define N 2008 int num[N];

解析:在定义一维数组时,数组的下标应该是一个确定的整数值。要注意的是在定义二维数组时,其第一维下标可以省略,但第二维下标不能省略。

4.若要求定义具有10个int型元素的一维数组a,则以下定义语句中错误的是(D)

A. #define n 5 int a [2*n];

B. int a[5+5];

C. #define N 10 int a[N];

D. int n=10,a[n];

解析:在C语言中,定义一维数组的语句形式为:类型名 数组名[整型常量表达式]。在选项D中,n是一个整型的变量。

5.下列程序中函数f的功能是:当flag为1时,进行由小到大排序;当flag为0时,进行由大到小排序。

void f(int b[ ],int n,int flag)

{ int i,j,t;

for(i=0;i<n-1;i+ +)

for(j=i+1;j<n;j+ +)

if(flag? b[i]>b[j]:b[i]<b[j])

{t=b[i];b[i]=b[j];b[j]=t;}

}

main( )

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

f(&a[2],5,0);

f(a,5,1);

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

printf(\\(B)

A. 1,2,3,4,5,6,7,8,9,10,

B. 3,4,5,6,7,2,1,8,9,10,

C. 5,4,3,2,1,6,7,8,9,10,

D. 10,9,8,7,6,5,4,3,2,1,

解析:主函数中进行了两次f函数的调用。第一次传递给形参数组b的地址为元素a[2]的地址,n接收数据位5,因此数组b中元素为3,2,1,6,7,此时flag的值为0,进行由大到小排序,而数组b和实参数组a共用一段存储空间,第一次调用结束以后,数组a的值为5,4,7,6,3,2,1,8,9,10。第二次调用f函数,形参数组接收实参数组a的首地址,取5个元素,由小到大排序,调用结束以后,数组a的值为3,4,5,6,7,2,1,8,9,10。

6.有以下程序

#include <stdio.h>

main()

{

int s[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;

for(i=0;i<12;i++)c[s[i]]++;

for(i=1;i<5;i++)printf(\\(A)

A. 4 3 3 2

B. 2 3 4 4

C. 1 2 3 4

D. 1 1 2 3

解析:本题考查for语句的循环控制,首先定义了两个数组并赋予了初始值,第一个for循环语句循环12次遍历s数组的各个元素,将s[]中的原素值作为c[]数组中的下标,使相应的值自加。例如当i=0,c[s[0]]++为c[1]++,其值变为1,当执行i=1,2,…11后,c[1]、c[2]、c[3]、c[4]分别为4、3、3、2,故选项A为正确的运行结果。

7.有下列程序:

#include <stdio.h>

void fun(int *a,int n)/*fun函数的功能是将a所指数组元素从大到小排序*/

{ int t,i,j;

for(i=0;i<n-1;j+ +)

for(j=i+1;j<n;j+ +)

if(a[i]<a[j]) { t=a[i];a[i]=a[j];a[j]=t;}

}

main( )

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

fun(c+4,6);

for(i=0;i<10;i+ +) printf(\\(A)

A. 1,2,3,4,9,8,7,6,5,0,

B. 0,9,8,7,6,5,1,2,3,4,

C. 0,9,8,7,6,5,4,3,2,1,

D. 1,2,3,4,5,6,7,8,9,0,

解析:fun()函数的功能是对数组a[ ]的元素从大到小进行排序。所以在主函数执行fun(c+4,6)语句时,将从数组c的第5个元素开始的后6个元素进行从大到小排序。排序之后,数组c的内容变为{1,2,3,4,9,8,7,6,5,0}。

8.有以下程序

#include <stdio.h>

main() {

int c[6]={10,20,30,40,50,60}, *p,*s;

p = c;

s = &c[5];

printf(\\(C

本文档预览:3600字符,共10028字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载

剩余未完,查看全文
收藏
国家二级C语言(函数和数组)机试模拟试卷16

推荐资源

客服

扫码添加客服微信

热线

官方客服

如遇问题,请联系客服为您解决

电话客服:

客服微信:pujinet

工作时间:9:00-18:00,节假日休息

公众号

扫码关注微信公众号