
2008-2009学年 第 二 学期 期中 考试 日期2009 年 4 月 15 日
课程名称:高级语言程序设计(C) 考试时间:__100__分钟
专业 班级 姓名 学号 _____
| 题号 | 一 | 二 | 三 | 四 | 五 | 六 | 七 | 八 | 总分 |
| 得分 |
一、单项选择题(20×1’)
1.面向过程的程序设计语言是: C
A.机器语言 B.汇编语言 C.高级语言 D.语言
2.下面描述中,正确的是: A
A.结构化程序设计方法是面向过程程序设计的主流
B.算法就是计算方法
C.一个正确的程序就是指程序书写正确
D.计算机语言是编写程序的工具而不是表示算法的工具
3.以下说法错误的是: C
A.一个C程序可以由一个或多个函数构成
B.一个C程序必须有而且只能有一个main()函数
C.在计算机上编辑C程序时,每行只能写一条语句
D.主函数是程序启动时唯一的入口
4.结构良好的C程序可由 C 三种基本结构组成。
A.数组、结构、指针
B.结构、指针、函数
C.顺序、选择、循环
D.函数调用、条件控制、循环控制
5.在x是单精度实型变量,y是字符型变量,以下正确的输入语句是 B 。
A.scanf(“%f%c”,x,y); B.scanf(“%f%c”,&x,&y);
C.scanf(“%f%f”,&x,&y); D.scanf(“%d%f”,&x,&y);
6.若变量已正确定义并赋值,下面符合C语言语法的表达式是: B
A. a:=b+1
B. a=b=c+2
C. int 18.5%3
D. a=a+7=c+b
7.若有以下程序段
int c1=1,c2=2,c3;
c3=1.0/c2*c1;
则执行后,c3的值是 A
A. 0 B. 0.5 C. 1 D. 2
8.在C程序中,用 B 表示逻辑值“真”。
A.true B.非0的数 C.非0整数 D.大于0的数
9.设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为 C
A. 0 B. 1 C. 2 D. 3
10.下列数据中,为字符常量的是___D_____。
A. 'AB' B. "A" C. How D. 'A'+2
11.已知int i,a;,执行语句i=(a=2*3,a*5),a+6;后,变量i的值是 C
A. 6 B. 12 C. 30 D. 36
12.若变量已正确定义且k的值是4,计算表达式(j=k--)后, B 是正确的。
A.j=4,k=4 B.j=4,k=3 C.j=3,k=4 D.j=3,k=3
13.已知int i=5;,执行语句i+=++i;后,i的值是 C
A. 10 B. 11 C. 12 D. 以上都不正确
14.设有int x,y; 以下语句判断x和y是否相等,正确的说法是该语句___B_____。
if (x=y) printf(" x is equal to y.");
A.语法错 B.不能判断x和y是否相等
C.编译出错 D.能判断x和y是否相等
15.设a=12、b=12345,执行语句printf(“%4d,%4d”,a,b)的输出结果为 C
A. 12,123 B. 12,1234 C. 12,12345 D. 12,123456
16.以下程序的输出结果是 A
#include void main() { int i=010,j=10,k=0x10; printf(“%d,%d,%d\\n”,i,j,k); } A. 8,10,16 B. 8,10,10 C. 10,10,10 D. 程序出错 17.下列程序不是死循环的是 D A. int i=100; while(1) { i=i%100+1; if(i>100)break; } B. int k=0; do{++k;} while(k>=0); C. for( ; ; ); D. int s=36; while(s) --s; 18.当执行以下程序时,___C_____。 void main() { int a; while(a=5) printf("%d ",a--); } A. 循环体将执行5次 B. 循环体将执行0次 C. 循环体将执行无限次 D. 系统会当机。 19.有以下程序段: int n=0,p; do{ scanf(“%d”,&p);n++; } while( p!=12345 && n<3 ) 循环的结束条件是 D A. p的值不等于12345且n的值小于3 B. p的值等于12345且n的值大于等于3 C. p的值不等于12345或n的值小于3 D. p的值等于12345或n的值大于等于3 20.以下分别是算术、位、关系和逻辑运算符+,&,<,!,其优先级最低的是 B 。 A. + B. & C. < D. ! 二、填空题(5×2’) 1、表达式(5-1 && 3+5/2)的值是____1_____。 表达式(5==5==5)的值为____0______。 2、将数学表达式 (ax2+bx+c)转化为C的表达式为___a*x*x+b*x+c____。 3、C语言中,存储字符串"China"以___\\0____作为结束的标志,共占用___6____个字节。 4、设int x=4;表达式x+=x*=x+1的值是 40 。 5、定义int b=7; float a=2.5,c=4.7; 则表达式a+(int)(b/3*(int)(a+c)/2)%4的值为: 5.5 三、读程序(8×5’) 1.下列程序运行后,x的值是 4 a=b=c=0; x=35; if(!a)x--; else if(b);if(c)x=3; else x=4; 2.读下列程序,运行的输出结果是 1 #include void main() { int a=15,b=21,m=0; switch(a%3) { case 0: m++;break; case 1: m++; switch(b%3) { default: m++;break; case 0: m++;break; } } printf(“%d”,m); } 3.以下程序的输出结果是 x=8 #include void main() { int i,j,x=0; for(i=0;i<2;i++) { x++; for(j=0;j<3;j++) { if(j%2) continue; x++; } x++; } printf(“x=%d”,x); } 4.下列程序段的输出结果是____ 1 2 3 4 24 8 36 4 #include void main() { int i,j; for (i=1;i<=4;i++) {for (j=1;j<=5-i; j++) printf("%3d",i*j); printf("\\n"); } } 5. 下列程序段的输出结果是__i=9,k=7_ _____. void main() { int i,j,k=19; while (i=k-1) { k-=3; if (k%5==0) {i++;continue;} else if (k<11) break; i++; } printf("i=%d,k=%d\\n",i,k); } 6. 下面程序输入5, 输出结果是什么?此程序的功能是什么? factorial of 5 is:120. 功能是求阶乘 n! void main() { int i,n; int factorial = 1; printf("please input the number n:"); scanf("%d",&n); if(n < 0) printf("please input an interger >= 0.\\n"); else if(n==0) printf("factorial of 0 is 1.\\n"); else { i = 1; while(i <= n) { factorial = factorial * i; i++; } printf("factorial of %d is:%d.\\n",n,factorial); } } 7. 读程序分析这段程序的功能。 输入字符”c” 进行Celsius temperature到Fahrenheit temperature的转换 输入字符”f” 进行Fahrenheit temperature到Celsius temperature的转换 输入字符”q” 退出 #include int main() { char cmd; float temperature; while(1) { scanf("%c",&cmd); switch (cmd) { case 'c': { printf("\\n| Please input Celsius temperature: |\\n"); scanf("%f",&temperature); printf("\\n|The Fahrenheit temperature is:%6.3f|\\n", temperature*1.8+32 ); break; } case 'f': { printf("\\n Please input Fahrenheit temperature: |\\n"); scanf("%f",&temperature); printf("\\n The Celsius temperature is : %6.3f |\\n", 5*(temperature-32)/9); break; } case 'q': break; default: printf("Your Command Error!temperatureut Again\\n"); } if(cmd=='q') break; printf("\\n Please input any key to use again: \\n"); } } 8. 下列程序是输出201~300之间的全部素数,请填写完整。 #include #include main() {int m,i,k,flag; for (m=201;m<=300;m++) {k= m-1 或 m/2 或 sqrt(m) ; flag=1; for(i=2;i<=k;i++) if ( m%i==0 ) flag=0; if (falg==1) printf(“%d ”,m); } printf(“\\n”); } 三、编程题:(给答题纸划横线) 1.(6分)根据以下函数关系,对输入的每个x的值,计算出相应的y值。(使用switch) 2.(7分)请用户输入int型a,b,c三数,试不再利用其它变量交换三者,使得a成为b、b成为c、c成为a。 void main() { int a,b,c; scanf("a=%d b=%d c=%d",&a,&b,&c); c=a+b+c; b=c-a-b; a=c-a-b; c=c-a-b; printf("a=%d b=%d c=%d\\n",a,b,c); } 3.(8分)请用户输入三角形三条边长(float型)a,b,c。 判断是否能构成三角形 若能构成三角形,判断它是锐角、直角或钝角三角形 若能构成三角形,判断它是等边、等腰或一般三角形 4.(9分)上海市出租车的起步费为3公里11元,10公里内(包含起步的3公里)每公里2.1元,超过10公里每公里3.2元。从上海杉达学院打车到浦东国际机场约为29公里,试写程序求出打车所需费用或最小费用。(提示1:车费单位为元,角作四舍五入。提示2:为达到最省车费,打车中途可重翻计价器)
