电子科技大学《C语言》自测题答案之欧阳科创编.docx
- 文档编号:15384470
- 上传时间:2023-07-04
- 格式:DOCX
- 页数:20
- 大小:138.77KB
电子科技大学《C语言》自测题答案之欧阳科创编.docx
《电子科技大学《C语言》自测题答案之欧阳科创编.docx》由会员分享,可在线阅读,更多相关《电子科技大学《C语言》自测题答案之欧阳科创编.docx(20页珍藏版)》请在冰点文库上搜索。
电子科技大学《C语言》自测题答案之欧阳科创编
自测题1答案
时间:
2021.02.05
创作:
欧阳科
一、填空题(每空1分,共29分)
1、若有以下的定义:
inta[6];则数组a元素的下标的上限为5,下限为0。
2、局部的变量是在函数内部定义的,它们只在本函数有效。
3、组成C程序的若干函数中,只能且必须有一个主函数。
4、C语言中的变量名可以由字母,数字和下划线三种字符组成,且首字符不能是。
5、枚举类型enumcolor(bla,blu,gre=3,cya,red)中的枚举项的值bla=__0__、blu=__1__、cya=__4__、red=__5___.
6、c语言中变量的存储属性有自动、____静态____、__外部______和寄存器四种。
7、算术运算符,关系运算符,赋值运算符的优先级从低到高依次是赋值运算符,关系运算符,算术运算符。
8、标准文件是系统自动打开和关闭的,但是一般用户文件,必须在程序中用函数_fopen()_打开文件,文件操作结束后,用__fclose()_关闭文件。
9、函数参数有形式参数和实际参数两种形式。
10、程序的三种基本结构是顺序结构,选择结构,循环结构。
11、x、y、z均为int型变量,请写出描述“x或y中有一个小于z”的表达式__x 12、下面程序的运行结果是: c1=c,c2=abc #include main() {chars[10]={“abc”}; printf(“c1=%c,c2=%s\n”,s[2],s); } 13、如果a=5,b=2,c=3,d=4,则表达式a a: c c: d的值是3。 14、设a=6,b=2,表达式a*=a+b运算后a的值为48。 15、设x=3.8.,a=9,y=5.3,表达式x+a%2*(int)(x+y)%2/4的值3.8。 二、选择题(每小题2分,共26分) 1、一个C程序的执行是从A A)本程序的main函数开始,到main函数结束。 B)本程序的第一个函数开始,到本程序最后一个函数结束。 C)本程序的main函数开始,到本程序文件的最后一个函数结束。 D)本程序的第一个函数开始,到本程序main函数结束。 2、下面的四个选项中,均不是合法的用户标识符的选项是B A)BB)b-aC)floatD)_123 M_0goto2abtemp Doint_AINT 6、请问: 下面这个程序段的输出是什么? D inta=7,b=8,c=9; if(a a=b; b=c; c=a; } printf("a=%db=%dc=%d\n",a,b,c); A.a=7b=8c=7B.a=7b=9c=7 C.a=8b=9c=7D.a=8b=9c=8 7、以下描述正确的是C A)goto语句只能用于退缩出多层循环。 B)switch语句中不能出现continue语句。 C)只能用continue语句中来终止本次循环。 D)在循环语句中break语句不独立出现。 8、以下对二维数组a的正确说明是C A)inta[3][];B)floata(3,4); C)inta[3][4]D)floata(3,)(4); 9、有下面的程序段 chara[3],b[]=”student”; a=b; printf(“%s”,a); 则D A)运行后将输出student;B)运行后将输出b; C)运行后将输出aD)编译出错 10、若用数组名作为函数调用的实参,传给形参的是A A)数组的首地址B)数组的第一个元素值 C)数组的全部元素值D)数组中元素的个数 11、在说明语句: int*f();中,标识符f代表的是C A)一个返回值为指针型的函数名 B)一个用于指向整型数据的指针变量 C)一个用于指向函数的指针变量 D)一个用于指向一维数组的行指针 12.变量的指针,其含义是指该变量的___D_____ A)一个标志B)值C)名D)地址 13.已知intb;则对指针变量正确的说明和初始化是: __D__ A)int*p=b;B)intp=b;C)intp=&b;D)int*p=&b; 三、判断题(在你认为正确的表达式前打√,错误的打×,每小题1分,共15分) (×)1、switch语句中,所有case后的常量表达式可以相同 (√)2、C语言不能嵌套定义函数,但可以嵌套调用。 (√)3、使用宏定义时,宏名可以是大写或者小写,但是常用大写字母表示。 (√4、C语言函数的缺省类型是void型(空类型)。 (×)5、打印三行输出的C语言程序必须用三条printf语句。 (×)6、如果a>b或c (√)7、如果有: intdata[10];int*p;则语句p=data 和语句p=&data[0]等价。 (√)8、联合类型是在同一个存储空间,可以为几个不同数据类型的成员所使用。 (×)、一个数组能够存储许多不同类型的值。 四、阅读下列程序,请将运行结果写在答题卡上(每题3分,共15分)。 五、编写下列程序,(共15分) 1.试编写一个程序计算a! +b! +c! ,并要求有输出结果. 解: #include fact(int); voidmain() { inta,b,c; printf(”Enterthreenumbers: ”); scanf(“%d,%d,%d”,&a,&b,&c); printf(%d! +%d! +%d! =%d+%d+%d\n”,a,b,c,fact(a),fact(b),fact(c)); return; } fact(intn) { intresult; if(n==1)return (1); result=fact(n-1)*n;/*递归调用*/ return(result); } 2.编写一个程序,将一组数据{6,5,8,1,0,4,7,3,2,9}按从小到大的顺序排列,程序显示排序前和排序后的结果。 解: #include #defineN10 main() { inta[N]={6,5,8,1,0,4,7,3,2,9} inti,j,t; printf(“Thearraybeforesorted: ”); for(i=0;i<9;i++) { for(j=i+1;j<10;j++) { if(a[i]>a[j]) { t=a[i]; a[i]=a[j]; a[j]=t; } } } for(i=0;i printf(“%4d”,a[i]); return0; } 自测题2答案 一、填空题 1.设inta=5,b=6,写出表达式a=a+b的值_11__。 2.若有代数式x2÷(3x+5),则正确的C语言表达式为: _____x*x/(3*x+5)________。 3.开发一个c语言的源程序要经过的四个阶段_编辑C语言源程序文件,编译源程序,程序连接,程序运行____。 4.inti=5,j,k;j=i++;k=i;则k的值为__6____。 5.已知: ints[][3]={1,2,3,4,5,6};此时数组元素s[1][1]的值为____5______。 6.字符串“hello”占用内存____6______字节。 7.程序段floata=65.123;printf("a=%-10.2f",a);执行时输出的结果是____a=65.12UUUUU__________,(用大写字母U表示空格)。 8.执行下面程序段时输出的结果是___7___。 #include main() { inti=5; switch(i) {case5: case6: i+=2; case7: break; case8: i+=2; } printf("i=%d",i); } 10.c语言中有5种基本数据类型。 它们是字符型,整型,__浮点型_____,____长浮点型(双精度型)__和_无值型_____,其关键字分别是: char,int,__fload___,__double___和__void___。 二、单项选择题 1.在程序中可以用来作为变量名的合法的标识符是: ___c_____ AstaticB23_b1Cstu_1tD#33 2.下列运算符运算级别最高的是: ______ A&&B+=C>=D! 三、程序改错 4.include { main() inta,b,c,sum; a=1; b=2; scanf(“%d”,&c); sum=a+b+c printf(“sum=”,sum) } 改为: #include main() { inta,b,c,sum; a=1; b=2; scanf(“%d”,&c); sum=a+b+c; printf(“sum=%d”,sum); } 四、阅读下列程序,写运行结果 五、编写下列程序 1.应用动态存储单元编写一个程序,计算两个浮点数之和。 申请用于存储3个浮点数的动态存储空间。 得到所要求的存储空间后,向里面存储两个数据与他们的和,接着输出这些数据。 然后将所申请的存储空间退回系统。 #include #include main() { float*prt; prt=malloc(3*sizeof(float)); if(! prt) printf(“outofmemory”); else{ printf(“\nEntertwonumbers: ”); scanf(“%d%d”,prt,prt+1); *(prt+2)=*prt+*(prt+1) printf(“Thesumis%d\n”,*(prt+2)); free(prt); } return0; } 2.求下面一元二次方程的根。 ax2+bx+c=0 解: #include #include floatX1,X2,p,q,d;/*全局变量*/ floatgreater_than_zero(float,float); floatequal_to_zero(float,float); floatequal_to_zero(float,float); floatsmaller_than_zero(float,float); main() { floata,b,c; printf(“Entera,b,c: ”); scanf(“%f%f%f”,&a,&b,&c); d=b*b-4*a*c; if(d>0) {greater_than_zero(a,b); printf(X1=%5.2f\t,X2=%5.2f\n,X1,X2); } elseif(d==0) { equal_to_zero(a,b); printf(“X1=X2=%5.2f\n”,X1); } else {smeller_than_zero(a,b); printf(“X1=%5.2f+%5.2fi\n”,p,q); printf(“X2=%5.2f-%5.2fi\n”,p,q); } return0; } floatgreater_than_zero(floatx,floaty) { X1=(-y+sqrt(d))/(2*x); X2=(-y-sqrt(d))/(2*x); Return; floatequal_to_zero(floatx,floaty) { X1=(-y)/(2*x) return; } floatsmaller_than_zero(floatx,floaty) { p=-y/(2*x); q=sqrt(-d)/(2*x); return: } 自测题3答案 一、填空题 1、x、y、z均为int型变量,请写出描述“x或y中有一个小于z”的表达式__x 2、下面程序的运行结果是: c1=c,c2=abc #include main() {chars[10]={“abc”}; printf(“c1=%c,c2=%s\n”,s[2],s); } 3、如果a=5,b=2,c=3,d=4,则表达式a a: c c: d的值是3。 4、设a=6,b=2,表达式a*=a+b运算后a的值为48。 5、设x=3.8.,a=9,y=5.3,表达式x+a%2*(int)(x+y)%2/4的值3.8。 6、凡是函数中未指定存储类别的局部变量,隐含的存储类别为auto。 7、在c语言中,一个函数一般由两个部分组成,它们是首部、函数体。 8、执行下列程序段后,*(p+1)的值是b,*(p+2)的值是\0. charc[3]=”ab”,*p;p=c; 9、在c语言中,调用函数时,如果形参是简单变量,对应的实参可以是变量、数组元素和常量,当形参和实参都是变量时,数据的传递是单向值传递。 10、说明预处理命令#definexyt(x,y)(intt;t=x;x=y;y=t)的功能是用宏名定义xyt(x,y)定义了将x、y两个参数交换。 二、选择题 1、以下选项中不合法的用户标识符是: B A._123B.fileC.a$D.Dim 2、TURBOC中int类型变量所占字节数是: B A.1B.2C.3D.4 3、若变量已正确说明为int类型,要给a、b、c输入数据,以下正确的输入语句是: D A.read(a,b,d)Bscanf(“%d%d%d”,a,b,c) C.scanf(“%D%D%D”,&a,&b,&c)D.scanf(“%d%d%d”,&a,&b,&c) 4、以下程序段的输出是: B printf(“|%10.5f|\n”,12345.678); A.|1234.67800|B.|12345.6780| C.|12345.67800|D.|12345.678| 5、在C语言中,要求运算数是整型的运算符是A A)/B)++C)! =D)* 6、有输入语句: scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);为使变量a,b,c的值分别为1,3,2,从键盘上输入数据的正确形式应当是D A)132〈回车〉D)a=1,b=3,c=2〈回车〉 C)a=1b=3c=a<回车>B)1,3,2〈回车〉 7、当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是B if(a if(c else if(a if(b elsex=3; elsex=6; elsex=7; A)1B)2C)3D)6 三、判断题 (√)1、C语言中,变量名用大小写是等价的。 (×)2、强制类型转换,如(double)x,只改变原变量的类型,而不改变其值。 (×)3、存储字符串所需的内存空间等于字符串的长度。 (√)4、C语言中,注释可以出现在源程序的任何位置。 (×)5、整型、字符型、指针型是C语言中最简单的数据类型。 (√)6、全局变量在整个源程序文件中都有效。 (×)7、switch选择结构中必须有default子句。 (√)8、如果x>y或者ay||a (×)9、一个函数floatdiv(floatx,floaty),其函数原型说明为floatdiv(floatx,floaty). (√)10、结构成员名可以与程序中的变量同名,也可以与结构类型名相同 四、阅读下面程序,请写出运行结果(每题3分,共15分) 1.以下程序的输出结果是 #include main() {inti=0,a=0; while(i<20) {for(;;) {if((i%10)==0)break; elsei--; } i+=11;a+=i; } printh("%d\n",a); } 32 2.下面程序的运行结果是: ____10010__________。 #defineN10 #defines(x)x*x #definef(x)(x*x) main() {inti1,i2; i1=1000/s(N); i2=1000/f(N); printf("%d%d\n",i1,i2); } 5.f(inta) { autointb=0; staticintc=3; b++; c++; return(a+b+c); } main() { inta=2,i; for(i=0;i<3;i++) printf(“%d”,f(a)); return; } 运行结果: 777 4.#include main() { inti=2,p; p=f(i,++i); printf(“%d\n”,p); return; } intf(inta,intb) { intc; if(a>b)c=1; elseif(a==b)c=0; elsec=-1; return(c); } 运行结果: 1 五、编写下列程序(15分) 1.编写一程序,计算并输出1~100的整数和。 解: #include main() { ints=0,i; for(i=1;i<101;i++) s=s+i; printf(“sum=%d\n”,s); } 2.有一3×3的矩阵a。 要对它进行转置操作。 所谓转置,就是进行矩阵元素的行列号的对换。 列如,元素a(i,j)转换为a(j,i)。 整个转置过程要求用指针实现。 程序如下: #include main() { inta[3][3]={1,2,3, 4,5,6, 7,8,9,}; inti,j,k,*p; for(i=0;i<3;i++)/*输出原始矩阵*/ { printf(“\n”); for(j=0;j<3;j++) printf(“%d“,a[i][j]); } printf(“\n”); p=a; for(i=0;i<3;i++) { for(j=i;j<3;j++) { k=*(p+3*i+j); *(p+3*i+j)=*(p+3*j+i); *(p+3*j+i)=k; } } for(i=0;i<3;i++)/*输出结果*/ { printf(“\n”); for(j=0;j<3;j++) printf(“%d“,a[i][j]) } } 时间: 2021.02.05 创作: 欧阳科
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言 电子科技大学 语言 自测 答案 欧阳 创编