补充函数到部分答案.doc

上传人:本田雅阁 文档编号:2111232 上传时间:2019-02-15 格式:DOC 页数:19 大小:106.52KB
返回 下载 相关 举报
补充函数到部分答案.doc_第1页
第1页 / 共19页
补充函数到部分答案.doc_第2页
第2页 / 共19页
补充函数到部分答案.doc_第3页
第3页 / 共19页
亲,该文档总共19页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《补充函数到部分答案.doc》由会员分享,可在线阅读,更多相关《补充函数到部分答案.doc(19页珍藏版)》请在三一文库上搜索。

1、C程序设计题库一、 单项选择题1. 基础知识1、以下说法中正确的是( )A、C语言程序总是从第一个的函数开始执行 B、在C语言程序中,要调用的函数必须在main()函数中定义 C、C语言程序总是从main()函数开始执行 D、C语言程序中的main()函数必须放在程序的开始部分 答案:C2、下列字符序列中,可用作C标识符的一组字符序列是( )。A) S.b,sum,average,_above B) class,day,lotus_1,2dayC) #md,&12x,month,student_n! D) D56,r_1_2,name,_st_1答案:D3、以下标识符中,不能作为合法的C用户定

2、义标识符的是()。A) a3_b3 B) void C) _123 D) IF答案:B4、设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是(D)A、 6.500000 B、 6 C、 5.500000 D、 6.0000005、以下的选择中,正确的赋值语句是()。A) a=1,b=2 B) j+ C) a=b=5; D) y=int(x)答案:C6、在C语言中,能代表逻辑值“真”的是()。A) True B) 大于0的数 C) 非0整数 D) 非0的数答案:D7、下列程序的输出结果是()。main()char c1=97,c2=98;printf(%

3、d %c,c1,c2);A) 97 98 B) 97 b C) a 98 D) a b答案:B8、执行下列语句后变量x和y的值是()。y=10;x=y+;A) x=10,y=10 B) x=11,y=11 C) x=10,y=11 D) x=11,y=10答案:C9、设a=12,且a定义为整型变量。执行语句a+=a-=a*=a;后a的值为()。A) 12 B) 144 C) 0 D) 132答案:C10、已知year为整型变量,不能使表达式(year%4=0&year%100!=0)|year%400=0的值为“真”的数据是()。A) 1990 B) 1992 C) 1996 D) 2000答

4、案:A11、下列程序的输出结果是()。main()int a=7,b=5; printf(%dn,b=b/a);A) 0 B) 5 C) 1 D) 不确定值答案:A12.以下关于运算符优先顺序的描述中正确的是( )。 A) 关系运算符算术运算符赋值运算符逻辑运算符 B) 逻辑运算符关系运算符算术运算符赋值运算符 C) 赋值运算符逻辑运算符关系运算符算术运算符 D) 算术运算符关系运算符赋值运算符逻辑运算符答案:C13、已知i、j、k为int型变量,若从键盘输入:1,2,3回车,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是( ) A、scanf(%2d%2d%2d,&i,&j

5、,&k); B、scanf(%d %d %d,&i,&j,&k); C、scanf(%d,%d,%d,&i,&j,&k); D、scanf(i=%d,j=%d,k=%d,&i,&j,&k);答案:C14 有以下程序#include main() char c1,c2; c1=A+8-4; c2=A+8-5;printf(“%c,%dn”,c1,c2);已知字母A的ASCII码为65,程序运行后的输出结果是( ) (A) E,68 (B) D,69 (C) E,D (D)输出无定值答案:A15、若有以下类型说明语句:char w; int x; float y; double z;则表达式 w*

6、x+z-y 的结果类型是( ) A、float B、char C、int D、double答案:D16、关于局部变量,下列说法正确的是 ( )。 A、 定义该变量的程序文件中的函数都可以访问。 B、 定义该变量的函数中的定义处以下的任何语句都可以访问。 C、 定义该变量的复合语句的定义处以下的任何语句都可以访问。 D、 局部变量可用于函数之间传递数据。答案:D17.若变量已正确说明为float类型,要通过语句scanf(%f %f %f ,&a,&b,&c);给a赋于10.0,b赋予22.0,c赋予33.0,不正确的输入形式是:( )A) 10 B) 10.0,22.0,33.0 22 33C

7、) 10.0 D) 10 22 22.0 33.0 33答案:B2.三大结构(1) 下列程序的运行结果是( ) #include void main()char c1 = 6, c2 = 0;printf(%c,%c,%dn,c1,c2,c1-c2);A.因程序格式不合法,提示出错信息B.6,0,6C.6,0,7D.6,0,5(2) 下列程序的运行结果是( ) #include void main()double x = 2.0, y;if(x0.0) y = 0.0;else if(x10.0) y = 1.0/x;else y = 1.0;printf(%fn,y);A.0.000000B

8、.0.250000C.0.500000D.1.000000(3) 下列程序的运行结果是( ) #include void main()int a = 2, b = -1, c = 2;if( b 0) c = 0;else c = c + 1;printf(%dn,c);A.0B.1C.2D.有语法错误(4) 下列程序的运行结果是( ) #include void main()int a = 100;if( a 0) printf(%dn, a 100);else printf(%dn, a = 100);A.0B.1C.100D.-1(5) 下列程序的运行结果是( ) #include vo

9、id main()int x = 1, a = 0, b = 0;switch(x)case 0: b = b + 1;case 1: a = a + 1;case 2: a = a + 1; b = b + 1;printf(a=%d,b=%dn, a, b);A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=23.函数1.以下正确的函数定义形式是( )。A. double fun(int x,int y)B. double fun(int x; int y)C. double fun(int x, int y);D. double fun(int x,y)答案:A2.

10、C语言中,简单变量作为实参时,它和对应形参之间的数据传递方式是( )。A. 地址传递B. 单向值传递C. 由实参传递给形参,再由形参传递给实参 D. 由用户指定传递方式答案:B3. 在C语言程序中以下正确的描述是( )。A. 函数的定义可以嵌套,但函数的调用不可以嵌套B. 函数的定义不可以嵌套,但函数的调用可以嵌套C. 函数的定义和函数的调用均不可以嵌套D. 函数的定义和函数的调用均可以嵌套答案:B4. 若数组名作为函数调用的参数,则传递给形参的是( )。A. 数组的首地址B. 数组第一个元素的值C. 数组中全部元素的值D. 数组元素的个数答案:A5. 若调用一个函数,且此函数中没有retur

11、n语句,则正确的说法是( )。A. 没有返回值 B.返回若干个系统默认值C. 能返回一个用户所希望的函数值D. 返回一个不确定的值答案:D6. 在C语言中,以下说法正确的是( )。A. 实参和与其对应的形参各占用独立的存储单元B. 实参和与其对应的形参共占用一个存储单元C. 只有当实参与其对应的形参同名时才共占用存储单元D. 形参是虚拟的,不占用存储单元答案:A7. 以下正确的说法是( )。A.用户若需要调用标准库函数,调用前必须重新定义 B.用户可以重新定义标准库函数,如若此,该函数将失去原有定义C. 系统不允许用户重新定义标准库函数 D. 用户若需要使用标准库函数,调用前不必使用预处理命令

12、将该函数所在的头文件包含编译,系统会自动调用。答案:B8. 以下不正确的说法是( )。A. 实参可以是常量,变量或表达式 B. 形参可以是常量,变量或表达式 C. 实参可以为任意类型 D. 如果形参和实参的类型不一致,以形参类型为准答案:B9.C语言规定,函数返回值的类型是由( )决定的。A. return语句中的表达式类型 B. 调用该函数时的主调函数类型 C. 调用该函数时由系统临时 D. 在定义函数时所指定的函数类型答案:D10. 以下正确的函数定义是( )。A. double fun(int x, int y) B.double fun(int x,y) z=x+y; return z

13、; int z; return z C. fun (x,y) D. double fun (int x, int y) int x, y; double z; double z; z=x+y return z z=x+y; return z 答案:D4.数组1. 在C语言中,引用数组元素时,其数组下标的数据类型允许是(C) A 整型常量 B 整型表达式 C 整型常量或整型表达式 D 任何类型的表达式2.对以下说明语句的正确理解是(B) int a10=6,7,8,9,10; A 将5个初值依次赋给a1至a5 B 将5个初值依次赋给a0至a4 C 将5个初值依次赋给a6至a10 D 因为数组长度

14、与数组个数不相同,所以此语句不正确3.若有说明:int a34;则对a数组元素的非法引用是(D) A a02*1 B a13 C a4-20 D a044.若:int a34=0;则下面正确的叙述是(D) A 只有元素a00可得到初值0 B 此说明语句不正确 C 数组a中各元素都可得到初值,但其值不一定为0 D 数组a中每个元素均可得到初值05.已有定义:char a=xyz,b=x,y,z;,以下叙述中正确的是( C )A数组a和b的长度相同 Ba数组长度小于b数组长度 Ca数组长度大于b数组长度 D上述说法都不对 6.若有定义语句:char s10=123456700;,则strlen(s

15、)的值是(A)。 A7 B. 8 C. 9 D. 107.如下代码: int k,a33=1,2,3,4,5,6,7,8,9; for(k=0;k3;k+) printf(“%d ”,ak2-k); 输出结果为(A) A 3 5 7 B 3 6 9 C 1 5 9 D 1 4 78.判断字符串a和b是否相等,应当使用(D) A if(a=b) B if(a=b) C if(strcpy(a,b) D if(strcmp(a,b)=0)9.有两个字符数组a、b,则以下正确的输入语句是(B) A gets(a,b) B scanf(“%s%s”,a,b); C scanf(“%s%s”,&a,&b

16、); D gets(“a”),gets(“b”);10.下述描述中错误的是(C) A 字符数组可以存放字符串 B 字符数组的字符串可以整体输入、输出 C 可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值 D 不可以用关系运算符对字符数组中的字符串进行比较5结构体1.在说明一个结构体变量时系统分配给它的存储空间是( D )A) 该结构体中第一个成员所需存储空间B) 该结构体中最后一个成员所需存储空间C) 该结构体中占用最大存储空间的成员所需存储空间D) 该结构体中所有成员所需存储空间的总和2. 以下对结构体类型变量的定义中不正确的是( D ) A) #define STU struct s

17、tudent B) struct student STU int num; int num; float age; float age; std1; ; std1;C) struct D) struct int num; int num; float age; float age; student; std1; struct student std1;3. 设有以下说明语句struct stu int a; float b; stutype; 则下面的叙述不正确的是( C )。A) struct是结构体类型的关键字 B)struct stu是用户定义的结构体类型C) stutype是用户定义的

18、结构体类型名 D) a和b都是结构体成员名4. 定义以下结构体数组 struct c int x; int y; s2=1,3,2,7;语句printf(%d,s0.x*s1.x)的输出结果为( C ) A) 14 B) 6 C) 2D) 215. 根据下面的定义,能输出Mary的语句是( B )struct person char name9;int age;struct person class5=John,17,Paul,19,Mary,18,Adam,16;A) printf(%sn,class1.name); B) printf(%sn,class2.name);C) printf(

19、%sn,class3.name); D) printf(%sn,class0.name);6. 定义以下结构体数组 struct int num; char name10; x3=1,china,2,USA,3,England;语句printf(n%d,%s,x1.num,x2.name)的输出结果为(D)A)2,USAB)3,England C)1,chinaD)2,England7.执行下面的程序后,输出的结果是( B ) struct abc int a,b,c; void main() struct abc s2=1,2,3,4,5,6;int t; t=s0.a+s1.b;print

20、f(%dn,t); A) 5 B) 6 C) 7 D) 8 C 6. 指针1. 有以下程序 #include main() int m=1,n=2,*p=&m,*q=&n,*r; r=p;p=q;q=r; printf(“%d,%d,%d,%dn”,m,n,*p,*q); 程序运行后的输出结果是(B) A)1,2,1,2 B)1,2,2,1 C)2,1,2,1 D)2,1,1,22.以下选项中正确的语句组是(d)A)char s;s=”BOOK!”; B) char *s;s=”BOOK!”;C)char s10;s=”BOOK!”; D) char *s;s=”BOOK!”;3. 以下选项中

21、正确的语句组是若有以下定义int x10,*pt=x;则对x数组元素的正确应用是(C)A)*&x10 B)*(x+10) C)*(pt+3) D)pt+34.若有定义语句:double x,y,*px,*py,执行了px=&x, py=&y;之后,正确的输入语句是(C)A)scanf(“%f%f”,x,y); B) scanf(“%f%f”,&x,&y);C) scanf(“%lf%le”,px,py); D) scanf(“%lf%lf”,x,y);7. 文件(1)下列关于C语言数据文件的叙述中正确的是(D)A) 文件由ASCII码字符序列组成,C语言只能读写文本文件B) 文件由二进制数据序

22、列组成,C语言只能读写二进制文件C) 文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件D) 文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件(2)有如下程序#include main()FILE *fp1; fp1=fopen(f1.txt,w); fprintf(fp1,abc); fclose(fp1);若文本文件f1.txt中原有内容为:good,则运行以上程序后文件f1.txt中的内容为(C)A) goodabc B) abcd C) abc D) abcgood(3)以下叙述中错误的是(D)A) 二进制文件打开后可以先读文件的末尾,而顺序文件不可以B)

23、在程序结束时,应当用fclose函数关闭已打开的文件C) 在利用fread函数从二进制文件中读数据时,可以用数组名给数组中所有元素读入数据D) 不可以用FILE定义指向二进制文件的文件指针(4)若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是(B)A) fopen(A:userabc.txt,r)B) fopen(A:userabc.txt,r+)C) fopen(A:userabc.txt,rb)C) fopen(A:userabc.txt,w)(5)二、 读程序写结果2.三大结构3.函数1.下列程序的执行结果为 ( )。float f1(

24、float x) int k=2; k=k*x; return k; void main() float b=4.3; printf(%.1f,f1(b); 答案:8.62.下面程序的输出是 ( )。#include void main() char ss10=12345; strcat(ss,6789); printf(%sn,ss); 答案:1234567893. 程序执行时,若输入10,程序的输出结果是( )。int fun(int n) if(n=1) return 1; else return(n+fun(n-1); main() int x,y; scanf(%d,&x); y=f

25、un(x); printf(%dn,y); 答案:554. 下面程序的输出是 ( )。#include void fun(int *s, int m, int n) int t; while(mn) t=sm; sm=sn; sn=t; m+; n-; void main() int a5=1,2,3,4,5,k; fun(a,0,4); for(k=0;k5;k+) printf(%d ,ak); 答案:5 4 3 2 15. 运行程序时,若从键盘输入asd af aa z67(回车),分析以下程序的输出结果( )。 #include int fun(char *str) int i,j=0

26、; for(i=0;stri!=0;i+) if(stri!= ) strj+=stri; strj=0; void main() char str81; int n; printf(Input a string : ); gets(str); fun(str); printf(%sn,str); 答案:asdafaaz676 . 程序运行后的输出结果是( 64 )。#include int fun() static int x=1; x*=2; return x; void main() int i,s=1; for(i=1;i=3;i+) s*=fun(); printf(%dn,s);

27、7. 以下程序的输出结果是(4)#include int m=13;int fun(int x,int y)int m=2;return(x*y-m);main()int a=7,b=6;printf(%d,fun(a,b)/m);8.以下程序输出结果为(6)#include fun(int x)static int a=3;a+=x;return(a);main()int k=2,m=1,n;n=fun(k);n=fun(m);printf(%d,n);4.数组1.下面程序的运行结果是_void main() int a66,i,j; for(i=1;i6;i+) for(j=1;j6;j+

28、) aij=(i/j)*(j/i); for(i=1;i6;i+) for(j=1;j6;j+) printf(%2d,aij); printf(n); 2. 下面程序的运行结果是_void main() int f10=1,1,i; for(i=2;i10;i+) fi=fi-2+fi-1; for(i=0;i10;i+) if(i%4=0) printf(n); printf(%3d,fi); 5结构体6. 指针7. 文件三、 程序填空1. 基础知识1. 表达式(int)(double)(5/2)+2.5)的值是【4】2.三大结构3.函数1.以下程序实现了求两个数的最大公约数,请将程序填写

29、完整。int divisor(int a,int b) int r;r=a%b;while(【1】) a=b;b=r;r=a%b; return b;void main() int a,b,d,t;scanf(%d %d,&a,&b);if (ab) t=a; a=b; b=t; d=【2】;printf(n gcd=%d,d); 答案:【1】r!=0 【2】divisor(a,b)2.以下函数fun的功能是:将输入的大写字母,先转换为与其对应的小写字母,然后再转换成该小写字母后的第3个字母,返回后输出。例如,若输入的字母为E,输出的字母则为h;若输入的字母为Y,输出的字母则为b。#inclu

30、de #include char func(char c)c=【1】;if(c=a & c=x & c1)#include int age(int i)int c;if(n=1) c=10;else c=【1】;return c;void main()int n=5;printf(age:%dn,【2】);答案:【1】age(n-1)+2 【2】age(n)4. 编写函数,求数组的最大值,请将程序补充完整。#include void main() int i,d,a10; for(i=0; i10; i+) scanf(%d,&ai); d=zmax(【1】); printf(max=%dn,

31、d);int zmax(int x ,int n) int i,d; d=x0; for(i=1; id) 【2】; return d;答案:【1】a,10 【2】d=xi5. 以下函数my_cmp( )的功能是比较字符串s和t的大小,当s等于t时返回0,否则返回s和t的第一个不同字符的ASCII码差值,即st时返回正值,s*t 【2】*s-*t4.数组5结构体6. 指针7. 文件四、 编程2.三大结构1.【顺序】(1) 从键盘输入一个3位整数,输出它的个位数字、十位数字和百位数字。 例如,输入是: 365,输出是: 个位数字是5,十位数字是6,百位数字是3。(2) 从键盘输入一个英文大写字母

32、,输出其对应的小写字母以及小写字母对应的ASCII码值。(3) 编写程序,求梯形面积,梯形的上底、下底以及高均从键盘输入。(4) 编写程序,从键盘输入圆柱体的高,底面圆的半径,求圆柱体的体积。2.【分支】(1) 根据输入的月份(1到12之间的数),输出对应的季节(1-3月为春天,4-6月为夏天,7-9月为秋天,10-12月为冬天)。(2) 将百分制成绩转化成等级制输出(60分以下为不及格,60-70为及格,70-80为中等,80-90为良好,90-100为优秀)。(3) 根据输入的数字如1-7,输出星期几。(4) 用户输入运算数和四则运算符,输出计算结果。(5) x的值由键盘输入,求函数y的值

33、如下: x - 1 -5x0 y = x x = 0 2x + 1 0x5(6) x的值由键盘输入,求函数y的值如下: x x1 y = 2x - 1 1= x = 103.【循环】(本题不允许使用数组)。(1) 使用循环语句,编程求1 + 2/3 + 3/4 + . + (n-1)/n的值(n是从键盘输入的正整数)(本题不允许使用数组)。(2) 使用循环语句, 编程求1 + 1/2 + 1/3 + . + 1/n的值(n是从键盘输入的正整数)(本题不允许使用数组)。(3) 使用循环语句,编程输出下面图案(本题不允许使用数组)。* * * *(4) 使用循环语句,编程输出下面图案(本题不允许使

34、用数组)。* * * * *(5) 输入一个100到999之间的3位数,判断是否为一个“水仙花数”. 水仙花数是指这个3位数的各位数字的立方和等于这个数本身。 例如, 153 = 1*1*1 + 5*5*5 + 3*3*3 (本题不允许使用数组)(6) 输出100到999之间所有的完数. 一个整数若等于其所有因子之和,则称该数为完数。 例如, 28 = 1 + 2 + 4 + 7 + 14 (本题不允许使用数组)(7) 编写程序,输出100-999之间的所有素数。(本题不允许使用数组)3.函数1. 请用自定义函数的形式编程实现,求s=m!+n!+k!,m、n、k从键盘输入(值均小于7)。2.

35、请编写两个自定义函数,分别实现求两个整数的最大公约数和最小公倍数,并用主函数调用这两个函数,输出结果(两个整数由键盘输入得到)。3. 编写函数判断用户输入的3个整型值是否组成三角形,并计算三角形面积。4. 写一个判断素数的函数,在主函数输入一个整数,输出示范素数的信息。5. 已知Fibonacci数列:Fib(n)=0 若n=01 若n=1Fib(n-1)+Fib(n-2) 其他情况 请编写一个递归函数,实现求Fib(n)。6. 有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?7. 通过函数调用,求一组数中的最大值。8. 写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串9. 写一个函数,将两个字符串连接。10. 写几个函数:(1)输入10个职工的姓名和职工号(整数);(2)按职工号由小到大排序,姓名顺序也随之调整;(3)要求输入一个职工号,用折半查找法找出该职工的姓名

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1