已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2011年期末考试C语言复习题沈阳工程学院一、 单项选择(每题2分,共20分)1、下列 C 数据类型属于C语言提供的基本数据类型。A、数组类型 B、指针类型 C、整型 D、结构体类型2、C语言程序中,下列 B 标识符是合法。A、scanf B、str 2 C、5a D、His.age3、已知int a ,b;scanf(“%d%d”,&a,&b);程序运行输入a、b的值时,不能作为输入数据分隔符的是 A 。A、逗号 B、空格 C、回车 D、Tab4、C语言对嵌套IF语句的规定是:else总是和 D 配对。A、其之前最近的IF B、第一个IFC、缩进位置相同的IF D、其前面最近且尚未配对的IF5、下面语句 A 是定义一个有10个INT整型元素的数组。A、int a10 B、int a2,5 C、int a D、int *a106、已知char ch=”welcome”;printf(“%d”,strlen(ch);输出结果是 B 。A、6 B、7 C、8 D、97、Fwirte函数的一般调用形式是 D 。A、fwirte (buffer, count, size, fp) ;B、fwrite (fp, size, count, buffer) ;C、fwrite (fp, count, size, buffer );D、fwrite (buffer, size, count, fp) ;8、设int a=2,b;则执行b=a&1;语句后,b的结果是 b 。A、0 B、1 C、2 D、39、在C程序中,设一表达式中包含有int,long, unsigned和char类型的变量和数据,则表达式最后的运算结果类型是 d 。A、int B、char C、unsigned D、long10、下面程序段的运行结果是 b 。 main ( ) int a=11,b=10,c=0; a/=b+(b&c);a=a/b printf(%dna);A、0 B、1 C、1.1 D、1111、两次运行下面程序,如果从键盘上分别输入6和4,则程序的输出结果是 C 。 main ( ) int x; scanf(%d,&x); if(x+5) printf(%d,x); else printf(%dn,x-1);A、7和5 B、6和3 C、7和4 D、6和412、若定义int x10;则Turbo C编译系统为该数组分配 c 个字节存储单元。2*10A、10 B、11 C、20 D、2113、若有如下函数定义: add(float x, float y) 则下列说法正确的是 c 。A.函数返回值类型不确定 B.函数返回值是float型C.函数返回值是int型 D.函数返回值是void型14、对于int *pa5;的描述, d 是正确的。 A、pa是一个指向数组的指针,所指向的数组是5个int 型元素 B、pa是一个指向某数组中第5个元素的指针,该指针是int 型变量 C、pa5表示某个数组的第5个元素的值D、pa是一个具有5个元素的指针数组,每一个元素是一个int 型指针15、 对for(表达式1; ;表达式3)可理解为_b_。A、for(表达式1;0;表达式3;)B、for(表达式1;1;表达式3;)C、for(表达式1;表达式1;表达式3;)D、for(表达式1;表达式3;表达式3;)16、若有说明:int a44=0,则下面不正确的是_A_。A、数组a的每个元素都可得到初值0B、二维数组a的第一维大小为1C、因为二维数组a中第二维大小的值除以初值个数的商为1,故数组a的行数为1D、只有元素a00和a01可得到初值0,其余元素均得不到初值017、若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句是 d 。A、p=q;B、*p=*q;C、n=*q;D、p=n;18、若有以下说明和定义typedef int *INTEGER;INTEGER p,*q;以下叙述正确的是 D 。A、P是int型变量 B、程序中可用INTEGER代替int类型名C、q是基类型为int的指针变量D、p是基类型为int的指针变量19、有以下程序main() char a =a,b,c,d, e, f, g,0; int i,j;i=sizeof(a); j=strlen(a);printf(“%d,%dn”,i,j);程序运行后的输出结果是 b 。A、8,8 B、8,7 C、7,8 D、9,820、在C程序中,可以把整型数以二进制形式存放到文件中的函数是 A 。 A、fprintf函数 B、fread函数 C、fwrite函数 D、fputc函数21 、22、设int a=2,b;则执行b=a&1;语句后,b的结果是 b 。A、0 B、1 C、2 D、323、以下数组定义中不正确的是 d 。A、 int a23;B、 int b3=0,1,2,3;C、 int c100100=0;D、 int d3=1,2,1,2,3,1,2,3,4;24、能正确表示a和b同时为正或同时为负的逻辑表达式是 d 。A、(a=0b=0)&(a0b=0&b=0)&(a0&b0)&(a+b 025、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是 b 。A、INPUT x, y, z; B、scanf(%d%d%d,&x,&y,&z);C、scanf(%d%d%d,x, y, z); D、read(%d%d%d,&x,&y,&z);26 、在Turbo 2.0中,若定义 char c;.则变量c在内存中分配的字节数是 a 。 A、1个 B、2个 C、4个 D、8个27、在Turbo 2.0中,若定义 int c;.则变量c在内存中分配的字节数是 b 。 A、1个 B、2个 C、4个 D、8个28、在Turbo 2.0中,若定义 long c;.则变量c在内存中分配的字节数是 c 。 A、1个 B、2个 C、4个 D、8个29、以下运算符中优先级最高的是c。 A、 B、+、- C、( ) D、%31、以十六进制形式输出整数的格式说明符是c。 A、%u B、%ld C、%X D、%o32、以八进制形式输出整数的格式说明符是d。 A、%u B、%ld C、%x D、%o33、能正确表示逻辑关系:“a10或 a0”的C语言表达式是 d 。 A、a=10 or a=10| a=10 & a=10|a7) printf(*);x-; A、* B、* C、* D、*35 、C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是 b 。A、地址传递 B、单向值传递C、双向值传递。即由实参传给形参,再由形参传回给实参D、由用户指定传递方式36、以下正确的函数形式是 d 。A、double fun1(int x,int y) z=x+y;return z; B、fun1(int x, y) int z; return z; C、int fun1(x,y) int x,y; double z; z=x+y;return z; D、double fun1(int x, int y) double z; z=x+y;return z; 37、C语言允许函数值类型缺省定义,此时该函数值隐含的类型是 b 。A、float型 B、int型 C、long型 D、double型38、一个C语言程序是由 b 。A、一个主程序和若干子程序组成B、若干函数组成C、若干过程组成D、若干子程序组成39、已知:char *s=NameAddress;则s所指的字符串的长度为 c 。A、18 B、16 C、13 D、1440、若有条件表达 (exp)?a+:b-,则以下表达式中能完全等价于表达式(exp)的是 b 。exp :!0 0A、 (exp= =0) B、(exp!=0) C、exp= =1 D、(exp!=1)41、以下程序有语法性错误,有关错误原因的正确说法是 c 。void main(void)int k; void prt_char(); k=prt_char(G); A、语句void prt_char();有错,它是函数调用语句,不能用void说明。B、变量名不能使用大写字母。C、函数原型说明和函数调用语句之间有矛盾。D、函数名不能使用下划线。42、若有如下定义,则下面在scanf函数调用语句中对结构体成员的引用不正确是 a 。struct pupilchar name20;int age;int sex;pup5,*p;A、scanf(%d,p-age);B、scanf(%s,);C、scanf(%d,&pup0.age);D、scanf(%d,&(pup1.sex);43、若已有定义int(*p)(); 则指针p b 。A、代表函数的返回值B、指向函数的入口地址C、表示函数的类型D、表示函数返回值的类型44、若有语句:int a=4, *p=&a;,下面均代表地址的一组选项是 c 。A、a,p,&*a B、*&a,&a,*p C、&a,p,&*p D、*&p,*p,&a45、已知:unsigned int x=65535;则执行以下语句后的x值为 a 。printf(%d,x);A、65535 B、1 C、无确定值 D、-146、求字符串长度的函数是 d 。A、strcat B、strcpy C、strcmp D、strlen45. 下述对C语言字符数组的描述中错误的是 b 。A、字符数组可以存放字符串。B、字符数组的字符可以整体输入、输出。C、可以在赋值语句中通过赋值运算符对字符数组整体赋值。D、 可以用关系运算符对字符数组中的字符进行比较。46、以下关于do-while循环的不正确描述是 b 。A、do-while的循环体至少执行一次B、do-while循环由do开始,用while结束,在while(表达式);后面不能写分号C、在do-while循环体中,一定要有能使while后面表达式的值变为零(假)的操作D、do-while的循环体可以是复合语句47、以下选项中,与k=n+完全等价的表达式是 a 。A、k=n,n=n+1 B、n=n+1,k=n C、k=+nD、k+=n+1二、 填空题(每空1分,共10分)1、字符型数据存储时占用8位,它实际存储的是字符对应的 ASCII码 。2、判断闰年的条件是:能被4整除但不能被100整除,或能被400整除,程序中逻辑表达式可以写成if(year%4=0&year&100!=0) |year%400=0 ).3、一个C语言程序中必须存在的函数是 主函数。 4、若a是int型变量,则表达式((a=4*5,a*2),a+6)的值为 26 。5、C语言规定,调用一个函数时,实参变量和形参变量之间的数据传递是 实参 传递给 形参 。6、在一个字符数组中,表示一个字符串结束的转义符为 0 。 7、在函数内部定义的变量统称为 局部变量。 8、在函数外部定义的变量统称为 全局变量。9、若有定义: int x=3, y=2; float a=2.5,b=3.5;则表达式 (x+y)%2+(int)a/(int)b的值为 1 。 10、循环语句:for(k=1;k=5;k+)执行结束后,K的值为 6 。11、a为一个整型变量,pa 为指向变量a的指针,则*&a的含义是 变量a ,&*pa的含义是变量a的地址 。12、程序的执行总是从主函数开始,主函数 执行完时,则程序执行结束。13、控制台标准输入设备一般是指 键盘 。14、 do-while语句的循环体至少执行 一 次。15、循环体中continue语句的作用是结束 本次循环 的执行。16、执行strcmp(This,that)的结果是一个 负整数 。17、C源程序的基本单位是 函数 。18、若有定义:char c=10; 则变量C中包含的字符个数为 一个 。19、假设所有变量均为整型,则表达式(a=2,b=5,a+,b+,a+b)的值为 9 。20、执行下面的程序片段后,x的值是 12 。i=10; i+; x=+i;21、设a、b、c均是int 型变量,则执行以下for循环后,c的值为 10 。for(a=1,b=5;ab? a:b+1的值是 3 。24、当a=5,b=4,c=2时,表达式样ab! =c的值是 1 。25、若a=2,b=4,则表达式!(x=a)|(y=b)&0的值是 0 。26、若有定义:int a=2,4,6,8,10,12, *p=a;则*(p+1)的值是 4 ,*(a+5)的值是 12 。27、若有以下定义和语句:int a5=1,3,5,7,9,*p;p=&a2;则+(*p)的值是 6 。程序运行结果题(每题4分,共20分)1、 (4分)当运行以下程序时, 从键盘键入right?, 则下面程序的运行结果是?( sjhiu ) 。#include void main(void)char c;while(c=getchar()!=?) putchar(+c);2、 (4分)如果运行以下程序段输入字符为“t”,则程序段的运行结果是?( T )。void main(void)char c1;scanf(%c,&c1);c1=(c1=A& c1=a& c1=z)?(c1-32):c1;printf(%c,c1);3、 (4分)以下程序的运行结果是?( 9 )。#define A 4#define B(x) A*x/2void main(void)float c,a=4.5;c=B(a);printf(%5.1f,c);4、假定本程序执行时输入:1357(代表回车换行符)结果是?113468#include main( ) char c; while (c=getchar()!=n) switch(c) case 0: case 1:putchar(c); case 2:putchar(c);break; case 3:putchar(c); default:putchar(c+1);break; 113468printf(n); 5、以下程序的运行结果是?L=18.849556 S=28.274333 (%f隐含输出六位小数)#define R 3.0 #define PI 3.1415926 #define L 2*PI*R #define S PI*R*R main( ) printf(“L=%fnS=%fn”,L,S); 6以下程序的运行结果是?输出:s=20Main( ) int i,s=0; int a8=1,2,3,4,5,6,7,8; for(i=0;i=7;i+) if (ai%2= =0) s=s+ai; printf(“s=%d”,s); s=207以下程序的运行结果是?输出结果是:LANGUAGEAmain( ) char a=language; int i; while (ai) printf(%c,ai-32);i+; 8 以下程序运行后的输出结果是? 10,0 。 main() int x=10,y=20,t=0;if(x=y)t=x;x=y;y=t;printf(“%d,%d n”,x,y);9、有以下程序:#include main() char c;while(c=getchar( )!=?) putchar(-c);程序运行时,如果从键盘输入:Z?N?,则输出结果为? Y 。10、以下程序运行后的输出结果是? 3,4,4,3 。void fun(int x,int y) x=x+y;y=x-y;x=x-y;printf(“%d,%d,”,x,y); main() int x=4,y=3;fun(x,y);printf(“%d,%dn”,x,y);11、下面程序的运行结果是?: 5,7 。void swap(int *a,int *b) int *t;t=a; a=b; b=t;main() int x=7,y=5,*p=&x,*q=&y;swap(p,q);printf(“%d%dn”,*p,*q); 12、下面程序的运行结果是?: 100 。typedef union student char name10;long sno;char sex;float score5;STU;main() STU a5;printf(“%dn”,sizeof(a);13 有以下程序,程序运行后的输出结果是?: c,C,B,cvoid fun(char *c,int d) *c=*c+1;d=d+1;printf(“%c,%c,”,*c,d);main() char a=B,b=b;fun(&b,a); printf(“%c,%cn”,a,b);14 有以下程序,运行后的输出结果是?:6int f(int n) if (n=1) return 1;else return f(n-1)+1;main() int i,j=0;for(i=1;i4;i+) j+=f(i);printf(“%dn”,j);15 有以下程序,运行后的输出结果是?8,7main() char a =a,b,c,d, e, f, g,0; int i,j;i=sizeof(a); j=strlen(a);printf(“%d,%dn”,i,j);16 以下程序中函数reverse的功能是将a所指数组中的内容进行逆置。void reverse(int a ,int n) int i,t;for(i=0;in/2;i+) t=ai; ai=an-1-i;an-1-i=t;main() int b10=1,2,3,4,5,6,7,8,9,11; int i,s=0; reverse(b,8); for(i=6;i10;i+) s+=bi; printf(“%dn”,s);程序运行后的输出结果是? 2317 有以下程序,程序运行后的输出结果是?:20main() int aa44=1,2,3,4,5,7,7,8,3,9,10,2,4,2,9,6;int i,s=0;for(i=0;i4;i+) s+=aai1;printf(“%dn”,s);18 有以下程序,程序运行后的输出结果是?:7#include main() char *p=“abcdefg0hjik0”;printf(“%dn”,strlen(p); 19 程序中头文件typel.h 的内容是:#define N 5#define M1 N*319程序如下:#include “type1.h”#define M2 N*2main() int i;i=M1+M2; printf(“%dn”,i);程序编译后运行的输出结果是?:2520 有以下程序,程序运行后的输出结果是?:30 20#include main() FILE *fp; int i=30,j=20,k,n;fp=fopen(d1.dat,w);fprintf(fp,%dn,i);fprintf(fp,%dn,j);fclose(fp);fp=fopen(d1.dat, r);fscanf(fp,%d%d,&k,&n); printf(%d%dn,k,n);fclose(fp);21有以下程序,程序运行后的输出结果是?:8int a=3;main() int s=0; int a=5; s+=a+; s+=a+;printf(%dn,s);22 有以下程序,程序运行后的输出结果是?: abcDDfefDbDvoid ss(char *s,char t) while(*s) if(*s=t) *s=t-a+A; s+;main() char str1100=abcddfefdbd,c=d;ss(str1,c); printf(%sn,str1);23 有以下程序:程序运行后的输出结果是?:275.00struct stu char num10; float score3; ;main() struct stu s3=“20021”,90,100,85,“20022”,95,80,75,“20023”,100,95,90,*p=s;int i; float sum=0;for(i=0;iscorei;printf(“%6.2fn”,sum);24 有以下程序:程序运行后的输出结果是?:35#include struct NODE int num; struct NODE *next; ;main() struct NODE *p,*q,*r;p=(struct NODE*)malloc(sizeof(struct NODE);q=(struct NODE*)malloc(sizeof(struct NODE);r=(struct NODE*)malloc(sizeof(struct NODE);p-num=5; q-num=20; r-num=30;p-next=q;q-next=r;printf(%dn,p-num+q-next-num);25 有以下程序,若从键盘输入:abc def,则输出结果是:def def#include main() char *p,*q;p=(char*)malloc(sizeof(char)*20); q=p;scanf(%s%s,p,q); printf(%s%sn,p,q);27、有以下程序,程序运行后的输出结果是?:1main() int a=15,b=21,m=0;switch(a%3) case 0:m+;break;case 1:m+;switch(b%2) default:m+;case 0:m+;break;printf(%dn,m);五、程序填空题(每题2分,共20分)1. 下面程序的功能是求1000以内的所有完全数。(说明:一个数如果恰好等于它的因子之和(除自身外), 则称该数为完全数, 例如:6=1+2+3, 6为完全数。)main()int a,i,m;for(a=1;a=1000;a+)m=0 ;for ( i=1 ; i=(a/2);i+)if(a%i)=0) m+=i;if(m=a) printf(%4d,m);2. 以下程序实现: 输入圆的半径r和运算标志m,按照运算标志进行指定计算。标 志 运 算a 面 积b 周 长c 二者均计算#define pi 3.14159void main(void)char m;float r,c,a;printf(input mark a,c or b and r: );scanf(%c %f, &m,&r);if ( m=a ) a=pi*r*r; printf(area is %f,a);if ( m=b ) c=2*pi*r; printf(circle is %f,c); if ( m=c ) a=pi*r*r; c=2*pi*r; printf(area and circle are %f %f,a,c);3 下面程序段将输出computer, (字符a前后各有1个空格)。char c = Its a computer;for(i=0; i1)#includeint age(int n)int c;if (n=1) c=10;else c= age(n-1)+2 ;return c;3下面程序的功能是打印100以内个位数为6且能被3整除的所有数。 #include main( ) int i,j; for (i=0; ;i+) j=i*10+6; if( j%3 ) continue; printf(“%d”,j); 4 以下函数的功能是计算s=1+2 +3 +n请填空。double fun(int n) double s=0.0,fac=1.0; int i;for(i=1,i=n;i+) s=s+fac; fac=fac +1 ;return s;7、 fun函数的功能是:首先对a所指的N行N列的矩阵,找出各行中的最大的数,再求这个最大值中的最小的那个数作为函数值返回。请填空。#include #define N 100int fun(int(*a)N) int row,col,max,min;for(row=0;rowN;row+) for(max=arow0,col=1;colN;col+)if( maxmax )min=max; return min; 8、设有定义:int n,*k=&n;以下语句将利用指针变量k读写变量n中的内容,请将语句补充完整。scanf(“%d, ” &n );printf(“%dn”, *k 。);五、编程题(每题10分 共20分) 1. 编写一个递归函数,计算123n 的和。int sum(int n) int s; if (n=0) s=0; else s=sum(n-1)+n; return(s); 2. 请编写一函数int fun(float s ,int n),它的功能是:求低于平均分的人数,并作为函数值返回。数组s中存放n个学生的成绩。int fun(float s,int n) float ave=0; int i,j=0; for(i=0;in;i+) ave+=si; ave/=n; for(i=0;in;i+) if(siave) j+; return(j); 3. 编写一个递归函数,计算6!。4. 编写一个函数,功能是计算4659的各位数字的平方和。#includemain() int n=2345,sum=0; do sum+sum=(n%10)*(n%10); n= n/10; while(n);Printf(“sum=%d”,sum);5请编写函数fun( ),其功能是:数组中存放有若干个数,现任意读入一个x,要求删除数组中与x相同的那些数(设数组元数个数不大于50且均为整数)。部分源程序如下:#include #include void fun(a,n,x)int a,n,x; int m,k,i;For(i=0;in;i+)ifmain( ) int a10,i,x; for(i=0;i10;i+) scanf(%d,&ai); scanf(%d,&x); fun(a,10,x);6 编写程序打印输出以下图案: * * * *7 写一函数,统计一个给定的字符串中字母a出现的次数,返回统计结果。1、 int fun(char s) int i,n=0;for(i=0;si!=0;i+) if(si=a) n+;return n;8 从键盘输入10个正整数,选出其中的素数,并对这些素数按由小到大排序 (15)。main() int a10,b10,i,j,k,t,n=0;for(i=0;i10;i+) scanf(“%d”,&ai); for(j=2;j=ai)bn=ai;n+; for(i=0;in;i+) K
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年特种设备锅炉水处理G2证考试题库
- 2026年室内环境检测人员专业考试题库(含答案)
- 2026年中式面点师理论知识考试题库及答案
- 历史教师评价类材料解题技巧与方法研究报告
- 丁二烯项目可行性研究报告
- 2026轻食行业市场发展分析及前景趋势与投融资发展机会研究报告
- 2026珠三角红茶产业市场供需分析产业发展与投资评估规划分析报告
- 2026中国智能智能轨道交通系统行业市场供需分析及投资评估规划分析研究报告
- 2026中国智能穿戴设备用户行为分析与产品创新方向报告
- 2026微生物制剂行业市场发展分析及农业应用与商业前景研究报告
- 日本工业标准JIS-2
- 2026年交通运输局财务审计岗遴选专业知识测试
- 耳部全息铜砭刮痧法
- 麻醉科教研室工作制度
- 医院采购领导小组制度
- 儿童淋巴结肿大诊治共识
- 甘肃省医保政策培训课件
- 舞台灯光调试与安装施工方案
- 网络直播项目商业计划书
- JJF 1001-2011通用计量术语及定义
- 连枷胸-教学讲解课件
评论
0/150
提交评论