昆明理工大学C语言期末考试题库.docx
昆明理工高校C语言期末考试题库包含百分之九十五原题1. main函数是C程序入口,由计算机系统负责调用。2. C语言不允许运用关键字作为变量名称,但可以运用保存字为变量命名。3. C语言本身不供应输入输出语句,但可以通过输入输出函数来实现数据输入输出。4. 假定已有整型变量x定义,那么(x+1)+是一个合法表达式。5. 运用条件表达式可以构成各种各样两路选择构造。6. 与表达式“!(x > 0)等价表达式是“x < =0。7. 二重循环for(i=0;I < 5;i+=2) for(j=0;j < 5;j+)循环体执行次数为15。8. 在循环体内和switch语句体内运用break语句。9. 函数strcpy(str1,str2)是将字符串 str2 连接到字符串 str1之后。10. 可以对实型数组进展整体输入, 输出。11. 假设用数组名作为函数调用实参,传递给形参是数组中第一个元素值。12. 在main()函数中定义变量称为全局变量。13. 共用体可以作为构造体成员,但构造体不能作为共用体成员。14. 在定义了枚举变量后,系统才为该变量安排内存空间。15. 变量指针,其含义是指该变量一个标记。16. 当以参数w翻开文件时,假设指定路径下已有同名文件,那么覆盖原有文件。单 选 题1. 下面有关C语言特点说法中,错误是_。A.C语言编写代码较为紧凑,执行速度也较快B.C语言不仅适合编写各种应用软件,还适于编写各种系统软件2. 以下程序输出结果是_。 #include "stdio.h" void main() int a=2,b=3,c=4; printf("%d,%d,%dn",c,b,a); A.4 3 2B.2,3,4C.4,3,2D.2 3 43. 以下选项中,能用作数据常量是_。4. 以下实型常量,错误是_。5. 表达式3.6-5/2+1.2+5%2值是_。6. 假设变量x, y已正确定义并赋值,以下符合C语言语法表达式是_。A.+x,y=x-B.x+1=yC.x=x+10=x+yD.double(x)/107. 假设变量均已正确定义并赋值,以下合法C语言赋值语句是_。A.x=y=5;B.x=n%2.5;C.x+n=i;D.x=5=4+1;8. 有以下程序#include < stdio.h>main() int a=2,b=2,c=2; printf(“%dn,a/b%c);程序运行后结果是_。9. 有以下程序:#include< stdio.h>main() int a=0,b=0,c=0; c=(a-=a-5); (a=b,b+=4); printf(“%d,%d,%d, a, b, c);A.0,4,5B.4,4,5C.4,4,4D.0,0,010. 执行以下程序段后,x值为_。 int a=14,b=15,x; char c='A' x=(a && b) && (c < 'B');11. 以下表达式中,_不是关系表达式。A.x%2=0B.!(x%2)C.(x/2*2-x)=0D.x%2!=012. 执行以下程序段后,输出结果是_。 int a=3,b=5,c=7; if(a > b) a=b;c=a; if(c!=a) c=b; printf("%d, %d, %dn",a,b,c);B.3,5,3C.3,5,5D.3,5,713. 以下程序输出结果是_。 #inlude "stdio.h" main() int a=5,b=4,c=3,d=2; if(a>b>c) printf("%dn",d); else if(c-1 > =d)=1) printf("%dn",d+1); else printf("%dn",d+2); 14. 以下运算符中优先级最低运算符为_。A.&&B.&C.!=D.|15. 以下程序运行结果是_。 #include <stdio.h> void main() int y=9; for( y > 0;y-) if(y%3=0) printf("%d",-y); 16. 以下描述中正确是_。A.由于do-while循环体只能有一条语句,所以循环体内不能运用复合语句B.do-while由do开场,用while完毕,在while(表达式)后面不能写分号C.在do-while循环中,是先执行一次循环体,再进展推断D.在do-while循环中,依据状况可以省略while17. 假设程序执行时输入数据是2473<回车>,那么下述程序输出结果是_。 #include <stdio.h> void main() int cs; while(cs=getchar()!='n') switch(cs-'2') case 0: case 1: putchar(cs+4); case 2: putchar(cs+4); break; case 3: putchar(cs+3); default: putchar(cs+2); 18. 执行以下程序时输入1234567890<回车>,那么其中while循环体将执行_次。#include "stdio.h" void main() char ch; while(ch=getchar()='0') printf("#"); 19. 以下程序执行后输出结果是_。 #include "stdio.h" void main() int i,n=0; for(i=2;i < 5;i+) do if(i%3) continue; n+; while(!i); n+; printf("n=%dn",n); A.n=5B.n=2C.n=3D.n=420. 以下字符串赋值语句中,不能正确把字符串“Hello World赋给数组语句是_。A.char a1='H','e ','l','l','o',' ','W','o','r','l','d','0'B.char a215; strcpy(a2,"Hello World");C.char a315; a3="Hello World"D.char a410= "Hello World"21. 假设有说明:int a34; 那么对a数组元素正确引用是_。A.a24B.a1,3C.a1+10D.a(2)(1)22. 下面程序运行结果是_。 #include "stdio.h" main() char s="012xy" int i,n=0; for(i=0;si!=0;i+) if(si > = 'a'&&si< = 'z') n+; printf("%dn",n); A.B.C.D.23. 下面关于数组表达,正确是_。24. 以下程序运行后输出结果是_。 #include "stdio.h" int f(int x); main() int n=1,m; m=f(f(f(n); printf("%dn",m); int f(int x) return x*2;25. 以下表达中正确是_。A.局部变量说明为static,其生存期将得到延长B.全局变量说明为static,其作用域将被扩大C.任何存储类变量在未赋初值时,其值都是不确定26. 在函数调用过程中,假如函数funA调用了函数 funB,函数funB又调用了函数funA,那么_。A.称为函数干脆递归调用27. 以下结论中只有_是正确。28. 以下构造体定义语句中,正确是_。A.struct student int num; char name10;int age;stu;B.struct int num; char name10;int age;student; struct student stu;C.struct student int num; char name10;int age;stu;D.struct student int num; char name10; int age; student stu;29. 当定义一个共用体变量时,系统为它安排内存空间是_。30. 以下函数功能是_。 fun(char *a,char *b) while(*b=*a)!='0') a+,b+; D.检查a和b所指字符串中是否有'0'31. 以下程序运行结果是_。#include < stdio.h >void fun(int *p) printf("%dn",p5); main() int a10=1,2,3,4,5,6,7,8,9,10;fun(&a3); 32. 以下程序运行后输出结果是_。 #include "stdio.h" main() FILE *fp; int i=20,j=30,k,n; fp=fopen("dl.dat","w"); fprintf(fp,"%dn",i);fprintf(fp,"%dn",j); fclose(fp); fp=fopen("dl.dat","r"); fscanf(fp,"%d%d",&k,&n); printf("%d %dn",k,n); fclose(fp); A.20 30B.20 50C.30 50D.30 2033. 假如程序中有语句FILE *fp;fp=fopen("abc.txt", "w");,那么程序打算做_。1. C语言把高级语言根本构造和低级语言好用性严密结合起来,不仅适合编写应用软件,而且适于编写系统软件。2. 不同类型数据在内存中所占存储单元大小不同,内部存储方式不同,取值范围不同,甚至能够参加运算种类也不一样。3. C语言中浮点型变量可以进展自增或自减操作。4. 假定已有定义char c;,sizeof c中sizeof是容量运算符,而sizeof(char)中由于运用了括号形式,称为容量函数。5. 在执行switch选择构造时,从匹配表达式相应case处入口,始终执行到break语句或到达switch末尾为止。6. 与表达式“!(x > 0)等价表达式是“x < =0。7. 二重循环for(i=0;I < 5;i+=2) for(j=0;j < 5;j+)循环体执行次数为15。8. while和dowhile功能完全一样。9. 数组名代表数组首地址。10. 设有定义:double a45;,那么数组a中元素个数是9。11. 假如在一个函数中复合语句内定义了一个变量,那么该变量在该函数中都有效。12. 在C语言中形参加实参共用内存单元。13. 构造体中各个成员数据类型必需是一样。14. 构造体变量可以整体赋值,但不能整体比拟。15. 指针变量类型不是该变量本身类型,而是它所指向变量类型。16. 为了提高读写效率,在进展读写操作后不应关闭文件以便下次再进展读写。单 选 题1. 有以下程序#include "stdio.h"<br>void main( )<br> float a=b=2, result;<br>result=a/b;<br>printf("result=%fn", result); 正确说法是 。B.因为result=a/b;语句有误导致编译出错2. 下面有关程序设计技术说法中,错误是_。3. C源程序中不能表示数制是_。4. 下面有关变量声明说法中,正确是_。A.C语言中不用先声明变量,须要时干脆运用即可C.在VC+6.0环境下,为int型变量安排存储空间大小为2个字节D.变量声明时,不能进展赋值操作5. 已定义 int num=sum=7, (sum=num+, sum+, +num)6. 假设x, i, j和k都是int型变量,那么执行下面表达式x=i=4,j=16,k=32后x值为( )。7. 以下程序运行后输出结果是_。#include < stdio.h> main()int m=12,n=34; printf("%d%d",m+,+n); printf("%d%dn",n+,+m); 8. 设变量a和b已正确定义并赋初值。请写出与a-=a+b等价赋值表达式_。A.a=a-a+bB.a-a=bC.a=a-(a+b)D.a=-a+b9. 以下程序运行后输出结果是_。#include < stdio.h> main() int a,b,d=25; a=d/10%9; b=a+-1; printf("%d,%dn",a,b); A.6,1B.2,1C.6,0D.2,010. 以下程序运行时,输入值在_范围时才会有输出结果。 #inlude "stdio.h" main() int x; scanf("%d ",&x); if(x <=3);else if(x!=10) printf("%dn ",x); 11. 以下程序输出结果是_。 #inlude "stdio.h" main() int a=0,b=0,c=0; if(+a > 0|+b > 0) +c; printf("%d,%d,%d",a,b,c); A.0,0,0B.1,1,1C.1,0,1D.0,1,112. 以下程序输出结果是_。 #inlude "stdio.h" main() int i=1,j=2,k=3; if(i+=1&&(+j=3|k+=3) printf("%d %d %d",i,j,k); A.1 2 3B.2 3 4C.2 2 3D.2 3 313. 设变量x和y均已正确定义并赋值,那么以下if语句中,在编译时将产生错误信息是_。A.if(x+);B.if(x > y && y!=0);C.if(x > 0) x- else y+;D.if(y < 0); else x+;14. 当y处于闭区间x,z时,值为真表达式是_。A.( y < = z)&&(y > =x)B.(x > =y)and(y > =z)cC.(x > =y > =z)D.(x > =y)&(y > =z)15. int t=0; while (t=1) . 那么以下表达正确是 。16. 以下程序运行结果是_。 #include <stdio.h> void main() int i,j,m=55; for(i=1;i< =3;i+) for(j=3;j < =i;j+) m=m%j; printf("%dn",m); 17. 以下程序输出结果是_。 #include "stdio.h" void main() int k=5; while(-k) printf("%d",k-=3); printf("n"); 18. 要求通过while循环不断读入字符,当读入字母N时完毕循环。假设变量已正确定义,以下正确程序段是_。A.while(ch=getchar()!='N ')printf("%c",ch);B.while(ch=getchar()!='N ')printf("%c",ch);C.while(ch=getchar()='N ')printf("%c",ch);D.while(ch=getchar()='N ')printf("%c",ch);19. 以下程序输出结果是_。 #include "stdio.h" void main() int i; for(i=0;i < 3;i+) switch(i) case 0:printf("%d",i); case 2:printf("%d",i); default:printf("%d",i); 20. 假设有定义:int a5=1,2,3,4,5;char b='c',c;,那么下面表达式中数值为 2 是_。A.a2B.ac-bC.abD.ab-'b'21. 下面程序运行结果是_。 #include < stdio.h > #include < string.h > main() char a30; strcpy(&a0,"ch"); strcpy(&a1,"def"); strcpy(&a2,"abc"); printf("%sn",a);22. 下面程序运行结果是_。#include < stdio.h >#define MAX 10main() int i,sum,a=1,2,3,4,5,6,7,8,9,10; sum=1; for(i=0;i< MAX;i+) sum-=ai; printf("%d",sum);23. 以下程序执行结果是_。 #include "stdio.h" #include "string.h" void main() char str10="ABCD","EFGH","IJKL","MNOP",k; for(k=1;k< 3;k+) printf("%sn",&strkk); A.ABCD FGH KLB.ABCD EFG IJC.EFG JK OD.FGH KL24. 在一个C源程序文件中所定义全局变量,其作用域为_。25. 以下所列各函数首部中,正确是_。A.void play(var:Integer,var b:Integer)B.void play(int a,b)C.void play(int a,int b)D.Sub play(a as integer,b as integer)26. 以下程序输出结果是_。 #include "stdio.h" #define f(x) x*x void main() int a=6,b=2,c; c=f(a)/f(b); printf("%dn",c); 27. 以下程序运行结果为_。 #include "stdio.h" int x=2; int fun(int p) static int x=3; x+=p; printf("%d ",x); return (x); void main() int y=3; printf("%d n",fun(fun(x); A.5 10 20B.5 10 10C.5 5 10D.5 6 1028. 以下构造体定义语句中,正确是_。A.struct student int num; char name10;int age;stu;B.struct int num; char name10;int age;student; struct student stu;C.struct student int num; char name10;int age;stu;D.struct student int num; char name10; int age; student stu;29. 有如下说明:union test int a; char c; test1;那么在VC环境下sizeof(union test) 结果是_。30. 程序段char *s="abcde" s+=2; printf("%d",s);运行结果是_。B.字符'c'C.字符'c'地址31. 以下程序运行结果是_。#include < stdio.h >main() int a=10,20,30,40,*p=a,i;for(i=0;i < = 3;i+) ai=*p;p+;printf("%dn",a2); 32. 下面关于C语言文件操作结论中,_是正确。D.对文件操作前必需先测试文件是否存在,然后再翻开文件33. 假设执行fopen()函数时发生错误,那么函数返回值是_。1. C语言中,变量必需先定义后运用。2. 在C语言中,扩展名为.h文件称为头文件,常用于组织C标准函数库中函数。3. C语言中,输入数据个数和类型必需与scanf函数中说明符一一对应。4. 自增运算符+优先级高于加法运算符+。5. 两个变量交换数据时常运用一个工作变量。6. 在执行switch选择构造时,从匹配表达式相应case处入口,始终执行到break语句或到达switch末尾为止。7. for循环, while循环和do while循环构造之间可以相互转化。8. int i=1;while(1) i+; 那么在任何条件下,该循环语句都会执行无穷屡次。9. 一维数组元素实质上就是一个变量,代表内存中一个存储单元。10. 设有定义:char s="E_mail",那么执行printf("%dn",strlen(s);后输出值是6。11. 函数可以嵌套定义,但是不行以嵌套调用。12. 假设函数定义头部为:double cacl(float x,float y),那么该函数是外部函数。13. 枚举类型中,枚举值是常量,不能再在程序中对其赋值。14. typedef作用是给数据类型取一个别名。15. 语句int i,*p=&i;是正确C定义。16. fseek()函数中位移量必需是一个long型数据。单 选 题1. 以下表达中正确是_。2. 下面有关变量声明说法中,正确是_。A.C语言中不用先声明变量,须要时干脆运用即可C.在VC+6.0环境下,为int型变量安排存储空间大小为2个字节D.变量声明时,不能进展赋值操作3. 假设已定义char c='010',那么变量c所占字节数为_。4. 假如将一个函数返回值类型说明为void,那么表示_。D.该函数是main函数,是程序运行起点5. 已定义: int k,a,b;unsigned long w=5;double x=1.42, 不正确表达式是( )。A.x%(-3)B.w+= -2C.k=(a=2,b=3,a+b)D.a+=a-=(b=4)*(a=3)6. 假设变量a, i已正确定义,且i已正确赋值,合法语句是( )。A.a=1B.+i;C.a=a+=5;D.a=int(i);7. 表达式:(int)(double)9/2)-(9)%2值是_。8. 有以下程序:#include < stdio.h> main() int m,n,p; scanf("m=%dn=%dp=%d",&m,&n,&p);printf("%d%d%dn",m,n,p); 假设想使变量m中值为123,n中值为456,p中值为789,那么正确输入是_。A.m=123n=456p=789B.123,456,789C.m=123,n=456,p=789D.123 456 7899. 设有定义:int a; float b;,执行scanf("%2d%f",&a,&b);语句时,假设从键盘输入:876 543.0,a和b值分别是_。10. 下述程序段输出结果是_。 int a=2,b=3,c=4,d=5; int m=2,n=2; a=(m=a > b)&&(n=c > d)+5; printf("%d, %d ",n,a);A.2,0B.0,5C.2,6D.0,611. 设变量a, b, c, d和y都已经正确定义并赋值,那么以下if语句所表示含义是_。 if(a < b) if(c=d) y=0; else y=1;A.a < b且c=d时y=0,a > = b时y=1B.a < b且c=d时y=0,a > =b且c!=d时y=1C.a < b且c=d时y=0,a < b且c!=d时y=1D.a < b且c=d时y=0,c!=d时y=112. 以下程序输出结果是_。 #inlude "stdio.h" main() int a=5,b=4,c=3,d=2; if(a>b>c) printf("%dn",d); else if(c-1 > =d)=1) printf("%dn",d+1); else printf("%dn",d+2); 13. 在执行下述程序时,假设从键盘输入6和2,那么输出结果是_。 #inlude "stdio.h" main() int a,b,k; scanf("%d,%d",&a,&b); k=a; if(a < b) k=a%b; else k=b%a; printf("n%d",k); 14. 以下程序运行时,假设从键盘输入9,那么输出结果是_。 #inlude "stdio.h" main() int a=1; scanf("%d",&a); if(a+ < 9) printf("%dn",a); else printf("%dn",a); 15. 以下描述中正确是_。A.由于do-while循环体只能有一条语句,所以循环体内不能运用复合语句B.do-while由do开场,用while完毕,在while(表达式)后面不能写分号C.在do-while循环中,是先执行一次循环体,再进展推断D.在do-while循环中,依据状况可以省略while16. 假设int i,j;,那么for(i=j=0;i < 10&&j < 8;i+,j+=3)限制循环体执行次数是_。17. 以下程序输出结果是_。 #include "stdio.h" void main() int k=5; while(-k) printf("%d",k-=3); printf("n"); 18. 要求通过while循环不断读入字符,当读入字母N时完毕循环。假设变量已正确定义,以下正确程序段是_。A.while(ch=getchar()!='N ')printf("%c",ch);B.while(ch=getchar()!='N ')printf("%c",ch);C.while(ch=getchar()='N ')printf("%c",ch);D.while(ch=getchar()='N ')printf("%c",ch);19. 以下程序执行后输出结果是_。 #include "stdio.h" void main() int x=0,y=5,z=3; while(z- >0&&+x < 5) y=y-1; printf("%d,%d,%dn",x,y,z); A.3,2,0B.3,2,-1C.4,3,-1D.5,-2,-520. 推断字符串 a 和 b 是否相等,应当运用_。A.if(a=b)B.if(a=b)C.if(strcat(a,b)D.if(strcmp(a,b)21. 下面程序运行结果是_。 #include < stdio.h > main() int a33=1,2,3,4,5,6,7,8,9,i; for(i=0;i< =2;i+) printf("%d ",ai2-i); A.3 5 7B.3 6 9C.1 5 9D.1 4 722. 以下各组选项中,均能正确定义二维实型数组a选项是_。A.float a34; float a4; float a3=1,0;B.float a(3,4); float a34; float a=0;0;C.float a34; static float a4=0,0;D.float a34; float a3;23. 下面程序运行结果是_。 #include < stdio.h > #include < string.h > main() char a30; strcpy(&a0,"ch"); strcpy(&a1,"def"); strcpy(&a2,"abc"); printf("%sn",a);24. 以下程序执行结果为_。#include "stdio.h" float fun(int x,int y) return(x*y); main() int a=2,b=5,c=8; printf("%.0fn",fun(int)fun(a+b,c),a-b);25. 以下结论中只有_是正确。26. 以下程序运行结果为_。 #include "stdio.h" int x=2; int fun(int p) static int x=3; x+=p; printf("%d ",x); return (x); void main() int y=3; printf("%d n",fun(fun(x); A.5 10 20B.5 10 10C.5 5 10D.5 6 1027. 以下程序输出结果是_。 #include "stdio.h" int fun(int x,int y,int cp,int dp) cp=x*x+y*y; dp=x*x-y*y; void main() int a=4,b=3,c=5,d=6; fun(a,b,c,d); printf("%d %dn",c,d); A.16 9B.4 3C.25 9D.5 628. 以下程序运行结果是_。#include < stdio.h > union con struct int x,y,z;m; int i; num;main() num.m.x=4;num.m.y=5;num.m.z=6;num.i=0;printf("%dn",num.m.x);