1、程序设计基础及实验课堂测验程序设计基础及实验2015课堂测验 学号_ 姓名_ 一、单项选择题(每小题 2 分,共 20 分)1C 语言程序的三种基本结构是顺序结构、选择结构和_结构。A、嵌套 B、调用 C、转移 D、循环2若x是单精度实型变量,表达式 x = 25/6 的值是_ 。A、3 B、 2.5 C、 4.0 D、 23. 表达式 !x 等价于_。A、x=1 B、x=0 C、x != 1 D、x != 04如果变量k已正确定义,且 k 的值是 2,那么计算表达式 j = k+ 后,_。A、j=4, k=4 B、j=5, k=5 C、j=4, k=5 D、j=2, k=35. 算术运算符、
2、赋值运算符和关系运算符的运算优先级按从高到低的顺序依次为_。A、算术、关系、赋值 B、赋值、关系、算术C、赋值、算术、关系 D、关系、算术、赋值6C语言中,形参的缺省的存储类说明是_。A、 register B、static C、auto D、extern 7字符类型(char)所占的字节数是_。A、1 B、2 C、4 D、88单精度浮点类型(float)所占的字节数是_。A、1 B、2 C、4 D、89sizeof(double) 等于_。A、1 B、2 C、4 D、810表达式 (x=4, y=6, z=w=1) 的值为 _。 A、1 B、9 C、6 D、4二、填空题(每小题 3 分,共
3、24 分)1 ASCII全称为_2语句 printf (%d, %o, %x, 0x14, 14, 014); 的输出结果是: _3下列程序段的输出结果是:_第一个N*N为字符串一部分,原样输出;第2个N*N为表达式,用宏定义9展开为9*9#define N 9printf(N * N = %d, N * N) ; 输出结果为:#A#B4如果用户输入为ABCDEFG,请写出下列程序段的输出结果。 int k;for( k=0; k2; k+ ) ; putchar(#)putchar(getchar(); 输出结果为:1,2,5,函数subf被调用情况是:subf(1), subf(3), s
4、ubf(5)。在执行subf(1)时,a=1, 输出1 , 然后a的值变成2;在执行subf(3)时,a=2,输出2 , 然后a的值变成5;在执行subf(5)时,a=5,输出5;5写出下列程序的输出结果。void subf( int k ) static int a = 1; printf(”%d,”, a); a += k; main() int k; for (k=1; k6; k+=2) subf(k);x = ab ? a : b8将下面的代码改写为一个条件表达式:if( ab ) x = a;elsex = b;见教材7写出以下for循环语句的执行流程图 for( 表达式1;表达式
5、2;表达式3 ) 循环体语句;8写出以下while循环语句的执行流程图。 见教材while( 表达式 ) 循环体语句;三、程序阅读题(每题 4 分,共 20 分)int split(int x)int n = 0;while( x!=0 )x = x/10;n+;return n;1用while语句改写下面的函数。 int split( int x ) int n; for( n=0; x!=0; n+) x = x / 10; return n;2指出下列程序的功能。#include 该程序的功能为:统计变量x的二进制码中比特 1 的个数。int func(unsigned int y)in
6、t n=0;do n += y%2;y /= 2; while ( y ) return n;k=1 f 1*(1!) = 1 s 0+1 = 1 输出 1k=2 f 1*(2!) = 2 s 1+2 = 3 输出 3k=3 f 2*(3!) = 12 s 3+12 = 15 输出 15k=4 f 12*(4!) = 12*24 = 288 s 15+288 = 303 输出 243 3下列程序的输出结果是_1 # 3 # 15 # 303 #_。# include stdio.hint main( ) int j, k, n;double f = 1, s = 0;for( n=4, k=1
7、; k=n; k+ )里面的for语句做:f=f*(k!)for( j=1; j=k; j+)f = f * j;s = s + f;printf(%.0f # , s);4 下列函数的功能是_计算成绩的最大值_。#include int main(void) int mark, max; printf(“Enter marks:); scanf (%d, &mark); max = mark; while (mark = 0) if( max mark ) max = mark ; scanf (%d, &mark ); printf(Max = %dn, max); return 0;5
8、下列程序的输出是_ 0 # 1 # 2 # 3 # 4 # _。#include int main(void)int i;for ( i=0; i5; i+ )if( i%2 ) ;printf(“%d # “, i) ;四、程序填空题(每空 2 分,共 20 分)1读入一些非负整数,以负数作为结束标志,计算这些非负整数之和,以及平均值。#include void main()int x, sum = 0;int n = 0;while (1)scanf(_ “%d” _,&x);if( _x0_) break; sum += x; n+; printf(“sum = %d, average
9、= %dn”, _sum, sum/n_);2读入1 个正实数e ,计算并输出11/31/51/7,直到最后一项的绝对值小于e。#include #include void main( ) int d = 1, flag = 1; double e, item, sum = 0; scanf(%le, &e); do item = 1.0/d; sum += _flag * item_; flag = - flag; d = _d + 2_; while( item = e ); printf(%fn, sum); 3输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的个数。#inc
10、lude void main( ) int blank=0, digit=0, letter=0, other=0; char c; while( _ (c=getchar() != n _ ) if( _ c=a&c=A&c=0 & c=9 _ ) /* 判断数字字符 */ digit+; else if( _ c= _) /* 判断空格 */ blank+; else other+; printf(letter=%d, blank=%d, digit=%d, other=%dn, letter, blank, digit, other); 试题五、编程题 ( 共 16 分)int sum_
11、fact(int number)int f, s;s = 1; for( f = 2; f=number; f+)if( number%f=0 )s += f;return s;1 (6分) 请编写函数 sum_fact(number),返回整数number 的因子之和。(能整除number的数就是它的因子,number定义为int)例如sum_fact(6) = 12 (因为1, 2, 3, 6是6的因子)2 (10分) 请编写函数 sprime( N )判断 N 是否为素数而且每一位的数字都是奇数。如果是返回1,否则返回0。例如:sprime(13) 返回1(因为13为素数,而且其个位数字
12、3和十位数字1都是奇数)。int sprime (int N)int f;if( N=1 ) return 0;/*检验各位数字是否都是奇数*/f = N;while (f)if( f%10%2=0 )return 0; /*不是奇数*/f /= 10;/*检验该数是否为素数*/for( f = 2; f*f=N; f+)if( N%f=0 )return 0; /*不是素数*/*通过所有检验啦*/return 1; 答题纸一、单项选择题(每小题 2 分,共 20 分)D、C、B、D、A、 C、A、C、D、A二、填空题(每小题 3 分,共 24 分)1 _ American Standard
13、Code for Information Interchange _2 _ 20, 16, c _3 _ N * N = 81 _4 _ #A#B _5 _ 1, 2, 5_8_ x = ab ? a : b _7 流程图8 流程图三、程序阅读题(每题 4 分,共 20 分)1int split (int x)int n = 0;while( x!=0 )x = x/10;n+;return n;2_ 统计变量x的二进制码中比特 1 的个数 _3_ 1 # 3 # 15 # 303 # _4_ 计算成绩的最大值 _5_ 0 # 1 # 2 # 3 # 4 # _四、程序填空题(每空 2 分,共
14、 20 分)1(1) _ “%d” _ (2) _ x=a&c=A&c=0 & c=9 _ (4) _ c= _五、编程题 ( 共 16 分)1(6分)int sum_fact(int number)int f, s;s = 1; for( f = 2; f=number; f+)if( number%f=0 )s += f;return s;2(10分) int sprime (int N)int f;if( N=1 ) return 0;/*检验各位数字是否都是奇数*/f = N;while (f)If( f%10%2=0 )return 0; /*不是奇数*/f /= 10;/*检验该数是否为素数*/for( f = 2; f*f=N; f+)if( N%f=0 )return 0; /*不是素数*/*通过所有检验啦*/return 1; 10 / 10