《哈工大C语言试题(共8页).doc》由会员分享,可在线阅读,更多相关《哈工大C语言试题(共8页).doc(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上哈尔滨工业大学(威海)2008/2009秋季学期 C语言程序设计 笔试试题(A卷)题号一二三四五六笔试(70%)平时(30%)总分分数 号学名姓试卷说明: 1. 卷面总分100分,取卷面成绩的70%计入总分; 2. 选择题、填空题与写运行结果题必须在答题卡内答题; 3. 答题时禁止拆开试卷钉,背面即为草稿纸;4. 答题时间105分钟。一、单项选择题(本题16分,每小题2分) 题号12345678答案CDCDCCDB注意行为规范 遵守考试纪律1. C语言源程序文件经过C编译程序编译连接之后生成一个后缀为_的文件。A) .c B) .obj C) .exe D) .cpp
2、2. 表达式 !(x0|y0) 等价于_。A) !x0|!y0 B) !(x0)|!(y0) C)!x0&!y0 D) !(x0)&!(y0)3. 已知函数的调用形式:fread(buffer, size, count, fp); 其中buffer代表的 是( )。 A) 一个整型变量,代表要读入的数据项总数 B) 一个文件指针,指向要读入的文件 C) 一个指针,指向要存放读入数据的地址 D) 一个存储区,存放要读入的数据项4. 以下不能正确定义二维数组的选项是A) int a22=1,2; B) int a2=1,2,3,4;C) int a22=1,2,3; D) int a2=1,2,3
3、,4;5. 以下程序的输出结果是 _。教研室主任签字:main() char ch35=AAAA,BBB,CC;printf(%sn,ch1);A) AAAA B) BBB C) BBB D) AAAA6. 对y在3,23和100,200范围内为真的确表达式为_。 A) (y=3)&(y=100)&(y=3)|(y=100)|(y=3)&(y=100)&(y=3)|(y=100)|(yname B) &stud.name C) stud.&name D) stud.name8. 若变量已正确定义并赋值,表达式_不符合C语言语法。 A) a*b/c; B) 3.14%2 C) 2, b D) a
4、/b/c二、填空题(本题20分,每小题2分) 1. 设变量定义为:int s =hellonworldn;,则数组s中有_个元素。2. 设变量定义为:int a2=1,3, *p=&a0+1;,则*p的值是_。3. 表达式 !8的值是_。4. 下列程序段的输出结果是_。 #define MIN(x,y) (x)(y)?(x) : (y) printf(%d,10*MIN(10,15);5. 设a为整型变量,初值为12,执行完语句 a+=a-=a*a后,a的值是_。6. 下列程序的输出结果是_。#includemain()printf(%d,87?6:54?3:2);7. 下列程序段的输出结果是
5、_。char *st =abcd,efgh,ijkl,mnop;printf(%s, *(st+1)+1);8. 下列程序段的输出结果是_。int *p, *q, k = 1, j=10 ; p=&j; q = &k ; p = q ; (*p)+;printf(%d,*q);9. 下列程序的输出结果是_。#includemain() int c=35;printf(%dn,c&(c+1);10. 下列程序的输出结果是_。#includemain() int a23,(*p)3; int k=0,j; p=a; for(;k2;k+)for(j=0;j3;j+)*(pk+j)=(k+1)*(j
6、+1); printf(%dn,*(p1+2);三、请写出下列程序运行的输出结果。 用“”表示空格(本题24分,每小题3分) 1. #include main() int x,y=1,z=10;x=1;if(z0) x=3;else x=5;printf(x=%dn,x);if(z=y0) x=3;else if(y=0) x=5; else x=7;printf(x=%dn,x);printf(z=%dn,z);2. #include int f(int m) static int k=0; int s=0; for(;k=m;k+) s+;return s;main( ) int s1,
7、s2;s1=f(5);s2=f(5);printf(%d %dn, s1, s2);3. #includelong fun( int n) long s;if(n=1|n=2) s=2;else s=n-fun(n-1);return s;main()printf(%ldn, fun(3);4. #include int i=5; main() int i=3; int i=10;i+;printf(%dn,i); f1();i+=1;printf(%dn,i); int f1(void) i=i+1;return(i);5. #include #include main() char st2
8、0= hello0tc;printf(%d %dn,strlen(st),sizeof(st); 6. #includemain() char *s=one,two,three,*p;p=s1;printf(%c,%sn,*(p+1),s1);7. #include main( ) char s20=I like it,t20=Are you?;int i=0;while(s+i!=0)ti=si;ti=0;printf(%sn,s);printf(%sn,t); 8. #include main( ) int a,b,s=0;for(a=1,b=1;a=20) break;if(b%3=1)
9、b+=3; continue; b-=5;printf(a=%dnb=%dn,a,b); 四、请阅读下列给出的程序,并根据程序的功能改正程序中的错误(本题12分)注意:不得增行或删行,不得更改程序结构。 请修改以下的简单计算器程序,使得:(1)能进行浮点数的算术运算;(2)如果要求连续做多次算术运算,每次运算结束后,程序都给出提示:Do you want to continue(Y/N or y/n)?如果用户输入Y或y时,程序继续进行其它算术运算,否则程序才退出运行状态。#include #include main()int data1, data2; /*将int 修改为float */c
10、har op,reply; doprintf(Please enter the expression:n);scanf(%f%c%f, &data1,&op,&data2); switch (op) case +: /*应为+*/printf(%f+%f=%fn,data1,data2,data1+data2); break;case -: /*应为-*/printf(%f-%f=%fn,data1,data2,data1-data2);break;case *: /*应为*/printf(%f*%f=%fn,data1,data2,data1*data2); break;case /: /*
11、应为/*/if(fabs(data2)=1e-7) printf(Division by zero!n);else printf(%f/%f=%fn,data1,data2,data1/data2); break;default: printf(Unknown operator! n);printf(Do you want to continue(Y/N or y/n)?);scanf(%c, &reply); /*%c应为%1s */while(reply=Y&reply=y)/*应为(reply = Y | reply = y); &应为|*/printf(Program is over!
12、n);五、请用标准程序流程图描述下列问题的算法 (本题8分) 请向计算机输入a,b,c三个值,经过程序处理后,要求输出其中最大的一个。六、请设计并编写求解下列问题的程序 (本题20分)注意:非计算机专业做第1、2题,计算机专业做第1、3题。1. 输入30个整数,统计出其中正整数个数,负整数个数及0的个数,并分别求出所有负整数与所有正整数的和,最后求出全部数字绝对值之和。(本小题10分)2. 一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同; 丙是数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索定义一个函数求出车号。(本小题10分)3. 27人围成一个圈,从第1个人开始顺序报号,凡报号为3和3的倍数者退出圈子,找出最后留在圈子中的人原来的序号(用链表方式实现)。(本小题10分) 专心-专注-专业