C语言程序设计B卷.docx
- 文档编号:11345445
- 上传时间:2023-02-28
- 格式:DOCX
- 页数:17
- 大小:41.50KB
C语言程序设计B卷.docx
《C语言程序设计B卷.docx》由会员分享,可在线阅读,更多相关《C语言程序设计B卷.docx(17页珍藏版)》请在冰豆网上搜索。
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(){ }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计