01C语言笔试试题1.docx

上传人:b****0 文档编号:12478990 上传时间:2023-04-19 格式:DOCX 页数:14 大小:22.50KB
下载 相关 举报
01C语言笔试试题1.docx_第1页
第1页 / 共14页
01C语言笔试试题1.docx_第2页
第2页 / 共14页
01C语言笔试试题1.docx_第3页
第3页 / 共14页
01C语言笔试试题1.docx_第4页
第4页 / 共14页
01C语言笔试试题1.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

01C语言笔试试题1.docx

《01C语言笔试试题1.docx》由会员分享,可在线阅读,更多相关《01C语言笔试试题1.docx(14页珍藏版)》请在冰豆网上搜索。

01C语言笔试试题1.docx

01C语言笔试试题1

二级C语言笔试试卷

(1)

(共100分)

注意事项:

1.一、二题为客观题,请将答案涂在机读答题卡上

2.三、四、五、六题为主观题,请将答案做在答题纸上

一.单项选择题。

(每小题1分,共20分)

1.一个C程序的执行是从(A)。

(A)本程序的main函数开始,到main函数结束

(B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束

(C)本程序的main函数开始,到本程序文件的最后一个函数结束

(D)本程序文件的第一个函数开始,到本程序main函数结束

2.设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是(D)。

(A)x&&y;(B)x<=y;

(C)x||y+z&&y–z;(D)!

((x

z||1);

3.以下有关宏替换的叙述不正确的是(D)。

(A)宏替换不占用运行时间(B)宏名无类型

(C)宏替换只是字符串替换;(D)宏替换是在运行时进行的

4.已知函数的调用形式:

fread(buffer,size,count,fp);其中buffer代表的是(C)。

(A)一个整型变量,代表要读入的数据项总数

(B)一个文件指针,指向要读的文件

(C)一个指针,指向要读入数据的存放地址

(D)一个存储区,存放要读的数据项

5.在位运算中,操作数每左移一位,其结果相当于(A)。

(A)操作数乘以2(B)操作数除以2

(C)操作数除以4(D)操作数乘以4

6.数字字符0的ASCII值为48,若有以下程序

#include

voidmain()

{

chara='1',b='2';

printf("%c,",b++);

printf("%d\n",b-a);

}

程序运行后的输出结果是(C)。

A)3,2B)50,2  C)2,2  D)2,50

7.有以下程序

#include

voidmain()

{

intm=12,n=34;

printf("%d%d",m++,++n);

printf("%d%d\n",n++,++m);

}

程序运行后的输出结果是(C)。

A)12353514B)12353513 C)12343514  D)12343513

8.已有定义intk=2;int*ptr1,*ptr2,且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是(B)

A)k=*ptr1+*ptr2;B)ptr2=k;

C)ptr1=ptr2;D)k=*ptr1*(*ptr2);

9若有定义inti=2,a[10],*p=&a[i];则与*p++等价的是(A)。

A)a[i++]B)a[i]++C)a[i]D)a[++i]

10.有定义inta=3,b=4,c=5;执行完表达式a++>--b&&b++>c--&&++c后,a,b,c的值分别为(B)。

A)345B)435C)444D)445

11.已知:

intx=1,y=2,z=0;则执行:

z=x>y?

10:

20后,z的值为(B)。

A)10B)20C)1D)2

12.若已定义x和y为double类型,则表达式x=2,y=x+10/4的值是(C)。

A)2B)4C)4.0D)4.5

13.有定义语句:

intb;charc[10];,则正确的输入语句是(B)。

A)scanf("%d%s",&b,&c);  B)scanf("%d%s",&b,c);

C)scanf("%d%s",b,c);    D)scanf("%d%s",b,&c);

14.在一个源程序文件中定义的全局变量,其作用域为(B)。

A)定义所处的整个源程序文件B)从定义处开始到本源程序文件结束

C)整个主函数D)所处C程序的所有源程序文件中

15.在下面C语言的函数说明语句中,正确的是(A)。

A)intfun(intx,inty);B)intfun(intx,y);

C)intfun(x,y);D)intfun(intx;inty);

16.有以下程序

#include

voidmain()

{

intm,n,p;

scanf("m=%dn=%dp=%d",&m,&n,&p);

printf("%d%d%d\n",m,n,p);

}

若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是(A)。

A)m=123n=456p=789      B)m=123 n=456 p=789      

C)m=123,n=456,p=789    D)123 456 789

17.已知E的ASCII码是69,则执行以下语句的结果是(C)

printf("%c",'E'-'8'+'5');

A)66B)AC)BD)E

18.有定义:

char*s=”\t\”Name\\Address\”\n”;,那么strlen(s)等于(B)。

A)15B)16

C)17D)18

19.设有定义:

intm=1,n=-1;则执行语句printf("%d\n",(m--&++n));后的输出结果是(B)

A)–1B)0C)1D)2

20.有以下程序

#include

voidmain()

{

inta,b,d=25;

a=d/10%9;

b=a&&(-1);

printf("%d,%d\n",a,b);

}

程序运行后的输出结果是(B)。

A)6,1   B)2,1   C)6,0    D)2,0

二.基本概念选择填空题(本大题后面有若干备选项,请选择合适的备选项并将其号码填入各小题的空白处。

每空2分,共10分)

1.函数main(intargc,char*argv[])中argc表示的是______①____。

2.在C语言中,没有字符串变量,只有字符变量,字符串都存储在以②为结束符的字符数组中。

3.一个函数调用语句为fun((e1,e2,e3),(e4,e5),e6);,其实参个数为__③____。

4.为了避免嵌套的if-else语句的二义性,C语言规定else总是与___④____组成配对关系。

5.当程序打开一个文件时,系统就要在内存中建立一个与该文件对应的⑤结构体变量,存储该文件的有关信息。

①F②B③J④A⑤K

备选项:

(A)空格

(B)'\0'

(C)'\n'

(D)在其之前未配对的if

(E)参数字符串

(F)命令行参数的个数

(G)6

(H)在其之前最近的未配对的if

(J)3

(K)FILE

(L)EOF

(M)命令行参数的字符数

三.程序填空题。

(每空2分,共20分)。

1.以下程序的功能是:

从键盘上输入若干个学生的成绩,统计计算出平均成绩。

请填空。

#include

voidmain()

{

floatsum=0.0,ave,a;

intn=0;

printf("Entermark\n");

scanf("%f",&a);

while(a>=0.0)

{

sum=sum+a;

_____①_________;//n++

scanf("%f",&a);

}

ave=sum/n;

printf("ave=%f\n",ave);

}

2.下面程序的功能是将一个字符串str的内容颠倒过来,请填空。

#include

voidmain()

{

charstr[]={"abcdefg"};

char*p1,*p2,ch;

p1=str;

p2=str;

while(*p2!

='\0')p2++;

____②________;//p2--

while(p1

{

ch=*p1;*p1=*p2;*p2=ch;

____③_____;//p1++

p2--;

}

puts(str);

}

3.以下程序中,fun函数的功能是求m行4列二维数组每行元素中的最大值。

请填空。

#include

intfun(int,int,int(*)[4]);

voidmain()

{

inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},i;

for(i=0;i<3;i++)printf("%4d",fun(④));  //i,4,a

printf("\n");

}

intfun(intm,intn,inta[][4])

{

intj,x;

x=a[m][0];

for(j=0;j

returnx;

}

4.下面的程序是用来在数组table中查找x,若数中存在x程序输出数组中第一个等于x的数组元素的下标,否则输出-1。

请填空。

#include

inttable[10]={12,34,54,23,45,33,78,87,59,97},x;

intlookup(intt[],intkey,intn)

{

intk;

for(k=0;k

if(t[k]==key)⑥;//break

if(   ⑦   )k=-1;      //k>=n  

returnk;

}

voidmain()

{

scanf("%d",&x);

printf("x_location:

%d\n",lookup(table,x,10));

}

5.下列函数insert实现在一维数组v中插入一个元素x,且要求将该元素插入到下标为i位置,数组原有下标为i及以后的元素都将向后移动一个元素的位置,i>=0。

如果i大于等于元素的个数,则x插到数组的末尾。

原有的元素个数存放在指针n所指向的变量中,插入后元素个数加1。

主函数验证了该函的功能。

请填空。

#include

voidinsert(intv[],int*n,intx,inti);

voidmain()

{

inta[20]={1,2,3,4,5,6,7};

intkey=11;

intn=7,*p=&n;

insert(a,p,key,14);

for(key=0;key<*p;key++)printf("%d",a[key]);

putchar('\n');

printf("%d\n",n);

}

voidinsert(intv[],int*n,intx,inti)

{

intj;

if(___⑧____)//i<*n

for(j=*n-1;j>=i;____⑨____)//j--

_____⑩____=v[j];//v[j+1]

else

i=*n;

v[i]=x;

(*n)++;

}

四.阅读程序题(每小题5分,共30分)

1.下面程序的运行结果为:

( f=6  )

#include

intf(intnum,intrun)

{

staticintfact,i;

if(run==0)

{

fact=1;

i=1;

}

fact*=i;

if(++i<=num)

f(num,1);

return(fact);

}

voidmain()

{

inti=0;

printf("f=%d\n",f(3,0));

}

2.下面程序的运行结果是:

(63)

#include

main()

{

inta[]={1,3,5,7,9},b[4]={2,4,6,8},*p=a,*q=b;

p+=2;

q++;

*p=(*q)%3+5;

*(++q)=*(p--)-3;

printf("%d",*(p+1));

printf("%d\n",q[0]);

}

3.运行程序时输入-6931,则输出结果是:

(-1396)

#include

voidprintopp(longintn)

{

inti=0;

if(n==0)return;

else

while(n)

{

if(n>0||i==0)

printf("%1d",n%10);

else

printf("%ld",-n%10);

i++;

n/=10;

}

}

voidmain()

{

longintn;

scanf("%ld",&n);

printopp(n);

printf("\n");

}

4.下面程序的运行结果是:

(34)

#include

#defineN2

#defineY(n)((N+1)*n)

main()

{

intz;

z=2*(N+Y(5));

printf("%d",z);

}

5.以下程序的运行结果为( 9)

#include

voidmain()

{

longfun(intn);

printf("%ld\n",fun(4));

}

longfun(intn)

{

longs;

if(n==1||n==2)

s=2;

else

s=n+fun(n-1);

returns;

}

6.以下程序的运行结果为(4321)

#include

voidmain()

{

voidfun(int*x,int*y);

inta[]={1,2,3,4},j,x=0;

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

{

fun(a,&x);

printf("%d",x);

}

printf("\n");

}

voidfun(int*x,int*y)

{

staticintt=3;

*y=x[t];

t--;

}

五.编程序(每小题10分,共20分)

1.编写程序求下面数列

的前20项之和。

参考程序:

#include

main()

{

doublex,sum;

inti;

for(i=1,x=2,sum=0;i<=20;i++)

{

sum=sum+x;

x=1+1/x;

}

printf("Front20termsof2/1+3/2+5/3+……=%lf\n",sum);

}

2.函数fac的原型为longfac(intk);,函数利用静态变量实现:

连续以1,2,3,……,n为参数调用该函数后,函数最后返回n!

要求编制该函数并用相应的主函数进行测试。

参考程序:

#include

voidmain()

{

longfac(intn);

intn,j;

longff;

scanf("%d",&n);

for(j=2;j<=n;j++)

ff=fac(j);

printf("n!

=%ld\n",ff);

}

longfac(intn)

{

staticlongff=1;

ff*=n;

returnff;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1