1、C语言程序设计 笔试试题(A卷) 哈尔滨工业大学(威海)2008/2009秋季学期 C语言程序设计 笔试试题(A卷) 题号 一 二 三 四 五 六 笔试(70%) 平时 (30%) 总分 分数 号 学 名 姓 试卷说明: 1. 卷面总分100分,取卷面成绩的70%计入总分; 2. 选择题、填空题与写运行结果题必须在答题卡内答题; 3. 答题时禁止拆开试卷钉,背面即为草稿纸; 4. 答题时
2、间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. 已
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}
4、{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
5、)&&(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) st
6、ud.&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
7、MIN(x,y) (x)<(y)?(x) : (y)
printf("%d",10*MIN(10,15));
5. 设a为整型变量,初值为12,执行完语句 a+=a-=a*a后,a的值是_____。
6. 下列程序的输出结果是_____。
#include
8、是_____。
int *p, *q, k = 1, j=10 ;
p=&j; q = &k ; p = q ; (*p)++;
printf("%d",*q);
9. 下列程序的输出结果是_____。
#include
9、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
10、se if(y==0) x=5;
else x=7;
printf("x=%d\n",x);
printf("z=%d\n",z);
}
2. #include
11、
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
12、
}
int f1(void)
{
i=i+1;
return(i);
}
5. #include
13、]);
}
7. #include
14、k; 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时,程序继续进行其它算术运算,否
15、则程序才退出运行状态。
#include
16、 /*应为'+'*/ 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);
17、 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/
18、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分)
19、 注意:非计算机专业做第1、2题,计算机专业做第1、3题。 1. 输入30个整数,统计出其中正整数个数,负整数个数及0的个数,并分别求出所有负整数与所有正整数的和,最后求出全部数字绝对值之和。(本小题10分) 2. 一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同; 丙是数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索定义一个函数求出车号。(本小题10分) 3. 27人围成一个圈,从第1个人开始顺序报号,凡报号为3和3的倍数者退出圈子,找出最后留在圈子中的人原来的序号(用链表方式实现)。(本小题10分) 第8页 (共8页)
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818