C语言程序设计B卷.docx

上传人:b****8 文档编号:11345445 上传时间:2023-02-28 格式:DOCX 页数:17 大小:41.50KB
下载 相关 举报
C语言程序设计B卷.docx_第1页
第1页 / 共17页
C语言程序设计B卷.docx_第2页
第2页 / 共17页
C语言程序设计B卷.docx_第3页
第3页 / 共17页
C语言程序设计B卷.docx_第4页
第4页 / 共17页
C语言程序设计B卷.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

C语言程序设计B卷.docx

《C语言程序设计B卷.docx》由会员分享,可在线阅读,更多相关《C语言程序设计B卷.docx(17页珍藏版)》请在冰豆网上搜索。

C语言程序设计B卷.docx

C语言程序设计B卷

哈尔滨工业大学(威海)2010/2011学年秋季学期

C语言程序设计笔试试题(B卷)

题号

笔试(70%)

综合

(30%)

总分

分数

 

试卷说明:

1.笔试卷面总分100分,取卷面成绩的70%计入总分;

2.综合成绩为平时成绩(10%)和实验成绩(20%)之和,占总分的30%;

3.答题时禁止拆开试卷钉,试卷背面即为草稿纸;

4.答题时间120分钟。

一、单项选择题。

请把答案填入下面框中,

不允许出框线。

(本题16分,每小题2分)

题号

1

2

3

4

5

6

7

8

答案

注意行为规范

遵守考试纪律

1.关于printf函数的使用,下列正确的是()。

A)printf(“helloworld\n\n”);

B)printf(“a=%d”,);

C)printf(“s=%f,s”);

D)printf(“%d=%d+%d\n”,a=b+c);

2.有以下程序

main()

{

shortinta=-1;

printf("%d",a);

}则程序输出()。

A)0B)-1

C)65535D)4294967295

教研室主任签字:

3.VC++中,int型变量取值范围是:

()。

A)[-2^31,2^31]B)[-2^32,2^32-1]

C)[-2^31,2^31]D)[-2^31,2^31-1]

4.有以下程序段

main()

{

inta=9&3;

printf("%d",a);

}

则最后的输出结果是:

()。

A)1B)13

C)3D)0

5.有以下程序:

main(){

intx=-1;

do{

x=x*x;

}while(!

x--);

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

}

执行后的输出结果为()。

A)-1B)1C)0D)ffff

6.voidmain(){

doublex=1;

switch(x)

{

case0:

printf("A");

case1:

printf("B");

default:

printf("C");

}

}程序输出结果是()

A)ABCB)BCC)BD)编译有错

7.printf("%x",0x13|017)输出的结果是()。

A)13B)17C)1fD)23

8.关于malloc()函数,下面叙述中错误的是()。

A)这是一个分配内存的函数B)需要2个参数

C)返回一个指针

D)该函数申请的内存不被free()会产生“内存泄露”

二、填空题。

请按序号把答案填入下面框中,

不允许出框线。

(本题20分,每空1分)

题号

答案

题号

答案

1

11

2

12

3

13

4

14

5

15

6

16

7

17

8

18

9

19

10

20

1.使用动态内存分配方式完成下列程序:

#include

【1】

voidmain(){

int*p;

【2】

*p=20;

printf("*p=%d\n",*p);

}

2.有以下函数

longP(intn,intk)

{

longPowerVal=n;

inti;

for(i=1;i

PowerVal*=n;

returnPowerVal;

}

该函数的功能是【3】。

3.下面是一个十进制整数转二进制的程序,请补全。

voidFUN1(intx)

{

inta[100];

inti=0;

while(x>0)

{【4】

【5】

i++;

}

for(intk=i-1;k>=0;k--)

{printf("%d",【6】);

}

}

4.下列程序段为链表结点类型定义,请填空。

【7】point{

doublex;

doubley;

【8】next;

};

5.下面的函数将遍历输出一个链表的内容,请补全程序。

注:

VCT是一个结构体类型名称,指针域变量为next

voidlink1_show(VCT*head)

{

VCT*p;

【9】

while(p!

=NULL)

{

printf("%s\n",p->s);

【10】

}

}

6.下面的函数功能是取子字符串,例如

puts(substring("ABCDEFG",1,4));输出结果是BCD,请填空:

char*substring(char*s,inta,intb)

{

char*ans;

ans=(【11】)malloc(【12】);

for(inti=a;i

{

ans[i-a]=s[i];

}

ans[i-a]=【13】;

returnans;

}

7.下面程序的运行结果为【14】。

main()

{

enumweekday

{sun,mon,tue=6,wed,thu,fri,sat}a,b,c;

a=sun;b=tue;c=sat;

printf("%d%d%d",a,b,c);

}

8.下列函数用来计算某年某个月的天数,请填空:

intmonth_day(intyear,intmonth)

{

intd[12]={【15】,30,31,30,31,31,30,31,30,31};

if(year%4==100&&year%100!

=0&&year%100==0)

{

【16】

}

returnd[month-1];

}

9.ft为结构体类型名,下面的函数将ft1写入文件,请补全程序:

voidwrite_ft(ftft1,char*filename)

{

/*writefttofile*/

【17】

fp=fopen(filename,"w");

if(fp!

=NULL)

fwrite(【18】,sizeof(ft),1,fp);

fclose(fp);

}

10.递归方式求阶乘,请填空:

longfac(intn)

{

longf;

if(n<0)

printf("n<0,dataerror!

");

elseif(【19】)f=1;

elsef=【20】

return(f);

}

三、请把下列程序运行结果填入答案框中,不允

许出框线,用“↙”表示回车。

(本题24分,每小题3分)

题号

1

2

3

4

5

6

7

8

答案

1.

main(){

inty=2,a=1;

while(y--!

=-1)

do{

a*=y;

a++;

}while(y--);

printf(“%d,%d\n”,a,y);

}

2.#include

voidswap(int*a,int*b)

{

intt;

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

}

voidmain()

{

intx=3,y=5,*p=&x,*q=&y;

swap(p,q);

printf("%d,%d\n",*p,*q);

}

3.intM(intx,inty,intz)

{

intp;

p=x*y-z;

return(p);

}

voidmain()

{

inta=1,b=2,c=3;

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

}

4.#include

main()

{

inta[]={1,2,3,4,5,6},*p=a+2;

*(p+3)+=3;

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

}

5.voidmain()

{

chars[80]="abcd",t[80]="1234";

strcpy(s,"ABC");

strcat(t,s);

puts(t);

}

6.voidWriteStr(char*fn,char*str)

{FILE*fp;

fp=fopen(fn,"w");fputs(str,fp);fclose(fp);

}

main()

{

WriteStr("t1.dat","start");

WriteStr("t1.dat","end");

}

程序运行后,文件t1.dat中的内容是。

7.#include

voidmain()

{

intn=60,i;

printf("%d=",n);

for(i=2;i

{

if(n%i==0)

{

printf("%d*",i);n/=i;i--;

}

}printf("%d",n);

}

8.

#defineSQ1(y)(y)*(y)

#defineSQ2(y)y*y

voidmain()

{

intn=3,nsq1,nsq2;

nsq1=SQ1(n+1);

nsq2=SQ2(n+1);

printf("nsq1=%dnsq2=%d",nsq1,nsq2);

}

四、根据功能描述改正程序中的错误。

不得增行或删行,不得更改程序结构。

(本题10分)

1.要求以下程序的功能是计算100*99*……*81*80的值。

(本小题4分)

#include

voidmain()

{

doublen=100,i,ans;

for(i=n;i>=n-20;i--)

{

ans*=n;

}

printf("ans=%.0lf\n",ans);

}2.下面函数link1_get的功能是返回链表第i个结点的字符串地址。

(本小题6分)

structvector

{char*s;

structvector*next;}

typedefstructvectorVCT;

char*link1_get(VCT*p,inti)

{

char*ans;

intcount=0;

while(p->next!

=NULL&&count

{p=p->next;i++;}

if(count==i)

{ans=p.s;

returnans;}

else

returnNULL;

}

五、请用标准程序流程图描述下列问题的算法

(本题10分,每小题5分)

 

 

六、编程题(本题20分)

1.使用下面的结构体,编写两个函数。

(本小题10分)

dis函数用来求两点距离;middle_point函数求两点中点

#include

#include

structpoint

{

doublex;

doubley;

};

 

voidmain()

{

structpointp1={0,0};

structpointp2={3,4};

structpointp_m;

printf("%lf\n",dis(p1,p2));/*求p1点和p2点的距离*/

p_m=mid_point(p1,p2);/*返回p1点和p2点的中点*/

printf("中点为(%lf,%lf)\n",p_m.x,p_m.y);

}

 

2.计算一个数组(10个元素,数据从键盘接收)的最大值、最小值、平均值,并将计算结果在main函数中输出到屏幕,要求用函数实现。

(本小题10分)

voiddata_ana(int*s,int*max,int*min,int*avg){

 

}

 main(){

 

}

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

当前位置:首页 > 高中教育 > 高考

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

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