系别: 班级: 学号: 姓名: 考试课程: 程序设计语言(C) 考试日期:2005 年 07 月 18 日 题号 一 二 三 四 五 总 分 分数 20 20 18 22 20 得分 核分人 阅卷人 一.填空题:(每空2分,共计20分)
1.一个C程序是由若干个函数构成,其中必须有一个 。 2.表达式2.5+7%3*(int)(2.5+4.7)%2/4的计算结果是 。 3.以下程序段的输出结果是 。
int i=0,sum=1;do{ sum+=i++;}while(i<5);printf(“%d\\n”,sum);
4.“a”在内存中占 个字节。
5.C语言中逻辑运算符的 优先级高于算术运算符。 6.以下程序的运行结果是 。 # define MAX(a,b) (a>b?a:b)+1
main( ) { int i=7,j=9; printf(“%d\\n”,MAX(i,j));} 7.以下程序的运行结果是 。 fun(int *p1,int *p2)
{ if(*p1>*p2) printf(“%d\\n”,*p1);else printf(“%d\\n” *p2);} main( ) { int a=3,b=7; fun(&a,&b);} 8.在C语言中,声明枚举类型用 开头。 9.表达式~2&3<<2|3的值是 。
10.当正常执行了文件关闭操作时,fclose函数的返回值是 。
二.选择题:(每小题1分,共计20分)
1.语句printf(“%d\\n”,strlen(“teacher”));的输出结果是( )。 A.6 B.7 C.存在语法错误 D.不定值 2. C语言中运算对象必须是整型的运算符是( )。
A.% B./ C. ! D.* 3.以下正确的选项是( )。 A.10++
B.(x+y)- -
C. ++(a1-b2)
D.(d++)+(d++)+(d++)
4.以下程序段的输出结果是( )。 int i=3; printf(“%d,%d”,i,i++);
A.3,3 B.4,3 C.4,4 D.不确定 5.若int型占两个字节,以下程序段的输出是( )。
A.-1,-1 B.-1,32767 C.-1,32768 D.-1,65535
int a=-1;printf(“%d,%u\\n”,a ,a);
6.以下程序段的输出结果是( )。
A.1 B.3 0 C.1 -2 D.死循环
int x=3;do { printf(“%3d”,x-=2);}while(!(--x)); 7.以下程序段的输出结果是( )。
A.9 8 B.8 9 C.6 6 D.以上三个都不对
#include { double a=-3.0,b=2; printf(“%3.0f %3.0f\\n”,pow(b,fabs(a)),pow(fabs(a),b));} 8.以下对宏替换叙述不正确的是( )。 A.宏替换不占用运行时间 B.宏名无类型 C.宏替换只是字符替换 D.宏替换时先求出实参表达式的值,然后代入形参运算求值 9.在C语言中,变量的指针是指该变量的( )。 A.地址 B.名 C.值 D.一个标志 10.当定义一个结构体变量时,系统分配给它的内存是( )。 A.结构体最后一个成员所需内存量的大小 B.各成员所需内存量的总和 C.成员中占内存量最大者所需的容量 D.结构体中第一个成员所需内存量 11.在C语言中,对文件的存取是以( )为单位的。 A.记录 B.函数 C.字节 D.模块 12.fread和fwrite函数常用来要求一次读入/输出( )数据。 A.一个整数 B.一个实数 C.一个字节 D.一组 13.若用fopen函数打开一个新的二进制文件,要求文件既能读也能写,则应选用的文件方式字符串是( )。 A.“wb+” B.“r+” C.“rb+” D.“ab+” 14.下面描述正确的是( )。 A.两个字符串所包含的字符个数相同时,才能比较字符串; B.字符个数多的字符串比字符个数少的字符串大 C.字符串“STOP ”与“STOP”相等 D.字符串“That”小于字符串“The” 15.以下程序段的输出结果是( )。 A.*&*&* B.*&*&*& C.**&&*& D.以上三个都不对 main( ) { int i; for(i=1;i<6;i++) {if(i%2) printf(“*”);else continue; printf(“&”);} } 16.若有说明语句:int a[2][4];则对a数组元素的正确引用是( )。 A.a[0][3] B.a[0][4] C.a[2][2] D.a[2][2+1] 17.输出较大字符串的正确语句是( )。 A.if( strcmp(str1,str2)) printf( “%s”,str1); B.if( str1>str2) printf( “%s”,str1); C.if( strcmp(str1,str2)>0) printf( “%s”,str1); D.if( strcmp(str1)>(str2)) printf( “%s”,str1); 18..在一个文件中定义的全局变量的作用域为( )。 A.本程序的全部范围 B.离定义该变量的位置最近的函数 C. 函数内全部范围 D.从定义该变量的位置开始到本文件结束 19.有一个二维数组a[3][4],2行3列元素的正确表示方法是( )。 A .&a[2][3] B.a[2]+3 C.*(a+2)+3 D.*(a[2]+3) 20.下面程序段的运行结果是( )。 A.‘a’‘b’ B.ab C.ab c D.abc char c[5]={‘a’,‘b’,‘\\0’,‘c’,‘\\0’};printf(“%s”,c); 三.程序阅读题:(每空2分,共计18分) 1. main() 输出结果: 。 { int arr[10],i,k=0; for(i=0;i<10;i++) arr[i]=i; for(i=0;i<4;i++) k+=arr[i]+i; printf(“%d\\n”,k);} 2. int a=3,b=5; 输出结果:max=______。 max(int a, int b) { int c; c=a>b?a:b; return(c);} main( ) { int a=8; printf(“max=%d”,max(a,b));} 3. fun1(int a,int b) 输出结果:______ 。 { int c; a+=a;b+=b;c=fun2(a,b); return c*c;} fun2(int a,int b) { int c; c=a*b%3;return c;} main( ) { int x=11,y=19; printf(“%d\\n”,fun1(x,y));} 4.int fun(int i,int j) {int x=7; printf(“i=%d;j=%d;x=%d\\n”,i,j,x);} main( ) {int i=2,x=5,j=7;fun(j,6); printf(“i=%d;j=%d;x=%d\\n”,i,j,x);} 输出结果:i=____ ;j=____;x=____ i=____;j=____;x=____ 四.根据下列各编程题的题意填空:(每空2分,共22分) 1.以下程序的作用是判断year是否闰年,如是闰年则输出“leap year”字样,请填空。 main( ) { int year; scanf(“%d”,&year) ;if((year%4==0 year%100!=0) (year%400==0)) printf(“leap year”);} 2.以下函数是求x的y次方。 double fun(double x,int y) { int i;double z=1; for(i=1;i ;i++) z= ;return z;} 3.以下程序的功能是计算s=1!+2!+3!+„„+n! long f(int n) { int i;long s; s= ;for(i=1;i<=n;i++) s= ; return s;} main( ) { long s; int k,n; scanf(“%d”,&n); s= ; for(k=0;k<=n;k++) s=s+ ; printf(“%d\\n”,s);} 4.求100到200之间的全部素数。 #include main( ) { int m,k,i,n=0; for(m=101;m<= ;m=m+2) { k=sqrt(m);for(i=2;i<= ;i++) if(m%i==0) ; if(i>=k+1) printf(“%d”,m);n=n+1}; } 五.编程题:(共计20分) 1.编写程序求出满足不等式1+2+3+„„+n<500的最大n值及总和。(6分)。 2.编写程序求一个4×4矩阵左对角线之和。(6分) 设数组是a[4][4]={4,9,8,7,6,-10,10,-5,2,12,14,-9,1,3,5,-2}; 3.使用自定义函数,计算两个实数a、b的值的平方根之和。(8分) 要求:数据的输入、输出在主函数中实现。 因篇幅问题不能全部显示,请点此查看更多更全内容