收藏 分销(赏)

哈工大C语言试题.doc

上传人:仙人****88 文档编号:8922325 上传时间:2025-03-08 格式:DOC 页数:8 大小:71.54KB
下载 相关 举报
哈工大C语言试题.doc_第1页
第1页 / 共8页
哈工大C语言试题.doc_第2页
第2页 / 共8页
点击查看更多>>
资源描述
C语言程序设计 笔试试题(A卷) 哈尔滨工业大学(威海)2008/2009秋季学期 C语言程序设计 笔试试题(A卷) 题号 一 二 三 四 五 六 笔试(70%) 平时 (30%) 总分 分数 号 学 名 姓 试卷说明: 1. 卷面总分100分,取卷面成绩的70%计入总分; 2. 选择题、填空题与写运行结果题必须在答题卡内答题; 3. 答题时禁止拆开试卷钉,背面即为草稿纸; 4. 答题时间105分钟。 一、单项选择题(本题16分,每小题2分) 题号 1 2 3 4 5 6 7 8 答案 C D C D C C D B 注意行为规范 遵守考试纪律 1. C语言源程序文件经过C编译程序编译连接之后生成一个后缀为______的文件。 A) .c B) .obj C) .exe D) .cpp 2. 表达式 !(x>0||y>0) 等价于_____。 A) !x>0||!y>0 B) !(x>0)||!(y>0) C)!x>0&&!y>0 D) !(x>0)&&!(y>0) 3. 已知函数的调用形式:fread(buffer, size, count, fp); 其中buffer代表的 是( )。 A) 一个整型变量,代表要读入的数据项总数 B) 一个文件指针,指向要读入的文件 C) 一个指针,指向要存放读入数据的地址 D) 一个存储区,存放要读入的数据项 4. 以下不能正确定义二维数组的选项是 A) int a[2][2]={{1},{2}}; B) int a[][2]={1,2,3,4}; C) int a[2][2]={{1},2,3}; D) int a[2][]={{1,2},{3,4}}; 5. 以下程序的输出结果是 _____。 教研室主任签字: main() { char ch[3][5]={"AAAA","BBB","CC"}; printf("\"%s\"\n",ch[1]);   } A) \"AAAA\" B) \"BBB\" C) "BBB" D) "AAAA" 6. 对y在[3,23]和[100,200]范围内为真的确表达式为_____。 A) (y>=3)&&(y<=23)&&(y>=100)&&(y<=200) B) (y>=3)||(y<=23)||(y>=100)||(y<=200) C) (y>=3)&&(y<=23)||(y>=100)&&(y<=200) D) (y>=3)||(y<=23)&&(y>=100)||(y<=200) 7. 设有如下结构定义: struct addr { char name[30]; char street[40]; char city[20]; char office[30]; char phone[10]; int age; } stud; 若用printf(“%s\n”,…)访问该结构中name值的正确方法是____。 A) stud->name B) &stud.name C) stud.&name D) stud.name 8. 若变量已正确定义并赋值,表达式______不符合C语言语法。 A) a*b/c; B) 3.14%2 C) 2, b D) a/b/c 二、填空题(本题20分,每小题2分) 1. 设变量定义为:int s[ ]="hello\nworld\n";,则数组s中有______个元素。 2. 设变量定义为:int a[2]={1,3}, *p=&a[0]+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. 下列程序的输出结果是_____。 #include<stdio.h> main() { printf("%d",8>7?6:5>4?3:2); } 7. 下列程序段的输出结果是_____。 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. 下列程序的输出结果是_____。 #include<stdio.h> main() { int c=35; printf("%d\n",c&(c+1)); } 10. 下列程序的输出结果是_____。 #include<stdio.h> main() { int a[2][3],(*p)[3]; int k=0,j; p=a; for(;k<2;k++) for(j=0;j<3;j++) *(p[k]+j)=(k+1)*(j+1); printf("%d\n",*(p[1]+2)); } 三、请写出下列程序运行的输出结果。 用“□”表示空格(本题24分,每小题3分) 1. #include <stdio.h> main() { int x,y=1,z=10; x=1; if(z<0) if(y>0) x=3; else x=5; printf("x=%d\n",x); if(z=y<0) x=3; else if(y==0) x=5; else x=7; printf("x=%d\n",x); printf("z=%d\n",z); } 2. #include <stdio.h> int f(int m) { static int k=0; int s=0; for(;k<=m;k++) s++; return s; } main( ) { int s1, s2; s1=f(5); s2=f(5); printf("%d %d\n", s1, s2); } 3. #include<stdio.h> long fun( int n) { long s; if(n==1||n==2) s=2; else s=n-fun(n-1); return s; } main() { printf("%ld\n", fun(3)); } 4. #include <stdio.h> int i=5; main() { int i=3; { int i=10; i++; printf("%d\n",i); } f1(); i+=1; printf("%d\n",i); } int f1(void) { i=i+1; return(i); } 5. #include<stdio.h> #include<string.h> main() { char st[20]= "hello\0\t\\c"; printf("%d %d\n",strlen(st),sizeof(st)); } 6. #include<stdio.h> main() { char *s[]={"one","two","three"},*p; p=s[1]; printf("%c,%s\n",*(p+1),s[1]); } 7. #include<stdio.h> main( ) { char s[20]="I like it",t[20]="Are you?"; int i=0; while(s[++i]!='\0') t[i]=s[i]; t[i]='\0'; printf("%s\n",s); printf("%s\n",t); } 8. #include<stdio.h> main( ) { int a,b,s=0; for(a=1,b=1;a<=100;a++) { if(b>=20) break; if(b%3==1) { b+=3; continue; } b-=5; } printf("a=%d\nb=%d\n",a,b); } 四、请阅读下列给出的程序,并根据程序的功能 改正程序中的错误(本题12分) 注意:不得增行或删行,不得更改程序结构。 请修改以下的简单计算器程序,使得: (1)能进行浮点数的算术运算; (2)如果要求连续做多次算术运算,每次运算结束后,程序都给出提示: Do you want to continue(Y/N or y/n)? 如果用户输入Y或y时,程序继续进行其它算术运算,否则程序才退出运行状态。 #include <stdio.h> #include <math.h> main() { int data1, data2; /*将int 修改为float */ char op,reply; do { printf("Please enter the expression:\n"); scanf("%f%c%f", &data1,&op,&data2); switch (op) { case +: /*应为'+'*/ printf("%f+%f=%f\n",data1,data2,data1+data2); break; case -: /*应为'-'*/ printf("%f-%f=%f\n",data1,data2,data1-data2); break; case *: /*应为'*'*/ printf("%f*%f=%f\n",data1,data2,data1*data2); break; case /: /*应为'/'*/ if(fabs(data2)<=1e-7) printf("Division by zero!\n"); else printf("%f/%f=%f\n",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!\n"); } 五、请用标准程序流程图描述下列问题的算法 (本题8分) 请向计算机输入a,b,c三个值,经过程序处理后,要求输出其中最大的一个。 六、请设计并编写求解下列问题的程序 (本题20分) 注意:非计算机专业做第1、2题,计算机专业做第1、3题。 1. 输入30个整数,统计出其中正整数个数,负整数个数及0的个数,并分别求出所有负整数与所有正整数的和,最后求出全部数字绝对值之和。(本小题10分) 2. 一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同; 丙是数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索定义一个函数求出车号。(本小题10分) 3. 27人围成一个圈,从第1个人开始顺序报号,凡报号为3和3的倍数者退出圈子,找出最后留在圈子中的人原来的序号(用链表方式实现)。(本小题10分) 第8页 (共8页)
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服