《《C语言程序设计》期中测验试题及答案.docx》由会员分享,可在线阅读,更多相关《《C语言程序设计》期中测验试题及答案.docx(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C语言程序设计期中测验试题及答案专业 计算机03 班级 学号 姓名 成绩 一、从下列四个供选择的答案中选出一个正确答案(每题2分,共30分)1、假设定义:int x = 3, y = 3; 则复合赋值表达式x /= 1+y的值为: (A) 0 (B) 0.75 (C) 6 (D) 以上都错x /= 1+y x = x / (1+y) x = 3 / (1+3) x = 3 / 4 x = 02、表达式: 35 & -1 | 6 5 & -1 | 6 3 - !-1 0 & -1 | 6 3 - !-1 0 | 6 3 - !-1 0 | 6 3 0 0 | 6 1/2) a=1; else a
2、=0; 运行后, a的值是:(A) 1 (B) 0 (C) 与机器有关 (D) 语法有错if (3/4 1/2) a=1; else a=0; if (0 0)a=1;elsea=0;4、 判断整型变量i,j可同时被2整除的表达式(i,j同时被2整除返回1,否则返回0)是:A) !(i%2)|!(j%2) B) !(i%2)&!(j%2) C) (i%2)&(j%2) D) (i%2)|(j%2)5、执行下列程序段后,a值为:a=1; b=0;if (a+b)?a+:b-) a += b;(A) 2 (B) 3 (C) 4 (D) 5先计算(a+b)?a+:b (11)?a+:b a=2,b=
3、06、已知字符 b 的ASCII码为 98 ,语句printf (%d,%c, b,b+1 ) ;的输出为_。A)98,b B)语句不合法 C)98,99 D) 98,c7、下列程序段执行后s值为:int i=1, s=0;do if (!(i%2) continue; s+=i; while (+i10);A) 1 B) 45 C) 25 D) 以上均不是do if (!(i%2) continue; s+=i; while (+i10); do if (!(i%2) continue; s+=i; while (+i10) s = 1+3+5+7+9 = 258、对于int a,则表达式
4、1=a=5值是:A) 0 B) 1 C) 不定 D) 表达式语法有错1=a=5 (1=a) = 5 0 or 1 = 5 19、 对于以下程序段, 运行后i值为:int i=0, a=1;switch (a) case 1: i+=1;case 2: i+=2; break;default: i+=3; A) 1 B) 3 C) 6 D) 上述程序有语法错误10、假设定义数组:float score10; 并且其首地址为2000,则 元素score5的地址为:A) 2005 B) 2010 C) 2015 D) 2020 2000 +4 +8 +12 +16 +20 +24 +28 +32 +
5、36score0score1score2score3score4score5score6score7score8score911、设C语言中,一个int型数据在内存中占2个字节,则unsigned int型数据的取值范围为。A)0255B)032767C)065535D)0214748364712、已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数时,正确的数据输入方式是。int a1,a2; char c1,c2;scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2);A)10A 20BB)10 A 20 B C)10A20BD
6、)10A20 B13、阅读以下程序,当输入数据的形式为25,13,10正确的输出结果为。#include main()int x,y,z;scanf(“%d%d%d”,&x,&y,&z);printf(“x+y+z=%dn”,x+y+z);A) x+y+z=48B) x+y+z=35C) x+z=35D) 不确定值14、表示图中坐标轴上阴影部分的正确表达式是。X a bcA) (x=b)&(x=c)B) (x=a)|(b=x=c)C) (x=b)&(x=c)D) (x=a)&(b=x=a&c=A&c=0&c=92、用下列for循环将大写字母逆序输出(即从Z到A), 其语句应为:for (i=0
7、; i26; i+) putchar(Z-i) ;3、语句printf(“%d%d”, 123); 将输出: %d123 4、若有定义: int m=5,y=2; 则执行表达式y+=y-=m*=y后的y值是 -16 y+=y-=m*=y y += (y -= (m *= y) y += (y -= (m = 5*2) y += (y -= 10) y += (y = 2-10) y += -8 y = -8 + (-8) = -165、在C语言中,表示逻辑“真”值用 1 6、以下程序实现输出x,y,z三个数中的最大者,请在【】内填入正确内容。#include main()int x=4,y=6
8、,z=7;int 【1】;u, vif(【2】) u=x;x yelse u=y;if(【3】) v=u;u zelse v=z;printf(“v=%d”,v);7、下面程序的功能是用公式求的近似值,直到最后一项的小于10- 6为止。请填空。#include #include main()long i=1;【1】 pi=0;floatwhile(i*i=1e+6) pi=【2】; i+; pi + 1.0/(i*i)pi=sqrt(6.0*pi);printf(“pi=%10.6fn”,pi);三、回答相应问题(共30分) 1、程序 (8分) #include int cal(int a,
9、int b, char op) if(op=*) return(a*b); else return(a+b); void main() int x, y, z, result; char op1, op2; scanf(“%d%c%d%c%d”, &x, &op1, &y, &op2, &z); if(op1=+ & op2=*) result=cal(x, cal(y, z, op2), op1); else result=cal(cal(x, y, op1), z, op2); printf(%dn, result); 问题1. 当输入为2+3*5时,上述程序将输出_17_. 问题2. 把
10、op1=+ & op2=*中的op1,op2对调后, 当输入为2+3*5时,上述程序将输出_25_.2、有人写出下面一条语句:printf(“a=%d, b=%d,c=%d”, a,b,c); 编译时出现引号不配对的信息,试分析其原因。(4分) ”是一个转义字符序列,表示一个普通字符”,失去了字符串的右双引号的意思,所以,引号不配对。3、试阐述x和“x”的区别。(4分)x表示字符常量,占1个字节;”x”表示字符串常量,占2个字节4、假设有以下程序段:unsigned int x =0xffff, y=2;unsigned long z;z = x * y; 执行后,z的值是多少?为什么?(5分
11、)z的值为65534。因为:x、y都是int型,x*y也是int型,其结果溢出5、假设有定义:static char str=C, h, i, n, a;则:printf(“%s”, str); 的输出结果是什么?说明理由。(5)Chin a? 输出:China后跟随一系列不可测字符。因为字符数组str中不含有0,不是字符串;所以一直向后输出直到遇到一个空字符06、假设有以下程序段: int a10; a10=3; 试分析两个a10的区别。(5分)前一个a10定义一个int型数组,数组名为a,有10个元素;后一个a10表示数组a中的一个元素,下标是10,该元素越界四、编程题 (选做一题,共10
12、分)1、编写函数 sum(int a, int n),求 Sn=a+aa+aaa+.+aaaa.aaa(n个a)的值,其中a是一个数字, 例如,a=2, n=5时,Sn=2+22+222 +2222+22222, 其值应为24690。根据下列已完成的部分,完成未 完成的部分(注:在函数中不能定义新的变量,但可不用已定义的某些变量)。 long sum(int a, int n) long sn, tn; int count; . return(sn); long sum(int a, int n)long sn, tn; int count;sn = tn = 0L;for (count =
13、0; count n; count+) tn = tn * 10L + a;sn = sn + tn;return (sn);2、一个数如果恰好等于它的所有因子(不包括其本身)之和。就称之为“完数”。如:6的因子为1,2,3,而 6=1+2+3,因此6是“完数”。编程找出1000以内的所有完数以及它们的因子。#include main()int i, j, s, n, fac1000;int FindFactors(int x, int fac);for (i = 1; i 1000; i+) n = FindFactors(i, fac);s = 0;for (j = 0; j n; j+)s += facj;if ( s = i) printf(“%3d its factors: “, i);for (j = 0; j n; j+)printf(“%d “, facj);printf(“n”);return 0;int FindFactors(int x, int fac)int i, count;count = 0;for (i = 1; i x; i+)if (x % i = 0)faccount+ = i;return count;6