收藏 分销(赏)

c语言复习题(有答案)●.doc

上传人:二*** 文档编号:4497814 上传时间:2024-09-25 格式:DOC 页数:16 大小:82KB
下载 相关 举报
c语言复习题(有答案)●.doc_第1页
第1页 / 共16页
亲,该文档总共16页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、思 考 题不仅要会做这些题,更重要的是要掌握其相关知识点一、一般填空题1-1、调用fopen函数打开一文本文件,在“打开模式”这一项中,为输出(写)而打开需填入【1】.1-2、调用fopen函数打开一文本文件,在“打开模式”这一项中,为追加而打开需填入【1】.1-3、fopen函数的原形在头文件【1】中.1-4、getchar函数的原形在头文件【1】中.1-5、sqrt函数的原形在头文件【1】中.1-6、如果函数不要求带回值,可用【1】来定义函数返回值为空.答案:w或w+;a或a+;stdio.h ; stdio.h ; math.h ;void .2-1、字符串“1011234at”的长度(

2、字符数)是【1】.2-2、字符串“abc103bcd”的长度(字符数)是【1】.2-3、字符串“1tx43abx44”的长度(字符数)是【1】.2-4、“a“在存中占【1】个字节.2-5、a在存中占【1】个字节.2-6、“71“在存中占【1】个字节.2-7、一维数组下标的最小值是【1】;数组char a=“china” ;在存应占【1】个字节。答案:8; 8; 9; 2;1;2 ;0;6.3-1、设x=(51)+2, x的植为【1】.3-2、表达式B+15+x41+011+0x10的值是【1】.3-3、表达式b+5+x42+011+0x10的值是【1】.答案:3;171;194;4-1、假设所

3、有变量都为整型,表达式(a=2,b=5,ab?a+:b+,a+b)的值是【1】.4-2、if(!a)中的表达式!a等价于【1】.4_3、已知a=1,b=2,c=3,执行if(abc) b=a;else b=c;a=4;b=8;后,b的值是【1】.答案:8;a=0;8;5-1、若所用变量都已定义,下列程序段的执行结果是【1】.for(i=1;i=5;i+);printf(“OKn”);5-2、执行语句char s3=”ab”,*p;p=s;后,*(p+2)的值是【1】.5-3、若有以下定义和语句:int a4=0,1,2,3,*p; p=&a2; ,则*-p的值是【1】.5-4、下列程序的输出结

4、果是【1】,main()int a=011;printf(“%dn”,+a);答案:OK;0 ;1;106-1、若宏定义为:#define y(x) 2+x, 则表达式a=3*y(3)的值为【1】.6-2、若宏定义为:#define y(x) 2+x, 则表达式a=4*y(2)的值为【1】.6-3、若宏定义为:#define y(x) 2/x, 则表达式a=4+3*y(3)的值为【1】.答案:9;10;6 .二、单项选择题1-1、若以a+方式打开一个已存在的文件,则以下叙述正确的是()。A:文件打开时,原有文件容不被删除,位置指针移到文件末尾,可作添加和读操作B:文件打开时,原有文件容不被删除

5、,位置指针移到文件开头,可作重写和读操作C:文件打开时,原有文件容被删除,只可作写操作D:以上各种说法皆不正确1-2、若执行fopen函数时发生错误,则函数的返回值是()。A:地址值 B:0 C:1 D:EOF1_3、若要打开A盘上user子目录下名为abc.txt的文件进行读、写操作,符合要求的是()。A:fopen(“A:userabc.txt”, “r”) B:fopen(“A:userabc.txt”, “r+”) C:fopen(“A:userabc.txt”, “rb”) D:fopen(“A:userabc.txt”, “w”)答案:A;B;B;2-1、以下属于c语言预先规定的保

6、留字是()。A:int B:score C:aver D:sum2-2、下列运算符中优先级最高的是()。A: B:+ C:& D:!=2-3、下面不正确的字符串常量是()。A:abc B:1212” C:”0” D:”“2-4、运算对象必须是整型的运算符是()。A:% B:/ C:= D:bc)a=b; else a=c; 则a的值为()。A:3 B:2 C:1 D:04-2、下列程序的输出为()。main() int y=10; while(y-); printf(y=%dn,y); A:y=0 B: while构成无限循环 C:y=1D:y=-14-3、假设所有变量都为整型,表达式(a=2

7、,b=5,ab?a+:b+,a+b)的值是().A: 7 B:8 C: 9 D: 24-4、以下程序的输出结果是()。main() int i=010, j=10 ; printf(%d,%dn,+i,j-); A: 11,10 B:9,10 C: 10,9 D: 10,94_5、设a=2,且a定义为整型变量,执行语句a+=a-=a*=a;后,a的值为()。A: 12 B: 144 C: 0 D: 1324-6、int a=1,b=2,c=3; if(ac)a=b; a=c;c=b; 则c的值为()。A:1 B:2 C:3 D:不一定4-7、若变量a与i已正确定义,且i已正确赋值,合法的语句是

8、()。A: a=1 B:+i; C:a=a+=5; D:a=int(i);4_8、strlen(“120345n”)与strlen(“120845n”)的测试结果分别是。A:相同 B:2和5 C:5和2 D:5和54_9、设 char s10=ta017bc;则数组s所占的字节数是()。A:9 B:10 C:6 D:74_10、设 char *s=ta017bc;则指针变量s指向的字符串所占的字节数是()。A:9 B:5 C:6 D:74_11、若i=3,则printf(%d,-i+);输出的值和i的值分别为()。A:相同 B:-3和4 C:5和2 D:5和5答案:C;D;B;B; C; B;

9、B;C;B;C;B;5-1、一维数组定义的格式为:类型说明符 数组名()。A:常量表达式 B:整型表达式 C:整型常量 或整型表达式 D:整型常量5-2、以下能正确定义数组并正确赋初值的邮局语句是()。A:int N=5,bNN; B: int a12=1,3; C: int c2=1,2,3,4; D: int d32=1,2,34;5_3、以下不正确的定义语句是()。A:double x5=2.0,4.0,6.0,8.0,10.0; B: int y5=0,1,3,5,7,9; C: char c1=1,2,3,4,5; D: char c2=x10,xa,x8;5_4、在C语言中,引用数

10、组元素时,其数组下标的数据类型允许是()。A:整型常量 B:整型表达式C:整型常量或整型表达式D: 任何类型的表达式5_5、若有说明:int a10;则对a数组元素的正确引用是()。A:a10 B:a3,5 C:a(5) D:a10-103_6、下列数组定义中,正确的是()。A:int a4; B:int a; C:int a5; D:int a3;5_7、若有说明:int a10;则对a数组元素的正确引用是()。A:a10 B:a3,5 C:a(5) D:a31答案:A;D;B;C;D;A;D;6-1、相同结构体类型的变量之间可以()。A: 相加 B:赋值 C: 比较大小 D: 地址相同6_

11、2、结构体类型的定义允许嵌套是指()。A:成员是已经或正在定义的结构体型 B: 成员可以重名 C: 结构体型可以派生 D: 定义多个结构体型6_3、有如下定义:struct studentchar name20;int age;wang,*p;p=&wang;,以下不合法的引用为()。A: p.age B: wang.age C: p-age D: (*p).age6_4、在定义构造数据类型时,不能()。A:说明变量 B:说明存储类型C:初始化 D:末尾不写分号6_5、当定义一个结构体变量时,系统分配给它的存是()。A:各成员所需存量的总和B:结构中第一个成员所需存量C:结构中最后一个成员所需

12、存量D:成员中占存量最大者所需的容量6_6、enum a sum=9,mon=-1,tue;定义了()。A:枚举变量 B:3个标识符C:枚举数据类型 D:整数9和-16_7、以下各选项企图说明一种新的类型名,其中正确的是()。A:typedef v1 int; B:typedef v2=int; C:typedef int v3; D:typedef v4: int;答案:B;A;A;D;A;C;C;7-1、若宏定义为:#define y 2+3, 则表达式y*3+3的值为().A: 14 B:16 C: 18 D: 207-2、若宏定义为:#define y 2+3, 则表达式2+y*3的值

13、为().A: 11 B:13 C: 15 D: 177_3、有宏定义为#define Y(a,b) a+b ,则表达式2+Y(2,3)*3的值为().A: 11 B: 13 C: 15 D: 17答案:A;B;B;8-1、如有int *p,a=5,b; 定义,则以下正确的程序段为()。A: p=&b;scanf(“%d,&p); B: p=&b; scanf(“%d,*p); C: scanf(“%d,&b); p=b; D: p=&b;p=a;8-2、若有语句:int a34,*p3=a0,a1,a2; 不能表示a23的元素的是()。A: *(*(a+2)+3) B: *(*(p+2)+3)

14、 C: (p2+3) D: (*(p+2)8_3、p1,p2为指向浮点的指针变量,则下列运算错误的是()。A: *p1-*p2 B: p1+ C: *p1%*p2 D: p1-p28_4、有以下定义:int a23;,则对数组元素的正确引用()是。A: *(*(a+i)+j) B: (a+i)j C: *(a+i+j) D: ai+j8_5、若有定义:int (*p)();,则该指针为()。A: 指向整型的指针 B: 指向字符型的指针 C: 指向整型函数的指针 D: 指向字符型函数的指针8_6、下列正确的定义是()。 int i,*p=&i; int *p=&i,i; int *p,i;p=&

15、i;int *p,i;p=i;int *p,i,p=&i;A: B: C: D:答案:D;D;C;A;C;A;三、多项选择题1_1、下列选项中合法的标识符有()。A: good_morning B:main C: stdio.h D: 8abc答案:AB;1_2、下列选项中合法的用户标识符有()。A: page B:short C: _3com D: int答案:AC;1_3、下列选项中合法的用户标识符有()。A: return B:f2_G3 C: a3-3 D: abc答案: BD;1_4、以下叙述正确的是()。A:C语言严格区分大小写英文字母。 B:C语言用“;”作为语句分隔符。C:C程

16、序书写格式自由:一行可以写几个语句,一个语句也可以写在几行。D:可以使用/*/对C程序中的任何部分作注释。答案:ABCD;1_5、下列对逻辑运算符两侧的运算对象的数据类型描述不正确的是()。A:只能是0或1; B:只能是0或非0正数; C:可以是整型或字符型数据; D:可以是任何类型的数据;答案:AB;1_6、以下对switch语句和break语句中描述错误的有()。A: 在switch语句中必须使用break语句; B:break语句只能用于switch语句; C: 在switch语句中可以根据需要使用或不使用break语句; D:break语句是switch语句的一部分;答案:ABD;2_

17、1、已定义c为字符型变量,则下列语句中错误的是()。A: c=97; B:c=”97” ; C: c=97; D: c=”a”;答案:ABD;3_1、以下正确的是()。A:预处理命令行必须以#开始。 B:以#开始的都是预处理命令行。C:程序在执行过程中对预处理命令行进行处理。 D:#define ABCD是正确的宏定义。答案:ABD;4_1、在定义int a23之后,对aij的正确引用有()。A: a02 B: a1,3 C: a12!1 D: a20答案:AC;4_2、以下对二维数组a正确初始化的是()。A:static char word=Turbo0; B:static char wor

18、d=T,u,r,b,o,0;C:static char word=“Turbo0”; D:static char word=”Turbo0”; 答案:BCD;5_1、以下4个选项中可以看作是一条语句的有()。A: ; B: a=0,b=0,c=0 ; C: if(a0); D: if(b=0) m=1;n=2;答案:ABC;5_2、若a、b、c、d都是int型变量且已赋初值0,则正确的赋值语句是()。A: a=b=c=d=100 ; B: d+; C: c+b; D: d=(c=22)-(b+);答案:ABD;5_3、设有以下定义:int a=0;double b=1.25;char c=A;

19、#difine d 2 ,则正确的语句是()。A: a+; B: b+; C: c+; D: d+;答案:ABC;6_1、以下述说中正确的是()。A:一个c源程序可以由一个或多个函数组成。 B:一个c源程序必须包含一个main()函数。C:c源程序的基本组成单位是函数。 D:在c源程序中,注释说明只能位于一条语句的最后。答案:ABC;6_2、以下对C语言中的函数描述不正确的是()。A:可以嵌套定义,不可以嵌套调用。 B:不可以嵌套定义,可以嵌套调用。C:可以嵌套定义,也可以嵌套调用。 D:嵌套定义和嵌套调用都不允许。答案:ACD;四、程序填空 1、功能:计算平均成绩并统计90分以上人数。成绩数

20、据以一负数作为结束标志。#include void main(void) int n,m;float grade,average; /*SPACE*/ average=n=m=【?】; while(1) /*SPACE*/ 【?】(%f,&grade); if(grade0) break; n+; average+=grade; /*SPACE*/ if(grade90)【?】; m+; if(n) printf(%.2f%dn,average/n,m);答案: 1). 0 或 0.02). scanf3). Continue2、功能:找出一维数组中最大值和此元素的下标,数组元素的值由键盘输入

21、。#include stdio.hvoid main() int a10,*p,*s,i; for(i=0;i10;i+) /*SPACE*/ scanf(%d, 【?】); /*SPACE*/ for(p=a,s=a;【?】*s) s=p; /*SPACE*/ printf(max=%d,index=%dn,【?】,s-a);答案:1). a + i 或 &ai2). p-a 或 -a+p3). *s3、功能:输入学生成绩并显示。# include struct student char number6; char name6; int score3; stu2;void output(st

22、ruct student stu2);void main(void) int i, j; /*SPACE*/ for(i=0; i2; 【?】) printf(请输入学生%d的成绩:n, i+1); printf(学号:); /*SPACE*/ scanf(%s, 【?】.number); printf(:); scanf(%s, stui.name); for(j=0; j3; j+) printf(成绩 %d. , j+1); /*SPACE*/ scanf(%d, 【?】.scorej); printf(n); output(stu);void output(struct student

23、 stu2) int i, j; printf(学号 成绩1 成绩2 成绩3n); for(i=0; i2; i+) printf(%-6s%-6s, stui.number, stui.name); for(j=0; j3; j+) printf(%-8d, stui.scorej); printf(n); 答案: 1). i+ 或 +i 或 i=i+1 或 i+=1 2). stui 3). &stui4、功能:输入两个整数x,y,请把这两个数由小到大输出。#include void main(void) int x,y,t; /*SPACE*/ scanf(%d%d,【?】); /*SP

24、ACE*/ if (【?】) /*SPACE*/ 【?】 printf(small to big: %d %dn,x,y);答案: 1). &x,&y 或 &y,&x 2). xy 或 x=y 或 yx 或 y=x 3). t=y;y=x;x=t; 或 t=y,y=x,x=t; 或 t=x;x=y;y=t; 或 t=x,x=y,y=t;5、功能:输出结果为:* * * * * * * * * * * * * * * * * * * * #include void main(void) /*SPACE*/ static char 【?】=*,*,*,*,*; int i,j,k; char sp

25、ace= ; for(i=0;i5;i+) printf(n); for(j=1;j=3*i;j+) /*SPACE*/ printf(%1c,【?】); /*SPACE*/ for(k=0;k【?】;k+) printf(%3c,ak); printf(n);答案:1). a5 或 a2). space 或 3). 5 或 =46、功能:下面函数为二分法查找key值。数组中元素已递增排序,若找到key则返回对应的下标,否则返回-1。#include fun(int a,int n,int key) int low,high,mid; low=0; high=n-1; /*SPACE*/ wh

26、ile(【?】) mid=(low+high)/2; if(keyamid) /*SPACE*/ 【?】; else return mid; return -1;void main(void) int a10=1,2,3,4,5,6,7,8,9,10; int b,c; b=4; c=fun(a,10,b); if(c=1) printf(not found); else printf(position %dn,c);答案:1). low=low2). high=mid-13). low= mid + 17、功能:计算圆周率的近似值。(/4=1-1/3+1/5-1/7+)-*/#include

27、 #include void main(void)int s; /*SPACE*/ float n,【?】; double t; t=1;pi=0;n=1;s=1; /*SPACE*/ while(【?】=1e-6) pi+=t;n+=2;s=-s;t=s/n; /*SPACE*/ pi*=【?】; printf(pi=%.6fn,pi);2 pi fabs(t) 4五、程序改错 1、功能:编写函数fun求20以所有5的倍数之积。#define N 20#include stdio.hvoid main(void) int sum; sum=fun(5); printf(%d以所有%d的倍数之

28、积为: %dn,N,5,sum); getch();int fun(int m) /*FOUND*/ int s=0,i; for(i=1;iN;i+) /*FOUND*/ if(i%m=0) /*FOUND*/ s=*i; return s;答案: 1). int s=1,i; 2). if(i%m=0) 或 if(!(i%m) 3). s*=i; 或 s=s*i; 或 s=i*s;2、功能:编写一个程序模拟袖珍计算器的加、减、乘、除四则运算。例如:输入3+5或52或3*4或4/2,求表达式结果。#includevoid main(void) float x,y; char operate1

29、; printf(Arithmetic expressionn); /*FOUND*/ scanf(%f,x); /*FOUND*/ while(operate1=getchar()!=) printf(result=); scanf(%f,&y); /*FOUND*/ switch(y) case +: x+=y; break; case -: x-=y; break; case *: x*=y; break; case /: x/=y; break; printf(%f,x); getch(); return;答案: 1). scanf(%f,&x);2). while(operate1=

30、getchar()!=)3). switch(operate1)3、功能:编写函数求2!+4!+6!+8!+10+12!+14!。#include stdio.hlong sum(int n) /*FOUND*/ int i,j long t,s=0; /*FOUND*/ for(i=2;i=n;i+) t=1; for(j=1;j=i;j+) t=t*j; s=s+t; /*FOUND*/ return(t);void main(void) printf(this sum=%ldn,sum(14); getch();答案:1). int i,j;2). for(i=2;i=n;i=i+2)

31、或 for(i=2;i=n;i+=2) 或 for(i=2;i=n;i+,i+)3). return(s); 或 return s; 或 return (s);4、功能:找大于m的最小素数#include#includeint fun(int m) int i,k;for(i=m+1;i+)/*FOUND*/ for(k=2;ksrqt(i);k+)/*FOUND*/ if(i%k=0) break;/*FOUND*/ if(ksqrt(i) return i; 答案:1). 5、功能:统计出若干个学生的平均成绩,最低分以与得最低分的人数。例如:输入10名学生的成绩分别为92,87,68,56,92,84,67, 75,92,66,则输出平均成绩为77.9,最低高分为56,得最低分的人数为1人。#include stdio.hfloat Min=0;int J=0;float fun(float array,int n) int i;float sum=0,ave; Min=array0;

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
百度文库年卡

猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 通信科技 > 开发语言

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

关于我们      便捷服务       自信AI       AI导航        获赠5币

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

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

gongan.png浙公网安备33021202000488号   

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

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服