收藏 分销(赏)

2023年C语言程序设计形成性考核册参考答案.doc

上传人:二*** 文档编号:4518898 上传时间:2024-09-26 格式:DOC 页数:36 大小:75.54KB 下载积分:5 金币
下载 相关 举报
2023年C语言程序设计形成性考核册参考答案.doc_第1页
第1页 / 共36页
本文档共36页,全文阅读请下载到手机保存,查看更方便
资源描述
一、选择题 1. 在每个C语言程序中都必须包具有这样一个函数,该函数的函数名为(A)。 A.main B.MAIN C.name D.funtion 2.C语言原程序文献的缺省扩展名为(A)。 A.cpp B.exe C.obj D.C 3.由C语言目的文献连接而成的可执行的缺省扩展名为(B)。 A.cpp B.exe C.obj D.C 4.程序运营中需要从键盘输入多于一个数据时,各数据之间应使用(D)符号作为分隔符。 A.空格或逗号 B.逗号或回车 C.回车或分号 D.空格或回车 5.每个C语言程序的编译错误分为(B)类。 A.1 B.2 C.3 D.4 6.设x和y均为逻辑值,则x && y为真的条件是(A)。 A.它们均为真 B.其中一个为真 C.它们均为假 D.其中一个为假 7.设有语句“int a=12;a+=a*a;”,则执行结束后,a的值为(C)。 A.12 B.144 C.156 D.288 8.x>0 && x<=10的相反表达式为(A)。 A.x<=0 || X>10 B.x<=0 && x>10 C.x<=0 || x<=10 D.x>0 && x>10 9.字符串“a+b=12\n”的长度为(B)。 A.6 B.7 C.8 D.9 10.在下列符号常量定义中。错误的定义语句格式为(C)。 A.const M1=10; B.const int M2=20; C.const M3 10 D.const char mark=’3’; 11.带有随机函数的表达式rand()%20的值在(C)区间内, A.1~19 B.1~20 C.0~19 D.0~20 12.当解决特定问题时的循环次数已知时,通常采用(A)循环来解决。 A.for B.while C.do-while D.switch 13.在switch语句的每个case块中,假定都是以break语句结束的,则此switch语句容易被改写为(B)语句。 A.for B.if C.do D.while 14.for语句可以被改写为(D)语句。 A.复合 B.if C.switch D.while 15.下面循环语句执行结束后输出的i值为(B)。 for(int i=0;i<n;i++)if(i>n/2){cout<<i<<endl;break;} A.n/2 B.n/2+1 C.n/2-1 D.n-1 16.在下面循环w语句中内层循环体S语句的执行次数为(D)。 for(int i=0;i<n;i++) for(int j=i;j<n;j++)S; A.n2 B.(n+1)/2 C.n(n-1)/2 D.n(n+1)/2 17.在下面的do循环语句中,其循环体被执行的次数为(A )。 int i=0;do i++;while(i*i<10); A.4 B.3 C.5 D.2 1. 在下面的一维数组定义中,(C)语句有语法错误。 A.int a[]={1,2,3}; B.int a[10]={0}; C.int a[]; D.int a[5];n 2.在下面的二维数组定义中,(C)语句是对的的。 A.int a[5][]; B.int a[][5]; C.int a[][3]={{1,3,5},{2}}; D.int a[](10) 3.假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[1][2]的值为(C)。 A.2 B.4 C.6 D.8 4.假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[2][1]的值为(A)。 A.0 B.4 C.8 D.6 5.将两个字符串连接起来组成一个字符串时,选用(C)函数。 A.strlen() B.strcap() C.strcat() D.strcmp() 1. 在下面的(C)函数声明语句存在语法错误。 A.AA(int a,int b); B.AA(int ,int) C.AA(int a;int b) D.AA(int a,int) 2.在下面的(C)不能作为函数的返回类型。 A.void B.int C.new D.long 3.下面对的的函数原型语句是(B)。 A.int Function(void a); B.void Function(int); C.int Function(a); D.void int(double a); 4.函数调用func(exp1,exp2),exp3*exp4-exp5)中所含实参的个数为(B)个。 A.1 B.2 C.4 D.5 5.下面的标记符中,(C)是文献级作用域。 A.函数形参 B.语句标号 C.外部静态类标记符 D.自动类标记符 6.下面的标记符中,(B)具有全局级作用域。 A.函数形参 B.全局变量 C.内部静态类标记符 D.自动变量符 7.假定p是一个指向float型数据的指针,则p+1所指数据的地址比p所指数据的地址大( C)字节。 A.1 B.2 C.4 D.8 8.假定a为一个字符数组名,则a[8]的地址比该数组的首地址大( B )个字节。 A.4 B.8 C.16 D.32 9.假定a为一个数组名,则下面的( B )表达有错误。 A.a[i] B.*a++ C.*a D.*(a+1) 10.用calloc函数创建具有10个整型元素的一维数组的对的语句是( C )。 A.int *p=calloc(10,2); B.int *p=callo(10; C.int *p=calloc(10,4); D.int *p=malloc(10); 11.假定变量m定义为“int m=7;”,则定义p的对的语句为( B )。 A.int p=&m; B.int *p=&m; C.int &p=*m; D.int *p=m; 12.假定k是一个double类型的变量,则定义指向k的[电脑商场特别版1] 变量p的对的语句为( B )。 A.double p=&k; B.double *p=&k; C.double &p=*k; D.char *p=”Thank you!”; 13.假定一条定义语句为“int a[10],x,*pa=a;”,若要把数组a中下标为3的元素赋值给x,则不对的的语句为( D )。 A.x=pa[3]; B.x=*(a+3); C.a=a[3]; D.x=*pa+3; 14.假定有定义“int b[10];int *pb;”,则不对的的赋值语句为( C )。 A.pb=b; B.pb=&b[0]; C.pb=b+2; D.pb=b[5]; 15.假定指针变量p定义为“int *p=new int(100);”,要释放p所指向的动态内存,应使用语句( D )。 A.delete[p]; B.delete *p; C.delete &p; D.delete []p; 16.假定指针变量p定义为“int *p=calloc(30,sizeof(int));”,要释放p所指向的动态内存,应使用语句( D )。 A.delete[p]; B.deldete(p); C.free[]p; D.free(p); 1. 假定有“struct BOOK{char title[40];float price;};struct BOOK *book;”,则不对的的语句为(A)。 A.struct BOOK *x=malloc(book); B.struct BOOK x={“C++ Programming”,27.0}; C.struct BOOK *x=malloc(sizeof(BOOK)); D.struct BOOK **x=&book; 2. 假定有“struct BOOK{char title[40];float price;} book;”,则对的的语句为(B)。 A.struct BOOK x=&book; B.struct BOOK *x=&book; C.struct BOOK x=calloc(BOOK); D.struct BOOK *x=BOOK; 3.表达文献结束的符号常量为(C)。 A.eof B.Eof C.EOF D.feof 4.C语言中系统函数fopen()是(D)一个数据文献的函数。 A.读取 B.写入 C.关闭 D.打开 5.从一个数据文献中读入以换行符结束的一行字符串的函数为(B)。 A.gets() B.fgets() C.getc() D.fgetc() 6.向一个二进制文献写入信息的函数fwrite()带有(D)参数。 A.1 B.2 C.3 D.4 二、填空题 1.C语言中的每条简朴语句以___;_______作为结束符。 2.C语言中的每条复合语句以___}_______作为结束符。 3.在C语言程序的每个程序行后面或单独一行的开始使用注释的标记符为___//___。 4.单行或多行注释的结束标记符为__*/_____。 5.在一个C程序文献中,若要包含此外一个头文献或程序文献,则应使用以__#include___标记符开始的预解决命令。 6.在#include命令中所包含的头文献,可以是系统定义的头文献,也可以是__用户___定义的头文献。 7.一个函数定义由__函数头______和函数体两部分组成。 8.用于输出表达式的标准输出函数是_printf( )_________。 9.当不需要函数返回任何值时,则应使用__void_______标记符定义函数类型。 10.执行“printf(“%d-%d=%d”,43,18,43-18);”语句后得到的输出结果为__43-18=25_______。 11.每个C程序文献在编译时也许出现有警告性错误,其相应的标记符为__warning______。 12.每个C程序文献在编译时也许出现有致命性错误,其相应的标记符为__error______。 13.十进制数25表达成符合C语言规则的十六进制数为___0x19___。 14.在C语言中,转义字符序列___\n___表达一个换行符。 15.执行“printf(“%c”,’F’-2);”语句后得到的输出结果为__D___。 16.已知’A’~’Z’的ASCII码为65-90,当执行“int x=’C’+5;”语句所x的值为___72___. 17.假定一个枚举类型的定义为“enum RB{ab,ac=3,ad,ae}x=ad;”,则x的值为___4___. 18.char类型的大小为__1__个字节。 19.int类型的大小为__4__个字节。 20.float类型的大小为__4__个字节。 21.十进制数28类型为___int___。 22.十进制数3.26类型为___double___。 23.若需要定义一个符号常量,并且使C语言可以进行类型检查,则应在定义语句的开始使用保存字____const___。 24.使用const语句定义一个符号常量时,则必须对它同时进行__定义类型和赋初值__。 25.执行“int x=45,y=13;printf(“%d”,x%y);”语句序列后得到的输出结果为___6__。 26.假定x=5,则表达式2+x++的值为__7__。 27.表达式(float)25/4的值为___6.25___。 28.表达式(int)14.6%5的值为___4___。 29.表达式x=x+1表达成增量表达式为__x++___。 30.增量表达式++y表达成赋值表达式为___y+=1__。 31.关系表达式(x!=0)的等价表达式为____x___。 32.假定不允许使用逻辑非操作符,则关系表达式x+y>5的相反表达式为___x+y<=5__。 33.假定不允许使用逻辑非操作符,则逻辑表达式a>b || b==5的相反表达式为___a<=b && (b>5 || b<5)____。 34.若x=5,y=10,则x>y逻辑值为___false___。 35.若x=5,y=10,则x<=y逻辑值为___true___。 36.假定x=5,则执行“a=(x?10:20);”语句后a的值为__10__。 37.执行“typedef int DataType;”语句后,在使用int定义整型变量的地方都可以使用___DataType___来定义整型变量。 38.在switch语句中,每个语句标号所含保存字case后面的表达式必须是__整型__。 39.作为语句标号使用的C保存字case和default只能用于__switch__语句的定义体中。 40.在switch语句时,在进行作为条件的表达式求值后,将从某个匹配的标号位置起向下执行,当碰到下一个标号位置时(停止/不断止)___不断止__执行。 41.若do循环的“尾”为“while(++i<10)”,并且i的初值为0,同时在循环体不会修改i的值,由循环体将被反复执行__10___次后正常结束。 42.当在程序执行到___break___语句时,将结束本层循环语句或switch语句的执行。 43.在程序中执行到__return__语句时,将结束所在函数的执行过程,返回到调用该函数的位置。 44.在程序执行完__主(main)__函数调用后,将结束整个程序的执行过程,返回到操作系统或C语句集成开发环境界面窗口。 1.假定一维数组的定义为“char * a[8];”,则该数组所含元素的个数为___8_______。 2.假定一维数组的定义为“char * a[8];”,则该数组所占存储空间的字节数为___32______。 3.假定二维数组的定义为“int a[3][5]”,则该数组所占存储空间的字节数为___60______。 4.假定二维数组的定义为“char a[M][N];”,则该数组所所含元素的个数为__M*N_____。 5.假定二维数组的定义为“double a[M][N];”,则每个数组元素的行下标取值范围在__0~M-1___之间。 6.假定二维数组的定义为“double a[M][N];”,则每个数组元素的列下标取值范围在__0~N-1___之间。 7.使用“typedef char BB[10][50];”语句定义__BB______为具有10行50列的二维字符数组类型。 8.存储字符’a’需要占用存储器的_1_____个字节空间。 9.空字符串的长度为__0_______。 10.存储一个空字符串需要占用__1___个字节。 11.字符串”a:\\xxk\\数据”的长度为___11______。 12.用于存储一个长度为n的字符串的字符数组的长度至少为__n+1______。 13.strcmp函数用于进行两个字符串之间的___大小比较___。 14.Strcpy函数用于把一个字符串___复制到___另一个字符数组空间中。 15.一个二维字符数组a[10][20]可以存储__ 10___个字符串。 16.一个二维字符数组a[10][20]可以存储的每个字符串的长度至多为___19___. 1.在C语言中,一个函数由函数头和___函数体_______组成。 2.在函数外定义的变量称为全局变量,若没有被初始化则系统隐含对它所赋的初值为___0______。 3.假如一个函数只允许同一程序文献中的函数调用,则应在访函数定义前加上的C保存字为为___static______。 4.假如一个函数直接或间接地调用自身,这样的调用被称为__递归_____调用。 5.调用系统函数时,要先使用#include命令包含该函数的原型语句所在__头___文献。 6.函数形参的作用域是该函数的__内部___。 7.假定p所指对象的值为25,p+1所指对象的值为46,则*p++的值为__25______。 8.假定p所指对象的值为25,p+1所指对象的值为46,则*++p的值为__46______。 9.假定p所指对象的值为25,p+1所指对象的值为46,则执行“*(p++);”语句后,p所指对象的值为__46______。 10.假定a是一个指针数组,则a+1所指对象的地址比a地址大__4___字节。 11.若要把一个整型指针p转换为字符指针,则采用的强制转换表达式为___(char*)p______。 12.假定一个数据对象为int*类型,则指向该对象的指针类型为__int**______。 13.假定p是一个指向整数对象的指针,则用___&p___表达指针变量p的地址。 14.若p指向x,则___*p___与x的等价的。 15.NULL是一个符号常量,通常作为空指针值,它值为__ ’\0’ (ASCII码0)___。 1.假定一个结构类型的定义为“struct A{int a,b;A*c;};”,则该类型的大小为___12_______字节。 2.假定一个结构类型的定义为“struct B{int a[5],char *b;};”,则该类型的大小为___24_______字节。 3.假定一个结构类型的定义为“struct D{int a;union{int b;double c;};struct D* d[2];};”,则该类型的大小为___20 _______字节。 4.假定要动态分派一个类型为struct Worker的具有n个元素的数组,并由r指向这个动态数组,则使用语句的表达式为struct Worker* r=__(Worker*)malloc(n*sizeof(Worker));_____。 5.假定要访问一个结构x中的由a指针成员所指向的对象,则表达方法为__x.(*a)___。 6.假定要访问一个结构指针p所指向对象中的b指针成员所指的对象,则表达方法为_____ *(p->b)___ 7.与结构成员访问表达式(*fp).score等价的表达式是__fp->score______。 三、写出下列每个程序运营后的输出结果 1. #include<stdio.h> void main() { int x=5;switch(2*x-3){ case 4:printf("%d ",x); case 7:printf("%d ",2*x+1); case 10:printf("%d ",3*x-1);break; default:printf("%s ","default\n"); } printf("%s\n","switch end."); } 输出结果为: 11 14 switch end. Press any key to continue 2. #include<stdio.h> void main() { int i,s=0; for(i=1;i<=6;i++) s+=i*i; printf("s=%d\n",s); } 输出结果为: s=91. Press any key to continue 3. #include<stdio.h> void main() { int i,s1=0,s2=0; for(i=0;i<10;i++) if(i%2)s1+=i; else s2+=i; printf("%d %d\n",s1,s2); } 输出结果为: 25 20. Press any key to continue 4. #include<stdio.h> void main() { int n=10,y=1; while(n--){y++;y++;} printf("y=%d\n",y); } 输出结果为: y=21. Press any key to continue 5. #include<stdio.h> void main() { int f,f1,f2,i; f1=f2=1; printf("%d %d ",f1,f2); for(i=3;i<=10;i++){ f=f1+f2; printf("%d ",f); if(i%5==0)printf("\n"); f1=f2; f2=f; } printf("\n"); } 输出结果为: 1 1 2 3 5 8 13 21 34 55 Press any key to continue 6. #include<stdio.h> #include<math.h> void main() { int i,n; for(n=2;n<=20;n++){ int temp=(int)sqrt(n);//sqrt(n)求出n的平方根并取整 for(i=2;i<=temp;i++) if(n%i==0)break; if(i>temp)printf("%d ",n); } printf("\n"); } 输出结果为: 2 3 5 7 11 13 17 19 Press any key to continue 7. #include<stdio.h> #include<math.h> const int M=20; void main() { int i,c2,c3,c5; c2=c3=c5=0; for(i=1;i<=M;i++){ if(i%2==0)c2++; if(i%3==0)c3++; if(i%5==0)c5++; } printf("%d %d %d\n",c2,c3,c5); } 输出结果为: 10 6 4 Press any key to continue 8. #include<stdio.h> #include<math.h> const int M=20; void main() { int i,s; for(i=1,s=0;i<15;i++){ if(i%2==0 || i%3==0)continue; printf("%d ",i); s+=i; } printf("%d\n",s); } 输出结果为: 1 5 7 11 13 37 Press any key to continue 1. #include<stdio.h> void main() { int a[10]={12,39,26,41,55,63,72,40,83,95}; int i,i1=0,i2=0; for(i=0;i<10;i++) if(a[i]%2==1)i1++;else i2++; printf("%d %d\n",i1,i2); } 输出结果为: 6 4 Press any key to continue 2. #include<stdio.h> #include<string.h> void main() { int i; char *a[5]={"student","worker","cadre","soldier","peasant"}; char *p1,*p2; p1=p2=a[0]; for(i=0;i<5;i++){ if(strcmp(a[i],p1)>0)p1=a[i]; if(strcmp(a[i],p2)<0)p2=a[i]; } printf("%s %s\n",p1,p2); } 输出结果为: worker cadre Press any key to continue 3. #include<stdio.h> int a[10]={4,5,6,15,20,13,12,7,8,9}; void main() { int i,s0,s1,s2; s0=s1=s2=0; for(i=0;i<10;i++){ switch(a[i]%3){ case 0:s0+=a[i];break; case 1:s1+=a[i];break; case 2:s2+=a[i];break; } } printf("%d %d %d\n",s0,s1,s2); } 输出结果为: 42 24 33 Press any key to continue 4. #include<stdio.h> void main() { char a[]="abcdbfbgacd"; int i1=0,i2=0,i=0; while(a[i]){ if(a[i]=='a')i1++; if(a[i]=='b')i2++; i++; } printf("%d %d %d\n",i1,i2,i); } 输出结果为: 2 3 11 Press any key to continue 5. #include<stdio.h> void main() { int a[3][4]={{1,2,7,8},{5,6,10,6},{9,12,3,4}}; int m=a[0][0]; int ii=0,jj=0; int i,j; for(i=0;i<3;i++) for(j=0;j<4;j++) if(a[i][j]>m){m=a[i][j];ii=i;jj=j;} printf("%d %d %d\n",ii,jj,a[ii][jj]); } 输出结果为: 2 1 12 Press any key to continue 6. #include<stdio.h> void main() { int a,b; for(a=1,b=2;b<50;){ printf("%d %d ",a,b); a=a+b; b=a+b; } printf("\n"); } 输出结果为: 1 2 3 5 8 13 21 34 Press any key to continue 三、写出下列每个程序运营后的输出结果 1. #include<stdio.h> void SB(char ch){ switch (ch){ case 'A':case 'a': printf("WW");break; case 'B':case 'b': printf("GG");break; case 'C':case 'c': printf("PP");break; default:printf("BB");break; } } void main(){ char a1='b',a2='C',a3='f'; SB(a1);SB(a2); SB(a3);SB('A'); printf("\n"); } 输出结果为: GGPPBBWW Press any key to continue 2. #include<stdio.h> #include<stdlib.h> double SD(int a,int b,char op){ double x; switch(op){ case '+':x=a+b;break; case '-':x=a-b;break; case '*':x=a*b;break; case '/':if(b)x=(double)a/b; else exit(1); break; default:{("运算符错!\n");exit(1);} } return x; } void main(){ int x=20,y=8; printf("%3.2lf ",SD(x,y,'-')); printf("%3.2lf ",SD(x,y,'*')); printf("%3.2lf ",SD(x,y,'/')); } 输出结果为: 12.00 160.00 2.50 Press any key to continue 3. #include<stdio.h> void WF(int x,int y){ x=x+y; y=x+y; printf("subs:x,y=%d,%d\n",x,y); } void main(){ int x=18,y=23; printf("main:x,y=%d,%d\n",x,y); WF(x,y); x=2*x; printf("main:x,y=%d,%d\n",x,y); } 输出结果为: main:x,y=18,23 subs:x,y=41,64 main:x,y=36,23 Press any key to continue 4. #include<stdio.h> #include<string.h> void fun(char ss[]); void main(){ char s[15]=""; fun(s); printf("%s\n",s); } void fun(char ss[]){ int i,n=strlen(ss); for(i=0;i<n/2;i++){ char c=ss[i]; ss[i]=ss[n-1-i]; ss[n-1-i]=c; } } 输出结果为: Press any key to continue 5. #include<stdio.h> void InsertSort(int a[],int n) { int i,j,x; for(i=1;i<n;i++){//进行n次循环 x=a[i]; for(j=i-1;j>=0;j--)//为x顺序向前寻找合适的插入位置 if(x>a[j])a[j+1]=a[j]; else break; a[j+1]=x; } } void main() { int i; int a[6]={20,15,32,47,36,28}; InsertSort(a,6); for(i=0;i<6;i++)printf("%d ",a[i]); printf("\n"); } 输出结果为: 47 36 32 28 20 15 Press any key to continue 6. #include<stdio.h> void main(){ int a[8]={3,5,7,9,11,13,15,17}; int i,*p=a; for(i=0;i<8;i++){; printf("%5d ",*p++); if( (i+1)%4==0 )printf("\n"); } } 输出结果为: 3 5 7 9 11 13 15 17 Press any key to continue 7. #include<stdio.h> int LA(int *a,int n){ int i,s
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服