1卷号:B卷二OO九—二O一O学年第二学期C语言程序设计(二)标答(09gz数控123班、09gz信工12班用)题号一二三四五六七八总分题分102020102020得分注意:学号、姓名和所在年级班级不写、不写全或写在密封线外者,试卷作废。一、判断题(共5小题,每题2分,共10分)1.最初的C语言只是为编写UNIX操作系统提供的一种工作语言而设计的。(T)2.赋值语句的结合方式为从右到左。(T)3.C语言不支持动态数组,即数组的下标说明符中不能为变量。(T)4.指针变量用于存放地址,可以将整数赋给指针变量。(F)5.FILE类型是一种共用体类型,用于定义文件指针。(F)二.单选题(共10小题,每题2分,共20分)1.C语言属于(A)语言。A)高级B)低级C)自然D)数学2.有符号整型数是以(B)的形式存储在内存之中。A)原码B)补码C)反码D)ASCII码3.语句:printf(“%d”,(a=2)&&(b=-2);的输出结果是(C)A)-1B)-2C)1D)04.关系表达式53==2输出的结果为(D)。A)2B)-2C)1D)05.已知变量声明intn=4;执行语句while(n--)printf(“%d“,--n);后输出的结果为(A)。A)20.B)31C)321D)2106.已经定义一维数组inta[4];下列引用一维数组的选项中正确的是(B),A)a(2)B)a[7/2]C)a[2*2]D)a[-2]7.函数原型用于检查调用函数基本信息的合法性,下列选项中不属于检查合法性的基本信息是(C)。A)函数名及类型B)参数个数C)参数名称D)参数类型8.若已定义:inta[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是(D)。A)p+1B)a+1C)p++D)a++9.枚举类型enumseason{winter,spring,summer,fall}定义后,枚举元素spring是(A)。A)值为1的枚举常量B)值为1的枚举变量C)值为2的枚举常量D)值为2的枚举变量10.在标准输入输出库中,系统定义的FILE型指针变量不包括(B)。A)stdinB)stdioC)stdoutD)stderr三.填空题(共10小题,每题2分,共20分)1、ISO接受ANSI为C语言制定的标准(C89)作为国际标准(ISO/IEC9899:1990或C90),2、执行表达式c=(a=2,b=3,2*a,a*b);后变量a的值为(2),c的值为(6)。3、printf语句的f格式符,以小数形式输出(单、双)精度数,隐含输出(6)位小数。4、switch-(case)语句能实现(多分支选择.)结构。5、for循环语句中的三个表达式分别表示(循环变量初值)、(循环终值条件)和循环变量增值。6、在C语言中,字符串是以(字符数组)形式存放的,字符串以字符(\0)作为结束标志。7、定义函数时在函数名后面括号中的变量名称为(形式参数);调用函数时函数名后面括号内的参数称为(实际参数)。8、用指针引用数组元素时,可以采用(指针)法和(下标)法两种方法。9、引用结构体变量中的成员变量的方法为:(结构体变量名).(成员名)。10、用(fgets)函数从指定的文件读取一个字符串;用(fputs)函数向指定的文件输出一个字符串。四、改错题:(共5小题,每题2分,共10分)1.求a,c两个整数的商c和余数d。:#includestdio.h姓名一、密封线内不准答题。二、姓名、准考证号不许涂改,否则试卷无效。三、考生在答题前应先将姓名、学号、年级和班级填写在指定的方框内。四、试卷印刷不清楚。可举手向监考教师询问。学号所在年级、班级密封注意意:2main()/**********found**********/{floata=8,b=3.0;c,d;//inta=8,b=3,c,d;c=a/b;d=a%b;printf(“%d%d\n”,&c,&d);//printf(“%d%d\n”,c,d);}2.改正switch-case语句中的错误。#includestdio.hmain(){charch=‘d’;/**********found**********/switch(ch–2);//switch(ch–2)casea;//case‘a’:;default:printf(“%c\n”,ch);case‘b’:printf(“%d”,ch);/}3.用辗转除法求最大公约数,请改下程序中的错误。#includestdio.hmain(){inta,b,c,t,r;/**********found**********/scanf(“%d,%d”,a,b);if(ab){t=a;a=b;b=a;}//if(ab){t=a;a=b;b=a;}while(r=0){a=b;b=r;r=a%b;}//while(r!=0)printf(“%d\n”,,b);}4.更正函数调用中的错误。/**********found**********/floatfun(intx,inty[])//voidfun(intx,inty[]){y[0]=y[1]+y[2];x=x+y[3];}main(){intx[4]={1,2,3,4},y=2;fun(x,y);//fun(y,x);printf(%d,%d\n,x[0],y);}5.结构体structstudents类型变量定义如下,改正程序中的错误。#includestdio.hmain(){/**********found**********/structstudents{charname[12];intscore;}//};studentsstu={wangyin,88},st[4],*s=&stu;//structprintf(%s,%d\n,s-name,(*s).score);}五、读程序写结果:(共5小题,每题4分,共20分)1.读具有逗号表达式的程序,写出输出结果。#includestdio.h//输出结果为(6):main()12{inta,b,c;printf(%d\n,(a=3,b=2,c=6));printf(%d%d\n,a||++b,b);}2、阅读二维数组,并写出输出结果。#includestdio.h//输出结果为(6385):main(){charch[2][5]={693,825},*p[2];inti,j,s=0;for(i=0;i2;i++)p[i]=ch[i];for(i=0;i2;i++)for(j=0;p[i][j]='0'&&p[i][j]='9';j+=2)s=10*s+p[i][j]-'0';printf(%d\n,s);}33.以下程序的子函数中包含静态变量,程序运行后,写出输出结果。#includestdio.h//输出结果为(8,17)func(inta,intb){staticintm=0,i=2;i+=m+1;m=i+a+b;return(m);}main(){intk=4,m=1,p;p=func(k,m);printf(%d,,p);p=func(k,m);printf(%d\n,p);}4、阅读结构体程序,写出输出结果。#includestdio.h//输出结果为(8,5)main(){structdate{longyear;shortmonth;shortday;}d={2009,4,5};printf(%d,%d\n,sizeof(d),d.day);system(pause);}5、执行以下程序,打开file.dat文件,文件中的数据为()#includestdio.hstructstudent_type{charname[10];intage;charaddr[15];}stud[2]={{Zhanghua,19,room101},{Funtian,20,room102}};main(){inti;FILE*fp;fp=fopen(file.dat,w);fprintf(fp,%s,%4d,%s\n,stud[1].name,stud[1].age,stud[1].addr);fclose(fp);}打开file.dat文件,文件中的数据为:(Funtian,20,room102)六、编程题题(共5小题,每题4分,共20分)1、已知a=4,b=6,用交换算法交换a、b的值。#includestdio.hmain(){inta=4,b=6;t=a;a=b;b=t;printf(“a=%d,b=%d”,a,b);}2、从键盘中输入一个字母,从屏幕中输出该字母的小写字母。#includestdio.hmain(){charch;ch=getchar(){if(ch=’A’&&ch=’Z’)ch=ch+32;printf(“%c”,ch)}3、用for循环求n!算出8!#includestdio.hmain(){intk,n=1;for(k=1;k=8;k++)n=n*k;printf(n!=%d\n,n);}4、主函数如下所示,子函数的功能是返回二数中的最大值函数,请编写子函数。#includestdio.hcharfun(charx,chary){if(xy)returnx;elsereturny;}4main(){inta=6,b=8,m;m=fun(a,b);printf(%d\n,m);}5、试编程将下面程序的数组元素中的最大值放入a[0]中。#includestdio.hmain(){inta[10]={6,7,2,9,1,5,8,4,3},*p=a,i;for(i=0;i10;i++,p++)if(*pa[0])*a=*p;printf(%d,*a);}