1、C语言程序设计B卷哈尔滨工业大学(威海)2010/2011学年秋季学期 C语言程序设计 笔试试题(B卷)题号一二三四五六笔试(70%)综合(30%)总分分数 号学名姓试卷说明:1. 笔试卷面总分100分,取卷面成绩的70%计入总分;2. 综合成绩为平时成绩(10%)和实验成绩(20%)之和,占总分的30%;3. 答题时禁止拆开试卷钉,试卷背面即为草稿纸;4. 答题时间120分钟。一、单项选择题。请把答案填入下面框中, 不允许出框线。(本题16分,每小题2分) 题号12345678答案注意行为规范 遵守考试纪律1.关于printf函数的使用,下列正确的是( )。A) printf(“hello
2、worldnn”); B) printf(“a=%d”,); C) printf(“s=%f,s”); D) printf(“%d=%d+%dn”,a=b+c); 2. 有以下程序main() short int a=-1; printf(%d,a);则程序输出( )。A) 0 B) -1C) 65535 D) 4294967295教研室主任签字:3. VC+中,int型变量取值范围是:( )。A) -231,231 B) -232,232-1 C) -231,231 D) -231,231-14. 有以下程序段main() int a=9&3; printf(%d,a);则最后的输出结果是:
3、( )。A) 1 B) 13C) 3 D) 05. 有以下程序:main( ) int x=-1; do x=x*x; while(!x-); printf(%xn,x);执行后的输出结果为( )。A) -1 B) 1 C) 0 D) ffff6. void main( ) double x=1; switch(x) case 0: printf(A); case 1: printf(B); default: printf(C); 程序输出结果是( )A)ABC B) BC C) B D) 编译有错7. printf(%x,0x13|017)输出的结果是( )。A) 13 B) 17 C) 1
4、f D) 238. 关于malloc()函数,下面叙述中错误的是( )。A) 这是一个分配内存的函数 B) 需要2个参数C) 返回一个指针 D) 该函数申请的内存不被free()会产生“内存泄露”二、填空题。请按序号把答案填入下面框中, 不允许出框线。(本题20分,每空1分) 题号答 案题号答 案11121231341451561671781891910201. 使用动态内存分配方式完成下列程序:#include 【1】 void main( ) int *p; 【2】 *p=20; printf(*p=%dn,*p);2. 有以下函数long P (int n,int k) long Pow
5、erVal=n; int i; for(i=1;i0) 【4】 【5】 i+; for(int k=i-1;k=0;k-) printf(%d, 【6】 ); 4. 下列程序段为链表结点类型定义,请填空。 【7】 point double x; double y; 【8】 next;5. 下面的函数将遍历输出一个链表的内容,请补全程序。注:VCT是一个结构体类型名称,指针域变量为next void link1_show(VCT *head) VCT *p; 【9】 while(p!=NULL) printf(%sn,p-s); 【10】 6. 下面的函数功能是取子字符串,例如puts( sub
6、string(ABCDEFG,1,4) );输出结果是BCD,请填空:char * substring(char *s,int a,int b) char *ans; ans=( 【11】 )malloc( 【12】 ); for(int i=a;ib;i+) ansi-a=si; ansi-a= 【13】 ; return ans;7. 下面程序的运行结果为 【14】 。main() enum weekday 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. 下列函
7、数用来计算某年某个月的天数,请填空:int month_day(int year,int month) int d12= 【15】 ,30,31,30,31,31,30,31,30,31; if(year%4=100 & year%100!=0 & year%100=0) 【16】 return dmonth-1;9. ft为结构体类型名,下面的函数将ft1写入文件,请补全程序:void write_ft(ft ft1,char *filename) /*write ft to file */ 【17】 fp=fopen(filename,w); if(fp!=NULL) fwrite( 【1
8、8】 ,sizeof(ft),1,fp); fclose(fp);10. 递归方式求阶乘,请填空:long fac (int n) long f; if(n0) printf(n0,data error!); else if( 【19】 ) f=1; else f= 【20】 return (f);三、请把下列程序运行结果填入答案框中,不允 许出框线,用“”表示回车。(本题24分,每小题3分) 题号12345678答案1. main( ) int y=2,a=1; while (y-!=-1) do a*=y ; a+ ; while (y-) ; printf(“%d,%dn”,a,y);2
9、. #include void swap(int *a, int *b) int t;t=*a;*a=*b;*b=t; void main() int x=3,y=5,*p=&x,*q=&y;swap(p,q);printf(%d,%dn,*p,*q);3. int M(int x, int y, int z) int p;p=x*y-z;return(p);void main() int a=1,b=2,c=3;printf(%dn, M(a+b,b+c,c+a); 4. #include main( ) int a = 1, 2, 3, 4, 5, 6, *p = a+2; *(p+3)
10、+= 3; printf ( %d,%d, *p, *(p+3);5. void main() char s80=abcd, t80=1234; strcpy(s,ABC); strcat(t,s); puts(t);6. void WriteStr(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 void main() int n
11、=60,i; printf(%d=,n); for(i=2;in;i+) if(n%i=0) printf(%d*,i); n/=i; i-; printf(%d,n);8. #define SQ1(y) (y)*(y)#define SQ2(y) y*yvoid main() int n=3,nsq1,nsq2; nsq1=SQ1(n+1); nsq2=SQ2(n+1); printf(nsq1=%d nsq2=%d,nsq1,nsq2);四、根据功能描述改正程序中的错误。 不得增行或删行,不得更改程序结构。(本题10分)1. 要求以下程序的功能是计算100*99*81*80的值。(本小题4
12、分)#include void main() double n=100,i,ans; for(i=n;i=n-20;i-) ans*=n; printf(ans=%.0lfn,ans); 2. 下面函数link1_get的功能是返回链表第i个结点的字符串地址。(本小题6分)struct vector char *s; struct vector *next; typedef struct vector VCT; char * link1_get(VCT *p,int i) char *ans; int count=0; while(p-next!=NULL & countnext; i+; i
13、f(count=i) ans=p.s; return ans; else return NULL;五、请用标准程序流程图描述下列问题的算法 (本题10分,每小题5分) 六、编程题(本题20分) 1.使用下面的结构体,编写两个函数。(本小题10分)dis函数用来求两点距离;middle_point函数求两点中点#include #include struct point double x; double y;void main() struct point p1=0,0; struct point p2=3,4; struct point p_m; printf(%lfn,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分)void data_ana(int *s, int *max, int *min, int *avg) main( )
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1