1、 1 / 13 程序设计 (C语言 )期末考试卷 ( A) 使用专业、班级 学号 姓名 l 题 数 一 二 三 四 五 总 分 得 分 一、选择题 每 题 2分,共计 40 分 1.下列变量合法的是( B ) 。 A 2a0 B _1a0 C xy D b-a 2 假设所有变量均为整型,则表达式 (a=2,b=5,b+,a+b)的值是 ( B )。 A 7 B 8 C 6 D 2 3 有以下程序: void main( ) int x=101,y=011; printf(“%2d,%2dn“,x,y); 执行后输出结果是 ( C ) 。 A 10, 9 B 101,11 C 101, 9 D
2、01,11 4 若有说明语句: char c=72;则变量 c( A )。 A 包含 1 个字符 B 包含 2个字符 C 包含 3个字符 D 说明不合法, c的值不确定 5 阅读一下程序,当输入数据的形式为 25, 13, 10 正确的输出结果为( D )。 void main() int x,y,z; scanf(“%d%d%d“, printf(“x+y+z=%dn“,x+y+z); A x+y+z=48 B x+y+z=35 C x+z=35 D 不确定值 江 南 大 学 考 试 卷 专 用 纸 1 考 试形式开卷( )、闭卷( ),在选项上打( ) 开课教研室 命题教师 统一 命题时间
3、 使用学期 s 2 / 13 6 定义如下变量和数组: int k; int a33=1,2,3,4,5,6,7,8,9; 则下面语句的输出结果为 ( ) 。 for(k=0;k10) break; C int i=0; D i =100; do +i ; while(i=0); while(+i%2) i+; 19 设 x为 int型变量 ,则执行以下语句后 , x的值为 ( ) 。 x=10; x+=x-=x-x; A 10 B 20 C 40 D 30 20 下面程序段的运行结果是( )。 char a7=“abcdef“; char b4=“ABC“; strcpy(a,b); pri
4、ntf(“%c“,a5); 江 南 大 学 考 5 / 13 试 卷 专 用 纸 A. 空格 B. 0 C. e D. f 二、 判断题 每题 1 分,共计 10 分 ( )1一个函数利用 return只能返回一个函数值。 ( )2在程序运行过程中,系统分配给实参和形参的内存单元是不同的。 ( )3用 scanf输入字符时,字符串中不能包含空格。 ( )4 Continue 和 break 都可用来实现循环体的中止。 ( )5字符常量的长度肯定为。 ( )6.在对某一函数进行多次调用时,系统会对相应的自动变量 重新分配存储单元。 ( )7.在 C 语言的复合语句中,只能包含可执行语句。 ( )
5、8.在复合语句内部定义的 变量属于局部变量。 ( )9.若将 C 源程序经过编译、连接后生成可执行文件,则可直接在 DOS 系统下输入可执行文件名执行。 ( )10已知: char c=48;int i=1,j=10;执行语句 j=!(cj) for(i=j;i #include void main() char str=I,0,a,m,0,a,0,C,0,P,r,o,g,r,a,m,m,e,r,0,0; int len; char *p; p=str; while(1) len=strlen(p); if(len=0) break; printf(“%s “,p); p+=len+1; pr
6、intf(“n“); 5下 面程序如果输入是: 1357924-1 运行结果是 【 5】 _ _ #include #include int a5=0; void main() int i=0,j,k; for(;) 江 南 大 学 考 7 / 13 scanf(“%d“, if(k = 1 ) ; for ( j = i 1 ; j = 0 ; j - - ) printf ( “ %d “ , a j ) ; 7. 下面程序的运行结果是 【 7】 _ #include “stdio.h“ void main() int i=5; printf(“%dn“,sub(i); sub(int n
7、) int a; if(n=1) return 1; a=n+sub(n-1); return(a) 试 卷 专 用 纸 4 8 / 13 8. #include “stdio.h“ void main() int n,sum=0; n=2345; dosum=sum+(n%10)*(n%10); n=n/10; while(n); printf(“sum=%dn“,sum); 该程序的输出结果是: 【 8】 _ _ 9. #include “stdio.h“ #define M 8 void main() int aM,i,j,t; for(i=0;i0 printf(“a=%d,b=%d“
8、,a,b); 江 南 大 学 考 9 / 13 四、 完善程序 每空 2分, 共计 16 分 1 统计 从键盘输入的字符中数字字符的个数,用换行符结束循环。请填空。 int n = 0 , c ; c = getchar ( ) ; while (【 1】 ) if (【 2】 ) n + + ; c = getchar ( ) ; 2 下面程序的功能是从三个红球、五个白球、六个黑球中任意取出八个球,且其中必须有白球,输出所有可能的方案,请填空。 #include “stdio.h“ void main() int i,j,k; printf(“n 红 白 黑 n“); for(i=0;i=3
9、;i+) for(【 3】 ;j=5;j+) k=8-i-j; if(【 4】 ) printf(“ %3d %3d %3dn“,i,j,k); 3 执行以下程序后,第一行的输出是 【 5】 , 第二行的输出是 【 6】 。 #include “stdio.h“ int fac (int a ) int b = 0 ; int c = 3 ; b + + ; c + + ; return a + b + c ; void main ( ) int a = 3 , j ; for ( j = 0 ; j 3 ; j + + ) printf ( “ %dn” , fac (j ) ; 4 对下面
10、的递归函数进行 填空。递归公式为: pn ( x ) = 1)()12(1011 nxpxnnxnn5 试 卷 专 用 纸 10 / 13 float p ( int n , float x ) float z ; if ( n = = 0 ) z = 1 ; else if (【 7】 ) z = x ; else z =【 8】 ; return (z ) ; 五 、编程题 第 1 题 5分,第 2题 9 分, 共计 14 分 1. 将以下程序段改用嵌套的 if语句实现。 int s,t,m; t=(int)(s/10); switch(t) case 10: m=5;break; case 9;m=4;break; case 8: m=3;break; case 7: m=2;break; case 6: m=1;break; default m=0; 2 写一个函数,用“起泡法”对输入的 10 个 整数 按由小到大的顺序排列。