蓝莓题库

中国大学mooc高级语言程序设计作业答案查询-k8凯发

欢迎来访!

k8凯发-凯发官网入口云课堂问答 正文

作者2022-12-05 05:21:59云课堂问答 78 ℃0 评论
第一章 c语言与程序设计概述

测试

1、c语言是一种( )。
    a、机器语言
    b、汇编语言
    c、高级语言
    d、低级语言

2、一个c程序的执行是从( )
    a、本程序的main函数开始,到main函数结束
    b、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束。
    c、本程序的第一个函数开始,到本程序main函数结束。
    d、本程序的main函数开始,到本程序文件的最后一个函数结束。

3、以下叙述不正确的是( )
    a、一个c源程序必须包含一个main函数。
    b、一个c源程序可由一个或多个函数组成。
    c、c程序的基本组成单位是函数。
    d、在c程序中,注释说明只能位于一条语句的后面

4、一个c语言程序是由( )。
    a、一个主程序和若干个子程序组成
    b、函数组成
    c、若干过程组成
    d、若干子程序组成

5、下列不是c语言的特点的是( )
    a、语言简洁、紧凑,使用方便
    b、数据类型丰富,可移植性好。
    c、能实现汇编语言的大部分功能
    d、有较强的网络操作功能。

6、下列叙述错误的是( )
    a、c程序中的每条语句都用一个分号作为结束符
    b、c程序中的每条命令都用一个分号作为结束符
    c、c程序中的变量必须先定义,后使用
    d、c语言以小写字母作为基本书写形式,并且c语言要区分字母的大小写

7、c语言规定:在一个源程序中,main函数的位置( )
    a、必须在程序的开头
    b、必须在系统调用的库函数的后面
    c、可以在程序的任意位置
    d、必须在程序的最

8、以下有4组用户标识符(各组间用户标识符以空格隔开),其中合法的一组是( )
    a、for -sub wishes now
    b、f2_g3if 4d do gjd
    c、for ppap for_you love
    d、best size orc y_z_y

9、一个算法应该具有“确定性”等5个特性,下面对另外4个特性的描述中错误的是( )
    a、有零个或多个输入
    b、有零个或多个输出
    c、有穷性
    d、可行性

10、下列叙述正确的是( )
    a、c语言源程序可以直接在dos环境中运行
    b、编译c语言源程序得到的目标程序可以直接在dos环境中运行
    c、c语言源程序经过编译、连接得到的可执行程序可以直接在dos环境中运行
    d、turbo c系统不提供编泽和连接c程序的功能

11、c语言规定, 标识符只能是字母(a~z,a~z)、数字(0~9)和下划线(_ )组成的字符串,并且其第一个字符必须是字母或下划线。

12、c语言生成目标代码质量较低,但程序执行效率高。

13、c语言数据结构丰富,具有现代语言的各种数据结构。c的数据类型有整型、实型、字符型、数组类型、指针类型、结构体类型和共用体类型等。能够用来实现非常复杂的数据结构。如线性表、链表、堆栈、队列、树、图等。

14、用一些简洁的英文字母、有一定含义的符号串来替代一个特定指令的二进制串。这种语言称为高级语言。

15、花括号、小括号、用作界定符的单引号和双引号等都必须成对出现。

16、汇编语言属于面向( )的语言, 高级语言属于面向 ( )的语言。

17、用高级语言编写的程序称为( )程序,它可以通过解释程序翻译一句执行一句的方式执行,也可以通过编译程序一次翻译产生( )程序,然后执行。

18、各类计算机语言的发展历程大致为:先有( )语言,再有汇编语言,最后出现中级语言和( )语言。

19、c语言的字符集就是ascii字符集。’a’的ascii值是( )

20、结构化设计中的三种基本结构是( )结构、( )结构和循环结构。

第三章 基本数据类型和表达式

测试

1、以下不属于c语言的数据基本类型的是()
    a、字符串类型
    b、基本整型
    c、双精度浮点型
    d、单精度浮点型

2、以下标识符错误的是()
    a、class
    b、t_mac
    c、23_lbj
    d、kb_24

3、对于逗号运算”<表达式1>,<表达式2>,…,<表达式n>”的运算结果是()
    a、表达式1的运算结果
    b、表达式n的运算结果
    c、所有表达式运算结果的乘积
    d、所有表达式运算结果的和

4、以下不属于c语言中的关键字的是()
    a、auto
    b、max
    c、union
    d、int

5、’\n’在c语言中的含义是()
    a、空格
    b、换行符
    c、制表符
    d、回车符

6、a = 0.333333 则a的定义应该为()
    a、int
    b、long
    c、double
    d、char

7、0123是八进制数,换算成十进制数后答案是()
    a、83
    b、85
    c、87
    d、89

8、0x10111010是几进制数()
    a、二进制
    b、八进制
    c、十进制
    d、十六进制

9、以下属于按位运算的运算符是()
    a、&
    b、!
    c、
    d、%

10、若有 char c1, c2, s = 'b' ; 连续执行下面语句后,c1,c2和s的输出值是( )。 c1 = s ; c2= s ; printf("%c,%c,%c",c1,c2,s);
    a、b,c,d
    b、b,d,d
    c、d,e,f
    d、b,d,b

11、每个字符串尾有一个字符串结束符,表示字符串的终止。下面哪个是字符串的结束符( )。
    a、'\0'
    b、"\0"
    c、"0"
    d、'0'

12、能正确表示逻辑关系:a≥10或a≤0的c语言表达式()。
    a、a>=10 or a<=0
    b、a>=0|a<=10
    c、a>=10 && a<=0
    d、a>=10||a<=0

13、以下不能正确进行字符串赋初值的语句是(  )。
    a、char str[ ]= "good!";
    b、char str[5]= "good!";
    c、char *str="good!";
    d、char str[5]={ 'g','o','o','d'};3

14、判断字符串s1与s2是否相等,应当使用的语句是( )。
    a、if(s1==s2)
    b、if(s1=s2)
    c、if(s1[]==s2[])
    d、if(strcmp(s1,s2)==0)

15、若有以下定义 struct date { int y; int m; int d; }day={2009,6,30}; 能得到2009的表达式是( )。
    a、date->y
    b、date.y
    c、day->y
    d、day.y

16、下面哪一个不是正确的用户标识符。( )
    a、x_2
    b、x_2
    c、2_x
    d、_2x

17、与语句while(!s )中的条件等价的是( )。
    a、s==0
    b、s!=0
    c、s==1
    d、s=0

18、设有定义语句char s[ ]="abcde";,则s[5]的值是( )。
    a、未知字符
    b、'0'
    c、'\0'
    d、'e'

19、设int a = 3, b = 4, x; x = a ^ b;则x=()
    a、3
    b、4
    c、1
    d、7

20、设int x = 3; 执行m = ( x,x )后,m=()
    a、3
    b、4
    c、5
    d、7

21、设int a = 3,b; 则表达式a == (b=3*4);的值是()
    a、0
    b、1
    c、3
    d、4

22、设a=-2;b=2;则a>b的值是()
    a、-2
    b、2
    c、0
    d、1

23、设有定义int x;float y;以下表达式为浮点型的是()
    a、(int)y x
    b、(int)x y
    c、int (x y)
    d、int(y x)

24、设int a = 0,b = 1, c = 2, d = 3;则表达式“a>b?a:(c>d?c:d)”的值是()
    a、0
    b、1
    c、2
    d、3

25、下列哪一个不是c语言算术运算符()
    a、
    b、%
    c、=
    d、/

26、若变量已正确定义并赋值,以下哪个表达式不符合 c 语言语()
    a、a*b/c
    b、3.14%2
    c、2,b
    d、a/b/c

27、设 float x,y; 使 y 为 x 的小数部分的语句是()
    a、y=(int)x;
    b、y=int(x);
    c、y=x- (int)x;
    d、y=(int)x – x;

28、c 语言中的运算对象必须是整型的运算是()
    a、/
    b、=
    c、>=
    d、%

29、以下选项中正确的 c 语言常量是()
    a、0xefgh
    b、'xyz'
    c、12.34e5
    d、'\5a

30、设有变量定义 int i, j; 与表达式 i==0 && j==0 等价的表达式是()
    a、i||j
    b、!i&&!j
    c、!i==!j
    d、i==j

31、设整型变量a的值为2,下列表达式值为1的是( )。
    a、a%3
    b、a/3
    c、--a
    d、a

32、设变量a、b、c已定义并赋值,则下列表达式中符  合c语言语法规则的是( )。
    a、a=5
    b、a=b=c
    c、a=%2
    d、b=a 1=2

33、下列式中,最终运算结果的数据类型不是单精度的表达式是( )。
    a、(int)(3 3.0)
    b、1e-3
    c、(float)(3)
    d、(int)3.0 3.0

34、101转化成二进制是( )。
    a、1100101b
    b、1010011b
    c、1100111b
    d、1010111b

35、1010b等于下面哪个数 ( )?
    a、9
    b、bh
    c、12o
    d、11

36、c语言中整数-8在内存中的存储形式是( )。
    a、1111111111111000
    b、1000000000001000
    c、.0000000000001000
    d、.1111111111110111

37、已知a为int类型,b为float类型,则a-b是什么类型( )
    a、int
    b、long
    c、float
    d、double

38、已知ch是字符型变量,则下列赋值语句错误的是( )
    a、ch=’1 2’
    b、ch=’1’ ’2’
    c、ch=’\0’
    d、ch=1 2

39、下列哪组表达式不能交换整数a,b的值( )
    a、int c=a;a=b;b=c;
    b、a=a b;b=b-a;a=a b;b=-b;
    c、a=a-b;b=b a;a=b-a;
    d、a=b;b=a;

40、设int类型的数据长度为2个字节,则unsigned int类型数据的取值范围是( )
    a、-256~255
    b、0~511
    c、0~65535
    d、-32768~32767

41、有以下程序: #include int main() { int d, e; d = 2; e = -1; if ( e) { printf("%d %d\n", d, e); } else if ( d) { printf("%d %d\n", e, e); } else { printf("%d %d\n", d, d); } return 0; } 请问输出的答案是( )
    a、2 -1
    b、3 3
    c、0 0
    d、2 2

42、给定如下代码: int x[4]=; int y[4]={1}; 数组x和y的值为( )
    a、{0,0,0,0},{1,1,1,1}
    b、{0,0,0,0},{1,0,0,0}
    c、{0,无法确定},{1,无法确定}
    d、与编译器有关

43、char a = 'z'-'a' 'a';请问a是( )
    a、‘a’
    b、‘a’
    c、‘z’
    d、‘z’

44、程序开头有“#define a 100” , main 函数中a可以作为变量

45、不同类型的变量在内存中占用存储空间的大小可以不一样。

46、表达式 625%2.5 是合法的c语言表达式。

47、如果s1、s2是两个字符,c语言程序中可以用s1==s2比较这两个字符是否相等。

48、unsigned和void在c语言中都是保留字。

49、有定义语句“char str1[ ]=”hello”,str2[ ]={‘w’,’0’,’r’,’l’,’d’};”,则数组str1和str2都有5个元素

50、数组定义语句“char c[ ]= "hello";”与“char c[ ]={‘h’,’e’,’l’,’l’,’o’};”等价。

51、c语言中,位运算的对象只能是整型或者字符型数据。

52、(基本数据类型和表达式)在c语言程序中中,所有的运算符都采用从左至右的结合方式

53、变量都可以进行自增或自减运算

54、x和y均为int型变量,且x=1,y=2,则表达式1.0 x / y = _____________(取一位小数)。

55、表示整型变量a的不能被5或7整除的c语言表达式是______________;

56、设int a = 3, b = 4, c = 5, x; 计算!(a>b)&&!c||1 = ____________;

57、如何在双引号括起的字符串中表达 ’\’ ? “_______________”

58、设float x=2.5,y=4.7;int a=7;则表达式x a%3*(int)(x y)%2/4的值为__________

59、设int a=2,b=2,c=3;写出下面逻辑表达式的值:!(a>b)&&!c||0=____________

60、设x为整型变量,值为1,则表达式(x&&1)==(x%2)的值为_________

61、设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2则逻辑表达式(m=a > b)&&(n=c > d)运算后,n的值为___________

第四章 输入/输出语句

测试

1、有以下程序: #include int main() { int a=233,b=17; printf("%d\n",a b); return 0; } 程序运行后的输出结果是()。
    a、233
    b、17
    c、250
    d、260

2、有以下程序: #include int main() { int a=233,b=17; printf("%d,",a =b); printf("%d\n",b =a); return 0; } 程序运行后的输出结果是()。
    a、233,250
    b、250,267
    c、233,17
    d、250,17

3、有以下程序: #include int main() { int a=233,b=17; printf("%d, %d\n",a =b,b =a); return 0; } 程序运行后的输出结果是()。
    a、233,17
    b、483,483
    c、250,483
    d、483,250

4、有以下程序: #include int main() { int a=2333; printf("=\n",a); return 0; } 程序运行后的输出结果是()。
    a、2333
    b、233
    c、333
    d、23333

5、有以下程序: #include int main() { int a=233; printf("%o\n",a); return 0; } 程序运行后的输出结果是()。
    a、233
    b、351
    c、e9
    d、0

6、有以下程序: #include int main() { int a=233; scanf("%d",&a); printf("%d\n",a); return 0; } 程序运行后键盘输入2333,输出结果是()。
    a、233
    b、2333
    c、233233
    d、2333233

7、已知a是int型变量,使用scanf函数输入一个整数给变量a,正确的函数调用是()。
    a、scanf("%d",a);
    b、scanf("%c",a);
    c、scanf("%d",&a); 
    d、scanf("%c",&a);

8、已知a是char型变量,下列语句无法给a赋值的是()。
    a、a=getchar();
    b、scanf("%c",&a);
    c、scanf("%d",&a);
    d、gets(a);

9、有以下程序: #include int main() { float a=111,b=222; printf("%f\n",a b); return 0; } 程序运行后的输出结果是()。
    a、333
    b、333.000000
    c、111222
    d、111.222

10、有以下程序: #include int main() { float a=0.12345678,b=0.11111111; printf("%f\n",a b); return 0; } 程序运行后的输出结果是()。
    a、0.23456789
    b、0.234567
    c、0.234568
    d、0.123456

11、有以下程序: #include int main() { float a=11111.11,b=111111.11; printf("%f\n",a b); return 0; } 程序运行后的输出结果是()。
    a、122222.218750
    b、-122222.218750
    c、122222.220000
    d、-122222.220000

12、有以下程序: #include int main() { float a=11111.11; printf("%.3f\n",a); return 0; } 程序运行后的输出结果是()。
    a、11111.11
    b、11111.110
    c、111.11
    d、111.110

13、有以下程序: #include int main() { float a=11111.11; printf("%3.3f\n",a); return 0; } 程序运行后的输出结果是()。
    a、11111.11
    b、11111.110
    c、111.11
    d、111.110

14、有以下程序: #include int main() { float a=11111.11; printf("%.1f\n",a); return 0; } 程序运行后的输出结果是()。
    a、11111.1
    b、11111.11
    c、11111
    d、11111.0

15、有以下程序: #include int main() { float a=11111.11; printf("%e\n",a); return 0; } 程序运行后的输出结果是()。
    a、1.111e 4
    b、1.111e 004
    c、1.111111e 4
    d、1.111111e 004

16、已知a是字符串,下面语句正确的是()。
    a、scanf("%s",a);
    b、scanf("%c",a);
    c、a=gets();
    d、a=putchar();

17、有以下程序: #include int main() { int a,b; scanf("%d %d=",&a,&b); printf("%d\n",a b); return 0; } 程序运行后键盘输入1,2,输出结果是()。
    a、1 2=
    b、3
    c、1 2=3
    d、-858993459

18、有以下程序: #include int main() { printf("%.3s\n","zimba"); return 0; } 程序运行后的输出结果是()
    a、zimba
    b、zim
    c、mba
    d、imb

19、有以下程序: #include int main() { char a[]="afterschool tea time"; char b[]="having a cup of tea"; char c[]="zhenxiang"; printf("%1.5s%7.6s %3.15s\n",a,b,c); return 0; } 程序运行后的输出结果是()。
    a、after having a zhenxiang
    b、afterhaving a zhenxiang
    c、after having zhenxiang
    d、afterhaving zhenxiang

20、有以下程序: #include int main() { int a; scanf("",&a); printf("%d\n",a); return 0; } 程序运行后键盘输入23,输出结果是()。
    a、1
    b、2
    c、3
    d、23

21、有以下程序: #include int main() { int a; scanf("%d",&a); printf("%c\n",’a’ 3); return 0; } 程序运行后键盘输入3,输出结果是()。
    a、a
    b、z3
    c、3
    d、d

22、有以下程序: #include int main() { float a; scanf("%e",&a); printf("%e\n",a); return 0; } 程序运行后键盘输入1.1e 001,输出结果是()。
    a、1.1e 001
    b、1.1000e 001
    c、1.100000e 001
    d、1.1

23、有以下程序: #include int main() { float a; scanf("%e",&a); printf("%e\n",a); return 0; } 以下哪种输入可以让程序输出结果是1.110000e 002()。
    a、11.1
    b、1.110000e 002
    c、1110e-001
    d、abc都可以

24、设有语句int a=3;则执行了语句a =a-=a*a;后,变量a的值是-3。

25、下面程序的最终结果为22. #incldue int main(){ int x=023; printf("%d\n",--x); return 0; }

26、long a=3;int b=4;long c;c=a b;最终c的数据类型为long。

27、c语言中要求运算数必须是整形的运算符是%

28、c语言中,char型数据在内存中的储存形式是ascii码。

29、putchar函数可以向终端输出一个字符串。

30、int x,y;使用x=y=100;将x、y都赋值为100.

31、若x和y均定义为int型,z定义为double型,scanf("%d%lx,%le",&x,&y,&z);不合法。

32、"\\"为合法转义字符。

33、oxffa为c语言合法整数。

34、看下面的代码,填写输出的结果。 #include int main(){ char c1='a',c2='b',c3='c'; printf("a��%c\n",c1,c2,c3); return 0; }

35、看下面的代码,填写输出的结果。 #include int main(){ int a=12,b=15; printf("a=%d%%,b=%d%%\n",a,b); return 0; }

36、scanf函数中的_____格式字符代表用来输入无符号的八进制整数。

37、scanf函数中除了用%d表示输入十进制的整数之外,____格式字符也能表示。(ld、lld除外)

38、scanf函数中要输入2的32次以下的是int,2的64以下次的数字需要用格式字符____。

39、scanf("%s",str)中除了读取回车键会停止读入之外,还有__键也会产生和回车键有着相同的效果。

40、要使printf("___\n",str);输出的字符占3个宽度,在空白处需要填入_____。

41、语句printf("%d\n",12&012);的输出结果为_____。

第四章作业

1、鸡兔同笼问题是个经典问题,你需要知道一个笼子里有n条腿和m个头。由此计算出兔子数量和鸡的数量。

2、三文鱼最近很无聊,她随便在脑子里想了n个数(可以重复)。当然三文鱼一瞬间就能想出n个随机的数字。但是她不知道到底有多少个不同的数字,下面请你帮忙计算她想出了多少个不同的数字。

3、三文鱼抓到了n只老鼠,但是她想玩老鼠而不是吃掉它们。每只老鼠都不想死,他们尽快地想逃跑,每只老鼠都有一个速度ai。三文鱼打算把老鼠们放跑再把它们抓回来。她有t秒时间去捉老鼠并且有每次只能捉一只,然后必须把老鼠放回起始位置才能去捉下一只老鼠。假设三文鱼和老鼠们都只能沿同一条直线同方向跑(可以看作从正向x轴原点处往无穷远跑),三文鱼有速度a并且三文鱼和老鼠们都能保持自己的速度(不会改变)。第0s老鼠们开始逃跑,第1s三文鱼开始出发追老鼠并把它们捉回起始位置。

第五章 c语言程序结构

测试

1、经过以下语句后: if (a) { a ; } 整型变量 a 的值不可能是()。
    a、0
    b、1
    c、2
    d、3

2、有以下程序段: int a = 0; for (int i = 0; i < 10; i ) { a = i; } 执行后 a 的值为()。
    a、0
    b、10
    c、25
    d、45

3、有以下程序段: int a = 9, b = 3; while (a) { a -= b; b = a; } 执行后 a 的值为()。
    a、0
    b、10
    c、25
    d、45

4、有以下程序段: int a,b=3; do { a = 0; a =b; b-=1; }while(b); 执行后 a 的值为()。
    a、0
    b、1
    c、2
    d、3

5、)有以下程序段: int a = 3; switch (a) { case 3: a ; case 4: a ; break; case 5: a ; default: break; } 执行后 a 的值为()。
    a、3
    b、4
    c、5
    d、6

6、有以下程序段: int a = 2, b = 3, c = 4; if (c = a b) { printf("ok!"); } else { printf("no!"); } 输出结果是()。
    a、ok!
    b、no!
    c、程序错误
    d、以上都不对

7、有以下程序段: int a = 3, b = 6; while (b>a) { b -= a; switch (a) { case 3: a -= 2; break; case 4: b = 5; break; case 5: a ; break; default: for (int i = b; i >= a; i--) { a*i; } break; } } 执行后 a 的值为()。
    a、0
    b、1
    c、2
    d、4

8、下列属于分支结构的是( )。
    a、while
    b、switch
    c、for
    d、以上都不是

9、for循环中,能省略的表达式有():
    a、表达式1
    b、表达式2
    c、表达式3
    d、3个都可以

10、下面的程序段中共出现了几处语法错误? int a,b; scanf("%d",a); b = 2a; if(b>0) printf("%b",b);
    a、0
    b、1
    c、2
    d、3

11、有以下程序: #include int main(){ int a=5,d=1,b=0; for (; a < 10 && d < 10;) { b ; if (a % 2 == 0) { a; } else if(d%2==0){ d ; } else { d; } } printf(“%d\n”,b); } 程序运行后的输出结果为( )
    a、5
    b、8
    c、9
    d、12

12、、有以下程序: #include int main() { int d = 1; switch (d) { case 0: printf("%d", d); case 1: printf("%d", d); case 2: printf("%d", d); case 3: printf("%d", d); default: break; } printf("\n"); return 0; } 程序运行后的输出结果为( )
    a、1
    b、11
    c、111
    d、1111

13、有以下程序: #include int main() { int d = 1; switch (d) { case 0: printf("%d", d); break; case 1: printf("%d", d); break; case 2: printf("%d", d); break; case 3: printf("%d", d); break; default: break; } printf("\n"); return 0; } 程序运行后的输出结果为( )
    a、1
    b、11
    c、111
    d、1111

14、有以下程序: #include int main(){ int a=11,b=0; while(a%2?a--:b &&a--,a); printf(“%d\n”,b); return 0; } 程序运行后的输出结果为( )
    a、0
    b、5
    c、6
    d、11

15、以下可以将任意一个两位整数n的个位数与十位数对换的表达式为( )
    a、(n-n/10*10)*10 n/10
    b、n-n/10*10 n/10
    c、n/10 (n-n/10)
    d、(n-n/10)*10 n/10

16、有以下程序: #include int main() { int a, b, c[10] = { 0,1,2,3,4,5,6,7,8,9 }; for (a = 0; a<10; a) { for (b = 0; b<5 - a; b){ if (c[b] < c[b 1]) { c[b] = c[b 1]; c[b 1] -= c[b]; c[b] = c[b 1]; c[b 1] = -c[b 1]; } } } for (a = 0; a<10; a) { printf("%d", c[a]); } printf("\n"); return 0; } 程序运行后的输出结果为( )
    a、0123456789
    b、9876543210
    c、6543210789
    d、5432106789

17、有以下程序: #include int main() { int a, b, c; a = 153, b = 369; while (b) { c = a % b; a = b; b = c; } printf("%d\n", a); return 0; } 程序运行后的输出结果为( )
    a、3
    b、6
    c、9
    d、1

18、以下不属于循环语句的是()
    a、for
    b、while
    c、do...while
    d、switch

19、有以下程序: #include int main() { int i , a = 1; for (i = 1; i <= 10; i ); a = i; printf("%d\n", a); } 程序运行后的输出结果是()
    a、12
    b、55
    c、56
    d、9

20、有以下程序: #include int main() { int sum=0; int i = 1; while (i <= 10) sum = i ; printf("%d %d\n", sum, i); } 程序运行后的输出结果是()
    a、60,10
    b、55,11
    c、65,11
    d、65,10

21、下面哪个控制语句可以结束单次循环语句()
    a、continue
    b、break
    c、switch
    d、continues

22、c语言中用于结构化程序设计的三种基本结 构是()
    a、顺序结构、选择结构、循环结构
    b、if、switch、break
    c、for、while、do-while
    d、if、for、continue

23、有以下程序: #include int main() { int a = 1; if (a < 1) printf("我考了100分\n"); else if (a == 0) printf("我考了90分\n"); else if (a == 2) printf("打扰了\n"); else printf("我是班级第一\n"); } 程序运行后的输出结果是()
    a、我考了100分
    b、我考了90分
    c、打扰了
    d、我是班级第一

24、有以下程序: #include int main() { int flag = 0; if (flag = 1) { if (flag != 0) printf("hello world\n"); else printf("hi world\n"); } else if (flag) printf("hhhh\n"); else printf("good bye\n"); } 程序运行后的输出结果是()
    a、hello world
    b、hi world
    c、hhhh
    d、good bye

25、下列代码不会陷入死循环的是()
    a、for (int i = 1; i; i );
    b、while (1);
    c、int i=1; do{i ;} while (i);
    d、int i = 0;while (i);

26、有以下程序: #include int main() { int i = 0, s = 0; do { if (i % 2) { i ; continue; } i ; s = i; } while (i < 7); printf("%d\n", s); } 程序运行后的输出结果是()
    a、12
    b、16
    c、28
    d、21

27、有以下程序: #include int main() { int a = 5, b = 4, c = 3, d = 2; if (a > b > c) printf("%d\n", d); else if ((c - 1 >= d) == 1) printf("%d\n", d 1); else printf("%d\n", d 2); } 程序运行后的输出结果是()
    a、3
    b、2
    c、5
    d、4

28、有以下程序: #include int main() { int a=2; switch (a) { case 1: printf("1"); case 2: printf("2"); case 3: printf("3"); default: printf("4"); break; } } 程序运行后的输出结果是()
    a、234
    b、2
    c、23
    d、1234

29、有以下程序: #include int main() { int sum = 0; for (int i = 1; i <= 10; i ) for (int j = 1; j <= 10; j = i) sum = i j; printf("%d\n", sum); } 程序运行后的输出结果是()
    a、234
    b、287
    c、250
    d、1100

30、有以下程序: #include int main() { for (int i = 1; i <= 10; i ) { if (i % 2) { printf("h"); continue; } if(!(i%2)) printf("h"); } } 程序运行后的输出结果是()
    a、hhhhhhhhhh
    b、hhhhhhhhh
    c、hhhhhhhh
    d、hhhhhhhhhhh

31、c语言允许一行写几个语句,也允许一个语句拆开写在几行上,书写格式无固定要求。

32、switch 后面括号内的表达式和 case 后的常量表达式,可以是整型表达式或字符型表达式。

33、for语句的循环控制部分的三个成分都是表达式,三个部分之间都用,隔开。

34、break语句可以中止执行switch或循环语句。

35、;是一个空语句。

36、while (1); 会死循环

37、switch语句中case的表达式常量可以相同

38、continues可以结束本次循环语句

39、break语句对for语句起作用

40、绘制流程图可以使程序编制人员的思路清晰,从而避免或减少编写程序时的错误

41、以下程序运行后的输出结果是 。 #include int main() { int a = 0, b = 3, c = 5; if (c = a b) printf("yes\n"); else printf("no\n"); }

42、执行以下程序后,输出‘#’号的个数是 。 #include int main() { int i, j; for (i = 1; i < 4; i ) for (j = 2; j <= i; j ) putchar('#'); }

43、以下程序运行后的输出结果是 。 #include int main() { int sum=0; for(int i=1;i<=10;i ) sum*=i; printf("%d\n",sum); }

44、以下程序运行后的输出结果是 。 #include int main() { int sum = 0; printf("%d\n",sum!=0?1:0); }

45、以下程序运行后的输出结果是 。 #include int main() { int sum = 0; for(int i=1;i<=5;i ) for(int j=1;j<=5;j ) sum ; printf("%d\n",sum); }

46、以下程序运行后的输出结果是 。 #include int main() { int a = 1,b=2,c =5; if(a b-c==3) printf("hello world\n"); else a ; printf("%d\n",a b c); }

47、7、以下程序运行后的输出结果是 。 #include int main() { int a = 1; switch (a) { case 2: printf("3"); case 1: printf("h"); case 3: printf("hh"); } }

48、7、以下程序运行后的输出结果是 。 #include int main() { int i=0,sum = 0; do { i = i%2?3:1; sum =i; }while(i<=10); printf("%d\n",sum); }

49、7、以下程序运行后的输出结果是 。 #include int main() { int a = 2,b = 20,res = 1; int mod = 25; while(b) { if(b&1) res=a*res%mod; b>>=1; a=a*a%mod; } printf("%d\n",res); }

50、7、以下程序运行后的输出结果是 。 #include int main() { int a=1,b=2; if(a-b?a^b:a&b) a^=b,b^=a,a^=b; else b^=a;a^=b;b^=a; printf("%d\n", a b ); }

第5章oj作业

1、古希腊数学家毕达哥拉斯在自然数研究中发现,220的所有真约数(即不是自身的约数)之和为: 1 2 4 5 10 11 20 22 44 55 110=284。 而284的所有真约数为1、2、4、71、 142,加起来恰好为220。人们对这样的数感到很惊奇,并称之为亲和数。一般地讲,如果两个数中任何一个数都是另一个数的真约数之和,则这两个数就是亲和数。 请编写一个程序,判断给定的两个数是否是亲和数。

2、给定一个十进制整数n,定义s(n)为n每一位数字的和。例如:s(123)=1 2 3=6,s(0)=0。 你的任务是找到2个整数a,b(0< ab="n" ab="n),使得s(a) s(b)的值在所有的情况中最大。" >

3、试判断接下来最近的哪一年里的同一个日子,和今天的星期数一样?比如今天是8月6日,星期日。下一个也是星期日的8月6日发生在2023年。

第六章 数组

测试

1、在定义int a[3][3]之后,对a的引用正确的是:
    a、a[2][3]
    b、a[2,0]
    c、a[2][1]
    d、a[3][1]

2、在执行语句:int a[][3]={1,2,3,4,5,6}后,a[1][1]的值是:
    a、5
    b、4
    c、2
    d、1

3、当接受用户输入的含有空格的字符串时,应使用____函数。
    a、gets()
    b、getchar()
    c、scanf()
    d、printf()

4、以下关于数组的描述正确的是:
    a、.数组的大小是固定的,但可以有不同类型的数组元素。
    b、数组的大小是可变的,且必须有相同类型的数组元素。
    c、数组的大小是固定的,且必须有相同类型的数组元素。
    d、数组的大小是可变的,但可以有不同类型的数组元素。

5、若有以下定义和语句,则输出结果是: char a[16]=”hello baby!” printf(“%d\n”,strlen(a));
    a、12
    b、11
    c、10
    d、16

6、定义char a[12]=”ni hao ya!”,输出a[7]=?
    a、a
    b、y
    c、n
    d、o

7、能对一维数组正确初始化的语句是
    a、int a[6]={8*1}
    b、int a[6]={1,,,3}
    c、int a[6]={}
    d、int a[6]=(0,0,0)

8、定义char s[ ]={"boy"},t; 执行下面语句段后输出结果是( )。 s[0]=s[2]; s[2]=s[0]; s[1]=s[3]; s[3]=s[1]; printf("%c,%s \n", s[0], s);
    a、b,boy
    b、y,y
    c、y,yoy
    d、y,yob

9、数组定义为 int a[3][2]={1,2,3,4,5},下列表述中正确的是()。
    a、a[3][2]的值为5
    b、a[1][1] 1的值为5
    c、a[2][1]的值不确定
    d、a[0][0]的值为0

10、定义char s[4]={"max"},t; 执行下面语句段后输出结果是 t=s[0];s[0]=s[1];s[1]=s[2]; s[2]=s[3]; s[3]=t; printf("%s,%c \n", s, s[3]);
    a、axm,\0
    b、axm,m
    c、ax m,m
    d、ax,m

11、定义语句:int a[3][2]={0,1,2,3,4,5}; 则下列对a数组元素正确引用的是( )。
    a、a[3][2]
    b、a[2][a[0][0]]
    c、a[2][3]
    d、a[2][2]

12、以下不能正确进行字符串赋初值的语句是( )
    a、char str[ ]= "good!";
    b、char str[5]= "good!"
    c、char *str="good!";
    d、char str[5]={ 'g','o','o','d'};

13、有定义语句int a[5],i;,输入数组a的所有元素的语句应为( )。
    a、scanf("%d%d%d%d%d",a[5]);
    b、scanf("%d",a);
    c、for(i=0;i<5;i )scanf("%d",a i);
    d、for(i=0;i<5;i ) scanf("%d",a[i]);

14、若有定义语句:int a[10];则下列对a中数组元素正确引用的是( )。
    a、a[10]
    b、a(2)
    c、a[2.5]
    d、a[10/3-2]

15、设有定义语句char s[ ]="hello";,则s[5]的值是( )。
    a、未知字符
    b、'0'
    c、'\0'
    d、.'e'

16、以下数组定义中错误的是( )。
    a、int x[][3]=;
    b、int x[2][3]={{1,2},{3,4},{5,6}};
    c、int x[][3]={{1,2,3},{4,5,6}};
    d、int x[2][3]={1,2,3,4,5,6};

17、下面程序段的输出结果是( )。 char a[10]= "abcd"; char b[4]= "efg"; strcat(a,b); printf(“%s”,a);
    a、abcdefg
    b、abcd
    c、efg
    d、efgabcd

18、若有定义int b[3][4]=;则下面正确的叙述为( )。
    a、只有元素b[0][0] 可得到初值0
    b、此定义语句不正确
    c、数组b中各元素都可得到初值,但其值不一定为0
    d、数组b中每个元素均可得到初值0

19、若有定义int a[4][5];,则在a[2][2] 前的元素个数为()。
    a、12
    b、13
    c、11
    d、10

20、以下定义语句中,错误的是
    a、int a[]={1,2,3};
    b、char s[]={"test"};
    c、char s[100]={"test"};
    d、int n=5,a[n];

21、以下一维数组a的正确定义是
    a、int a(10);
    b、int n=10,a[n];
    c、int n; scanf("%d",&n); int a[n];
    d、#define size 10 int a[size];

22、以下给字符数组str定义和赋值正确的是
    a、char str[10]; str={"china!"};
    b、char str[ ]={"china!"};
    c、char str[10]; strcpy( str,"abcdefghijkl");
    d、char str[10]={"abcdefghijkl"};

23、执行下面的程序段后: int k=3,s[2]; s[0]=k; k=s[1]*10; 变量k中的值为______。
    a、不定值
    b、33
    c、30
    d、10

24、执行下面的程序段后: int a[6]; memset(a,2,sizeof(a)); a[2]的值为______。
    a、2
    b、不定值
    c、程序错误
    d、以上都不是

25、执行下面的程序段后: char in[6] = "13412"; int i,f=0; for(i=0;i<6;i ) { f =in[i]; } printf("%d",f); 程序的输出为______。
    a、11
    b、251
    c、不定值
    d、程序错误

26、有以下程序: int main() { int aa[3][3]={{2},{4},{6}}; int i,p=aa[0][0]; for(i=0;i<2;i ) { if(i==0) aa[i][i 1]=p 1; else p; printf("%d",p); } } 程序的输出是________。
    a、23
    b、26
    c、3
    d、36

27、以下程序输出a数组中的最小值及其下标 int main() { int i,p=0,a[10]; for(i=0;i<10;i ) { scanf("%d",&a[i]); } for(i=1;i<10;i ) { if(a[i]    a、i=p
    b、a[p]=a[i]
    c、p=j
    d、p=i

28、有如下程序 int main() { int n[5]={0,0,0},i,k=3; for(i=0;i    a、不定值
    b、4
    c、2
    d、0

29、一个数组只允许存储同种类型的变量。

30、如果在对数组进行初始化时,给定的数据元素个数比数组元素个数少时,多余的数组元素会被自动初始化为最后一个给定元素的值

31、数组的名称其实是数组在内存中的首地址

32、当数组名作为参数被传递给某个函数时,原数组中的元素的值可能被修改

33、数组名仅仅是一个数组的名字符号,除此之外没有其它任何含义。

34、若a[10]={1,2,3,4,5,6,7,8,9,10},那么a[1]=1

35、若有定义“int a[5][6];”,则在数组元素a[2][4]前有16个元素。

36、若有定义语句“int a[10];”则a[10] 是合法的数组元素。

37、若有定义语句“int a[10];”则a[10-7/2] 是合法的数组元素。

38、数组元素的下标必须是整数,不能用实数。

39、字符串结束标志为

40、数组中有多个‘\0’时,遇 第( )个结束

41、strcmp(字符串1,字符串2),若字符串1== 字符串2, 返回( )

42、char s[10]={‘a’,‘’,‘b’,‘c’,‘’,‘d’}; strlen(s)的值为( )

43、数组是c语言中的一种复合数据类型,是( )(填相同或不同)数据类型的有序集合

44、数组a[2][2]={1,2,3,4},a[1][1] 2=( )

第6章oj作业

1、给定一个数组,里面有n个元素,分别为a[1]、a[2]、...、a[n]。从1-n中寻找一个分界点m,使得a[1]、...、a[m]严格递增,a[m]、...、a[n]严格递减。严格递增表示任意i>j,a[i]>a[j];严格递减表示任意i>j,a[i]

2、在一个字符串中,从前向后查找第一个子串"bob"出现的位置。(不区分大小写)

3、有n个编号为1-n的人按编号围成一圈坐在地上玩游戏,从第一个人开始报数,数到的第k个人淘汰,从下一个人继续从1开始报数,输出最后剩下的人的编号

第七章 函数

测试

1、以下哪种类型的函数一定不能带返回值( )
    a、int
    b、void
    c、double
    d、float

2、以下函数返回的值为( ) int fun(int a, int b,int c) { a = b; b = a; c = b; c = a ; return c; }
    a、2*a
    b、2*b
    c、a b
    d、a c

3、以下程序输出的答案为( ) #include void swap(int a, int b) { int t; t = a; a = b; b = t; } int main() { int a = 1, b = 2; swap(a, b); a *= a; printf("%d\n", a); return 0; }
    a、1
    b、2
    c、4
    d、3

4、以下程序输出的答案为( ) #include int fun(int a, int b) { int t; while (b) { t = b; b = a%b; a = t; } return a; } int main() { int a=4, b=6,ans; ans = fun(a, b); printf("%d\n", ans); return 0; }
    a、6
    b、4
    c、3
    d、2

5、当一个子函数已经被主函数调用但是该函数没有return语句时,该函数会()
    a、不执行
    b、导致整个程序不能运行
    c、执行该函数无返回值
    d、执行该函数并返回0

6、以下哪种关于主调函数与被调函数之间的关系说法是正确的( )
    a、被调函数可以在主调函数内
    b、被调函数一定要放在主调函数后
    c、被调函数一定要放在主调函数前
    d、被调函数被主调函数调用前不一定要先声明

7、以下有哪个函数能交换在主函数内的实参的值() (1).void swap(int a,int b) { int temp=a; a=b; b=temp; } (2) void swap(int a,int b) { a=b; b=a; }
    a、(1)
    b、(2)
    c、(1)(2)
    d、无

8、以下程序调用函数的顺序为() #include int f1(int a, int b); int f2(int a, int b); int f3(int a, int b); int f4(int a, int b); int main() { int a, b,ans; a = 1; b = 2; ans = f1(a, b); } int f1(int a, int b) { return f2(a,b); } int f2(int a, int b) { if (a>b) return f3(a, b); return f4(a, b); } int f3(int a, int b) { return a - b; } int f4(int a, int b) { return b - a; }
    a、f1->f2->f3->f4
    b、f1->f2->f3
    c、f1->f2->f4
    d、f4->f3->f2->f1

9、关于嵌套函数以下说法不正确的是()
    a、函数可以嵌套定义
    b、函数之间的关系是平行的
    c、函数可以嵌套使用
    d、c语言函数定义是相互独立的

10、以下函数被调用时,返回值为() #include int fun(int a) { if (a == 1||a == 0) return 1; return a*fun(a - 1); } int main() { int a ,ans; ans = fun(a); return 0; }
    a、a
    b、a*a
    c、aa
    d、a!

11、以下哪种函数调用不是递归()
    a、f1->f2->f1
    b、f1->f1
    c、f1->f2->f3...->fn->f1
    d、f1->f2->f3->...->fn

12、阅读以下程序,以下说法正确的是() #include void swap(int a[]) { int temp = a[0]; a[0] = a[1]; a[1] = a[0]; } int main() { int a[2] = { 0,1 }; swap(a); return 0; }
    a、swap()函数形参出错,应写为void swap(int a[2])
    b、swap()函数调用时出错,应写为swap(a[2])
    c、该程序未出错,并起到了交换a[0]、a[1]值的作用
    d、该程序为出错,但并未起到交换a[0]、a[1]值的作用

13、当数组作为参数传递时,以下说法正确的是()
    a、传递的是该数组的首地址
    b、传递的是该数组第一个元素的值
    c、该传递是单向的
    d、传递的是所有参数的值

14、将a[5][5]作为实参传递给函数void fun()时,fun()函数的形参写法正确的是( )
    a、int array[][]
    b、int array[][10]
    c、int array[5][]
    d、int array[5][3]

15、局部变量是指( )
    a、定义在函数内部的变量
    b、定义在函数外的变量
    c、定义在函数形参表中的变量
    d、整个程序都能使用的变量

16、以下程序执行时主函数内的a的值为( ) #include int fun(int b) { int a; a = b^b; return a; } int main() { int a, b, ans; a = b = 1; ans = fun(b); return 0; } 以下程序执行时主函数内的a的值为( ) #include int fun(int b) { int a; a = b^b; return a; } int main() { int a, b, ans; a = b = 1; ans = fun(b); return 0; }
    a、3
    b、2
    c、1
    d、0

17、以下哪个变量属于全局变量( ) #include int a; int fun(int b) { a = b^b; return a; } int main() { int b,ans; a = b = 1; ans = fun(b); return 0; }
    a、a
    b、b
    c、a和b
    d、ans

18、阅读以下程序,a的值为#include int a; int f1(int b, int c, int d); int f2(int b, int c); int f3(int b); int f1(int b, int c, int d) { return f2(b*c, d); } int f2(int b, int c) { return f3(b*c); } int f3(int b) { a = b; return a == 32; } int main() { int b = 2, c = 4, d = 8, ans; a = 1; ans = f1(b, c, d); return 0; }
    a、1
    b、2
    c、32
    d、64

19、以下哪个声明符是静态变量声明符( )
    a、auto
    b、static
    c、extern
    d、register

20、int a,b=1与哪种声明等价( )
    a、float a,b=1.0
    b、static int a,b=1
    c、float a,b=1
    d、auto int a,b=1

21、以下哪个声明符可以声明外部函数( )
    a、auto
    b、register
    c、extern
    d、static

22、在c语言中以下不正确的说法是:( )
    a、实参可以是常量、变量或表达式
    b、形参可以是常量、变量或表达式
    c、实参可以为任意类型
    d、形参应与其对应的实参类型一致

23、以下正确的说法是:( )
    a、函数的定义可以嵌套,但函数的调用不可以嵌套
    b、函数的定义不可以嵌套,但函数的调用可嵌套
    c、函数的定义和调用均不可以嵌套
    d、函数的定义和调用均可以嵌套

24、在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是:( )
    a、地址传递
    b、单向值传递
    c、由实参传给形参,再由形参传回实参
    d、传递方式由用户指定

25、关于函数参数,说法正确的是( )。
    a、实参与其对应的形参各自占用独立的内存单元
    b、实参与其对应的形参共同占用一个内存单元
    c、只有当实参和形参同名时才占用同一个内存单元
    d、形参是虚拟的,不占用内存单元

26、c语言中,凡未指定存储类别的局部变量的隐含存储类别是:
    a、自动(auto)
    b、静态(static)
    c、外部(extern)
    d、寄存器(register)

27、c语言中规定函数的返回值的类型是由( )
    a、return语句中的表达式类型所决定
    b、调用该函数时的主调用函数类型所决定
    c、调用该函数时系统临时决定
    d、在定义该函数时所指定的类型所决定

28、以下关于函数叙述中,错误的是( ).
    a、函数未被调用时,系统将不为形参分配内存单元
    b、实参与形参的个数必须相等,且实参与形参的类型必须对应一致
    c、当形参是变量时,实参可以是常量、变量或表达式
    d、如函数调用时,实参与形参都为变量,则这两个变量不可能共享同一内存空间

29、以下正确的函数定义形式是( )
    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);

30、若用数组名作为函数调用的实参,则传递给形参的是
    a、数组第一个元素的地址
    b、数组的第一个元素的值
    c、数组中所有元素的值
    d、数组元素的个数

31、int类型的函数一定要返回一个值

32、主调函数的函数调用语句的函数名后面圆括号中的表达式称为“实际参数”

33、一个函数可以有多条return语句

34、改变形参的值会改变实参的值

35、在主函数中调用f1()、f2()、f3()、f4()属于函数的嵌套使用

36、以下函数是一个正确的递归函数 ( ) int fun(int n) { return n*fun(n - 1); }

37、数组作为函数实参传递时,若在函数内改变数组所有元素的值,在主调函数中,该数组的所有元素值也都会被改变

38、以下程序中a的值为8 #include int a = 3; int main() { int a = 8; return 0; }

39、static是静态变量声明符

40、分析以下程序 func(int *a,int *b) { int *temp=a; a=b; b=temp; } int main() { int x,y; x=10; y=20; func(x,y); printf((“%d,%d”,x,y); return 0 ; }

第7章oj作业

1、bob和peter都喜欢玩数字游戏,终于有一天,他们开始研究最大公因数,他们互相出题,由对方答。 现在轮到bob出题,bob这个人不厚道,出的题不仅是关于两个数的最大公因数,而是两个或两个以上,这可难倒了我们的小peter,于是他向你求助,希望你能帮他设计一个程序,能迅速答出bob的难题

2、九连环是中国传统民间智力玩具,以金属丝制成9个圆环,将圆环套装在横板或各式框架上,并贯以环柄。 把玩时,按照一定的程序反复操作,可使9个圆环分别解开,或合二为一。给你一个n连环,求解该连环所需最少的步数。

3、小黑最喜欢数兔子了,小兔子的成熟期为3个月,一对成熟的兔子一个月可以生两对小兔子,但小白总喜欢刁难小黑,小白知道小黑喜欢数兔子后,一直问小黑假如第一个月有1对小兔子,那么第n个月共有几只小兔子。但是聪明的小黑肯定不会被这个难倒啊,所以他准备写一个递归的程序来解决问题。假如你是小黑,你会怎么写这个程序呢?

第八章 编译预处理

测试

1、有以下程序: #include #define hello 100 int main() { printf("%d\n",hello); return 0; } 程序运行后的输出结果是()。
    a、10
    b、15
    c、100
    d、150

2、有以下程序: #include #define a 2 #define b a 1 int main() { printf("%d\n",b); return 0; } 程序运行后的输出结果是()。
    a、1
    b、2
    c、3
    d、编译错误

3、有以下程序: #include #define min(x,y) (x)<(y)?(x):(y) int main() { int k=min(1,2); printf("%d\n",k); return 0; } 程序运行后的输出结果是()。
    a、1
    b、2
    c、12
    d、编译错误

4、有以下程序: #include #define min(x,y) (x)<(y)?(x):(y) int main() { int i=10,j=15,k; k=10*min(i,j); printf("%d\n",k); return 0; } 程序运行后的输出结果是()。
    a、10
    b、15
    c、100
    d、150

5、有以下程序: #include #define mod(x,y) x%y int main() { int a=15,b=100; int z=mod(b,a); printf("%d\n",z ); return 0; } 程序运行后的输出结果是()。
    a、10
    b、11
    c、15
    d、16

6、有以下程序: #include #define x 5 #define y x 1 #define z y*x/2 int main() { printf("%d\n",z); return 0; } 程序运行后的输出结果是()。
    a、5
    b、6
    c、7
    d、12

7、#define能作简单的替代,用宏替代计算多项式4*x*x 3*x 2之值的函数f,正确的宏定义是
    a、#define f (4*x*x 3*x 2)
    b、#define  (4*x*x 3*x 2)  f
    c、#define f(x) (4*x*x 3*x 2)
    d、#define (4*x*x 3*x 2) f(x)

8、有以下程序: #include #define f(x) x*x int main() { printf("%d\n",f(1 2) 3); return 0; } 程序运行后的输出结果是()。
    a、5
    b、8
    c、10
    d、12

9、有以下程序: #include #define f(x) (x)*x int main() { printf("%d\n",f(1 2) 3); return 0; } 程序运行后的输出结果是()。
    a、5
    b、8
    c、10
    d、12

10、有以下程序: #include #define f(x) (x)*(x) int main() { printf("%d\n",f(1 2) 3); return 0; } 程序运行后的输出结果是()。
    a、5
    b、8
    c、10
    d、12

11、有以下程序: #include #define f(a,b) {int t;t=a;a=b;b=t;} int main() { int x=1,y=2; f(x,y); printf("%d %d\n",x,y); return 0; } 程序运行后的输出结果是()。
    a、1 2
    b、2 1
    c、1 1
    d、2 2

12、有以下程序: #include #define f(a,b) for(int i=a;i    a、34
    b、345
    c、45
    d、4

13、有以下程序: #include #define f(x) x*(x 1) int main() { int a=2,b=3; printf("%d",f(1 a b)); return 0; } 程序运行后的输出结果是()。
    a、18
    b、24
    c、36
    d、42

14、有以下程序: #include #define f(x) x*(x 1) int main() { int a=2,b=3; printf("%d",f(1 (a b))); return 0; } 程序运行后的输出结果是()。
    a、18
    b、24
    c、36
    d、42

15、c语言提供的预处理功能包括条件编译,其基本形式为:   #xxx yyy     zzz    #endif   这里xxx可以是()
    a、define
    b、ifdef或define
    c、ifdef或ifndef或define
    d、ifdef或ifndef或if

16、有以下程序: #include #define k 5.5 #define f(x) k*x*x int main() { int a=1,b=2; printf("%.1f\n",f(a b)); return 0; } 程序运行后的输出结果是()。
    a、9.5
    b、12.5
    c、27.5
    d、33.5

17、有以下程序: #include #define k 5.5 #define f(x) k*(x*x) int main() { int a=1,b=2; printf("%.1f\n",f(a b)); return 0; } 程序运行后的输出结果是()。
    a、9.5
    b、12.5
    c、27.5
    d、33.5

18、编译预处理主要有三种功能:宏定义、文件包含和条件编译

19、预处理命令行都必须以#号开始

20、预处理命令都在编译时处理完毕

21、预处理具有一定的计算的功能

22、可以用#undef命令终止宏定义的作用域

23、宏替换时先求出实参表达式的值,然后代入形参运算求值

24、宏定义语句中宏名后的参数称为实参而在程序中宏名后的参数称为虚参

25、#define add 2 4   执行赋值语句:v=add*2;后,v的值是12

26、在文件包含预处理语句的使用形式中,当#include后面的文件名用双引号括起时,不检索源文件所在的目录而直接按系统标准方式检索文件目录

27、在文件包含预处理语句的使用形式中,当#include后面的文件名用尖括号括起时,不检索源文件所在的目录而直接按系统标准方式检索文件目录

第九章 指针

测试

1、若有以下定义和语句: int s[4][5],(*ps)[5]; ps=s; 则对s数组元素的正确引用形式是? 若有以下定义和语句: int s[4][5],(*ps)[5]; ps=s; 则对s数组元素的正确引用形式是?
    a、ps 1
    b、*(ps 3)
    c、ps[0][2]
    d、*(ps 1) 3

2、有如下代码段: #include #include int a=0; int *p; int main(){ float b; double *dp=(double*)malloc(sizeof(double)) } 问在内存中存储在同一存储区的变量为
    a、a,*dp
    b、a,b
    c、b,dp
    d、p,dp

3、若有说明:int a=2,*p=&a,*q=p; 则下列赋值语句非法的是
    a、p=q
    b、*p=*q
    c、a=*q
    d、q=a

4、若有说明:int a[]={1,3},*p=a;则printf("%d",*a );的输出结果为
    a、a的地址
    b、1
    c、2
    d、3

5、变量的指针,其含义是指该变量的
    a、值
    b、地址
    c、名
    d、一个标志

6、若有语句:int *p,a=10;p=&a; 下列均代表地址的一组选项是
    a、a,p,*&a
    b、&*a,&a,*p
    c、*&p,*p,&a
    d、&a,&*p,p

7、以下程序调用scanf函数给变量a输入数值的方法是错误的,其错误原因是? #include int main(){ int *p,*q,a,b; p=&a; printf("input a:"); scanf("%d",*p); ... }
    a、*p表示的是指针变量p的地址
    b、*p表示的是变量a的值,而不是变量a的地址
    c、*p表示的是指针变量p的值
    d、*p只能用来说明p是一个变量指针

8、下列判断正确的是?
    a、char *s="zjgsu"; 等价于 char *s;*s="zjgsu"
    b、char s[10]={"zjgsu"}; 等价于 char s[10];s[10]={"zjgsu"};
    c、char *s="zjgsu"; 等价于 char *s;s="zjgsu"
    d、char s[10]="zjgsu",t[10]="zjgsu"; 等价于 char s[10]=t[10]="zjgsu";

9、设 char=*s="zj\020gsu\n"; 则指针变量s指向的字符串所占的字节数是?
    a、3
    b、11
    c、10
    d、8

10、有如下程序段: char *s="zj\020gsu\n"; for(;*s!='\0';s ){ printf("*") } 则该程序的输出结果为
    a、作业答案查询*
    b、作业答案查询****
    c、作业答案查询***
    d、作业答案查询**

11、下列赋值语句无法赋值成功的是
    a、char str[5]="zjgsu";
    b、char *str="zjgsu";
    c、char str[]="zjgsu";
    d、char str[5]={'s','c','i','e'};

12、若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的是
    a、p=2*(int*)malloc(sizeof(int));
    b、p=(int*)malloc(2*sizeof(int));
    c、p=(int*)malloc(8);
    d、p=(int*)calloc(2,sizeof(int));

13、若已定义char s[10]; 则在下面表达式中不表示s[1]地址的是
    a、s 1
    b、s
    c、&s[0] 1
    d、&s[1]

14、执行以下程序后,a的值为? #include int main(){ int a,k=4,m=6,*p=&k,*q=&m; a=p==&m; }
    a、-1
    b、1
    c、0
    d、4

15、执行以下程序后,b的值为? #include int main(){ int b,k=4,m=6,*p=&k,*q=&m; b=(-*p)/(*q) 7; }
    a、5
    b、6
    c、7
    d、10

16、有以下程序: #include int main(){ int a=1,b=3,c=5; int *p1=&a,*p2=&b,*p=&c; *p=*p1**p2; printf("%d\n",c); } 程序运行后的输出结果是
    a、1
    b、2
    c、3
    d、4

17、在16位系统上,若有定义int a[]=(10,20,30},*p=&a;当执行p ; 后,下列说法错误的是?
    a、p向高地址移动了一个字节
    b、p向高地址移动了一个存储单元
    c、p向高地址移动了两个字节
    d、p与a 1等价

18、有以下程序段: int a[10]={1,2,3,4,5,,6,7,8,9,10},*p=&a[2],b;b=p[4]; b的值为
    a、4
    b、5
    c、6
    d、7

19、有以下程序: void fun(char *c,int d){ *c=*c 1; d=d 1; printf ("%c,%c\n",*c,d); } void main(){ char a=’a’,b=’a’; fun(&b,a); printf("%c,%c\n",a,b); } 程序运行后的输出结果是
    a、b,a,b,a
    b、a,b,a,b
    c、a,b,a,b
    d、b,b,a,b

20、若有以下程序: void main(){ char *a[3]={"i","love","zjgsu"}; char **ptr=a; printf("%c %s",*(*(a 2) 1),*(ptr 1)); } 这段程序的输出是
    a、i l
    b、o o
    c、o zjgsu
    d、j love

21、有如下代码段: char *c[]={"hello","new","world","sayhi"}; char **cp[]={c 3,c 2,c 1,c}; char ***cpp=cp; int main(){ printf("%s",** cpp); printf("%s",*--* cpp 3); printf("%s",*cpp[-2] 3); printf("%s",cpp[-1][-1] 1); } 则该程序的输出结果为
    a、world,lo,sayhi,ew
    b、world,lo,hi,new
    c、new,lo,sayhi,ew
    d、world,lo,hi,ew

22、有如下定义:char *s="asdas\0accnov\0"; 则printf("%d",strlen(s));的输出为
    a、5
    b、6
    c、15
    d、13

23、若有说明:int i,j=7,*p=&i;则与i=j;等价的语句是
    a、i=*p;
    b、*p=*&j;
    c、i=&j;
    d、i=**p;

24、int j,*p=&j;要实现j的内容加10,错误的是
    a、*p=*&j 10
    b、j=*p 10
    c、*p=*p 10
    d、*p=&j 10

25、若有以下定义char s[]={"12345"},*p=s;则下列表达式中错误的是
    a、*(p 1)
    b、*(s 2)
    c、p="abc"
    d、s="abc"

26、若有如下定义和语句,则输出结果是? int **p,*p,a=10,b=20; pp=&p;p=&a;p=&b; printf("%d,%d\n",*p,**p);
    a、10,20
    b、10,10
    c、20,10
    d、20,20

27、设有定义语句:int (*ptr)[10]; 其中的ptr是
    a、10个指向整型变量的指针
    b、指向10个整型变量的函数指针
    c、一个指向具有10个元素的一维数组的指针
    d、具有10个指针元素的一维数组

28、以下程序的输出结果为? void prt(int *x,int *y,int *z){ printf("%d,%d,%d", *x, *y,*(z )); } int main(){ int a=10,c=20,b=40; prt(&a,&b,&c); prt(&a,&b,&c); }
    a、11,42,31 12,22,41
    b、11,41,20 12,42,20
    c、11,21,40 11,21,41
    d、11,21,40 12,22,40

29、若有以下定义语句: int a[]={1,2,3,4,5,6,7,8,9,0};*p=a; 则值为3的表达式是
    a、p =2,*( p)
    b、p =2,*p
    c、p =3,*p--
    d、p =2, *p

30、程序中对fun函数有如下声明: void *fun(); 此声明的含义是
    a、fun函数无返回值
    b、fun函数的返回值可以是任意的数据类型
    c、fun函数的返回值是无值型的指针类型
    d、指针fun()指向一个函数

31、为避免内存泄漏,使用malloc函数动态申请的内存空间在使用完之后应及时调用free()函数释放内存空间。

32、c库中有标准的malloc和free函数,它们的使用不受分配、释放之间顺序的限制。

33、函数指针和变量指针一样,可以进行诸如fp±i,fp1-fp2,fp 等运算。

34、已知一级指针需要4个字节的存储空间,则二级指针需要8个字节存储空间。

35、已知int *p;则p 使p向后移动了一个字节。

36、设有以下定义和语句: int a[3][2]={10,20,30,40,50,60},(*p)[2]; p=a; 则*(*(p 2) 1)的值为

37、若有如下说明和语句,则在执行for语句后,*(*(pt 1) 2)表示的数组元素是 int t[3][3]={1,2,3,4,5,6,7,8,9},*pt[3],k; for(k=0;k<3;k ) pt[k]=&t[k][0];

38、若有以下定义: int a[]={1,3,5,7,9},*p; 则下列程序段的输出结果为 p=a; *(p 2) =2; printf("%d,%d\n",**p,*(p 2));

39、有以下程序: #include #include int main(){ char b1[8]="abcdefg",b2[8],*pb=b1 3; while(--pb>=b1){ strcpy(b2,pb); } printf("%d\n",strlen(b2)); } 输出结果是

40、有如下程序: #include int main(){ int x=1,y=2; int func(int *a,int *b); y=func(&x,&y); x=func(&x,&y); printf("%d,%d\n",x,y); return 0; } int func(int *a,int *b){ if(*a>*b){ *a-=*b; } else{ *a--; } return (*a *b); } 该程序的输出结果为

41、有如下程序: #include int main(){ int s[6][6],i,j; for(i=0;i<6;i ){ for(j=0;j<6;j ){ *(*(s i) j)=i-j; } } for(j=0;j<6;j ){ for(i=0;i<6;i )[ printf("m",*(*(s i) j)); } printf("\n"); } return 0; } 则该程序输出的第三行内容为

42、指针除了可以指向变量,也可以指向

43、有如下程序段:int a[]={1,3,5},*p=a; 则 *p 结果为

44、有如下程序: void swap(int *a,int b){ int t=b; b=*a; *a=t; } int main(){ int a=5,b=10; swap(&a,b); printf("%d,%d\n",a,b); } 则输出结果为

45、当对指针p动态申请内存空间后,在使用的过程中,发现之前申请的内存不够,可使用 函数申请更大的空间。

第9章oj作业

1、输入一个字符串,内有数字和非数字字符。将其中连续的数字作为一个整数,依次放到数组中。

2、有一个m×n的矩阵,求出其中的最大值及最大值的位置坐标(坐标从0开始)。

3、编写一个程序,实现对一个字符串(不包含空格)的前n的字符用指定字符c替代(如果字符串长度不足n,则把这个字符串都变为指定字符,但是长度不变)。

4、编写一段程序,实现将整数按输入顺序的逆序输出。

第十章 结构与联合

测试

1、若有定义语句: struct node{ int a1; int a2; }a3; 以下赋值语句正确的是()
    a、node.a1=4;
    b、a2=4;
    c、a3={4,5};
    d、a3.a2=5;

2、变量node所占的内存字节数是_______。(假设整型int为4字节) struct stu{ char name[20]; long int n; int score[4]; }node;
    a、28
    b、30
    c、32
    d、46

3、3、下列程序的输出结果是() struct node{ int a,b,c; }; int main(){ struct node s[2]={{1,2,3},{4,5,6}}; int t; t=s[0].a s[1].b; printf("%d\n",t); }
    a、5
    b、6
    c、7
    d、8

4、设有变量定义 struct node{ int age; int num; }std,*p=&std; 能正确引用结构体变量node中成员age的表达式是()。
    a、std->age
    b、*std->age
    c、*p.age
    d、(*p).age

5、有如下定义 struct person{ char name[9]; int age; }; struct person class[4]={"john",17,"paul",19,"mary",18,"adam",16}; 根据以上定义,能输出字母m的语句是_____。
    a、printf("%c\n",class[3].name);
    b、printf("%c\n",class[3].name[1]);
    c、printf("%c\n",class[2].name[1]);
    d、printf("%c\n",class[3].name[0]);

6、以下程序的输出结果是______。 struct node{ int x,y; struct node *p; }h[2]; int main(){ h[0].x=1; h[0].y=2; h[1].x=3; h[1].y=4; h[0].p=&h[1]; h[1].p=h; printf("%d%d\n",(h[0].p)->x,(h[1].p)->y); }
    a、12
    b、23
    c、14
    d、32

7、若有以下的说明: struct person{ char name[20]; int age; char sex; }a={"li ning",20,'m'},*p=&a; 则对字符串li ning的引用方式不可以的是()
    a、(*p).name
    b、p.name
    c、a.name
    d、p->name

8、下面程序的输出结果是 typedef union{ long x[2]; int y[4]; char z[8]; }node; node them; int main(){ printf("%d\n",sizeof(them)); }
    a、32
    b、16
    c、8
    d、24

9、若有以下定义: struct date{ int day; int month; int year; }time; 下面的哪一引用方式是正确的()。
    a、day
    b、time.day
    c、time->day
    d、month->day

10、下面程序的输出是_______。 int main(){ struct node{ int x; int y; }cnum[2]={1,3,2,7}; printf("%d\n",cnum[0].y/cnum[0].x*cnum[1].x ); }
    a、0
    b、1
    c、3
    d、6

11、结构体类型变量可以以整体的形式直接输入输出

12、c语言允许针对具体问题定义各种各样的结构体类型,甚至可以是嵌套的结构体类型

13、可以通过typedef增加新的类型

14、当定义一个结构体变量时,系统为它分配的内存空间是结构体中占内存容量最大的变量所需的容量

15、同一个联合的成员所占内存的起始地址并不一定相同

16、联合类型可以出现在结构和数组中,结构和数组也可以出现在联合中

17、枚举变量和枚举元素不可以进行比较

18、c语言中既可以对结构整体和成员进行赋值,也可以对联合体整体和成员赋值

19、枚举类型在输出时按整型数输出

20、程序中使用结构体类型指针引用结构体变量的成员需要通过malloc()函数来为指针分配安全的地址

21、设如下结构体定义: struct student{ int num; char name[20]; int sex; }stu,*p=&stu; 使用指针变量p对stu中的num赋值1701的方法是

22、设有下列结构定义语句: struct score{ int chinese; int math; }scores[2]={{80,85},{89,93}},*p=scores; 则 p->math的值为 , (p->math)的值为

23、设有如下枚举类型定义: enum color{red,black=3,green,yellow}; 则printf("%d\n",green);输出的值为

24、设某结构体定义如下: struct int{ int n; }; 则sizeof(struct int)_____sizeof(int)(填“>”“<”或“=”)

25、已知有如下定义: #define int int 请用typedef改写上述代码以实现相同功能

26、有如下结构体定义: struct student{ long long num; char name[20]; }; 则该结构体的成员占用字节数为

27、有如下结构体定义: struct student{ int num; char name[20]; union{ int math; int pe; }sele; }st; st.sele.math=90; 则语句printf("%d\n",st.sele.pe);的输出结果是

28、有如下结构体定义: struct student{ int num; char name[20]; union{ int chinese; char pe; }; }; 则上述结构体成员所占用的内存为 字节

第10章oj作业

1、事实上大一上册排名最关键的就是高数成绩,现在给出下列学生的名字、学号、高数成绩,请你将成绩从高到低排序,如果成绩一样那就按照学号从小到大进行排序。(要用结构体完成)

2、出题者的生日快到了,他当然很开心,但是他突然想到一个问题,是不是每个人从出生开始,到达18岁生日时所经过的天数都是一样的呢?似乎并不全都是这样,所以他想请你帮忙计算一下他和他的几个朋友从出生到达18岁生日所经过的总天数,让他好来比较一下。

3、新一轮投票开始了,每个人都可以获得3种票,分别是a,b,c,代表的权值是10,5,2 。本次参加共有n个人,他们将要竞选干部,我们希望知道排名最高的那个人是谁

第十一章 文件操作

测试

1、以下程序的功能是(); main(){ file *fp; char str[]="beijing 2008"; fp=fopen("file2","w"); fputs(str,fp); fclose(fp); }
    a、在屏幕上显示"beijing 2008";
    b、把"beijing 2008"存入file2文件中;
    c、在打印机上打印出"beijing 2008";
    d、以上都不对

2、若要打开a盘上user子目录下名为abc.txt的文本进行读、写操作,下面符合此要求的函数调用时()。
    a、fopen("a:\user\abc.txt","r")
    b、fopen("a:\\user\\abc.txt","r ")
    c、fopen("a:\user\abc.txt","rb")
    d、fopen("a:\\user\\abc.txt","w")

3、若fp已正确定义并指向某个文件,当未遇到改文件结束标志时函数feof(fp)的值为()。
    a、打开file1.txt文件,清除原有的内容;
    b、打开file1.txt文件,只能写入新的内容;
    c、打开file1.txt文件,只能读取原有内容;
    d、打开file1.txt文件,可以读取和写入新的内容;

4、在c中,对文件的存取以______为单位
    a、记录
    b、字节
    c、元素
    d、簇

5、下面的变量表示文件指针变量的是
    a、file *fp
    b、file fp
    c、filer *fp
    d、file *fp

6、在c中,下面对文件的叙述正确的是
    a、用“r”方式打开的文件只能向文件写数据
    b、用“r”方式也可以打开文件
    c、用“w”方式打开的文件只能用于向文件写数据,且该文件可以不存在
    d、用“a”方式可以打开不存在的文件

7、在c中,当文件指针变量fp已指向“文件结束”,则函数feof(fp)的值是
    a、.t.
    b、.f.
    c、0
    d、1

8、下面的程序段的功能是 #include main() { char s1; s1=putc(getc(stdin),stdout);}
    a、从键盘输入一个字符给字符变量s1
    b、从键盘输入一个字符,然后再输出到屏幕
    c、从键盘输入一个字符,然后在输出到屏幕的同时赋给变量s1
    d、在屏幕上输出stdout的值

9、执行如下程序段 #include file *fp; fp=fopen(“file”,”w”); 则磁盘上生成的文件的全名是
    a、file
    b、file.c
    c、file.dat
    d、file.txt

10、在c中若按照数据的格式划分,文件可分为
    a、程序文件和数据文件
    b、磁盘文件和设备文件
    c、二进制文件和文本文件
    d、顺序文件和随机文件

11、若fp是指向某文件的指针,且已读到该文件的末尾,c语言函数feof(fp)的返回值是
    a、eof
    b、-1
    c、非零值
    d、null

12、以下函数,一般情况下,功能相同的是
    a、fputc和putchar
    b、fwrite和fputc
    c、fread和fgetc
    d、putc和fputc

13、存储整型数据-7865时,在二进制文件和文本文件中占用的字节数分别是
    a、2和2
    b、2和5
    c、5和5
    d、5和2

14、在c中,二进制文件中的数据存放格式和整数-12345占用的字节数分别为
    a、ascii码方式、4个字节
    b、ascii码方式、2个字节
    c、二进制数方式、2个字节
    d、二进制数方式、4个字节

15、以只写方式打开一个二进制文件,应选择的文件操作方式是
    a、"a "
    b、"w "
    c、"rb"
    d、"wb"

16、如果文件型指针fp指向的文件刚刚执行了一次读操作,则关于表达式 “ferror(fp)”的正确说法是
    a、如果读操作发生错误,则返回1
    b、如果读操作发生错误,则返回0
    c、如果读操作未发生错误,则返回1
    d、如果读操作未发生错误,则返回0

17、设文件file1.c已存在,且有如下列程序段 #include file *fp1; fp1=fopen("file1.c","r"); while(!feof(fp1)) putchar(getc(fp1)); 该程序段的功能是
    a、将文件file1.c的内容输出到屏幕
    b、将文件file1.c的内容输出到文件
    c、将文件file1.c的第一个字符输出到屏幕
    d、什么也不干

18、下面程序段定义了函数putint,该函数的功能是 putint(int n,file *fp) {char *s; int num; s=&n; for(num=0;num<2;num ) putc(s[num],fp);}
    a、屏幕输出一整数
    b、屏幕输出一字符
    c、向文件写入一实数
    d、向文件写入一整数

19、如果要将存放在双精度型数组a[10]中的10个双精度型实数写入文件型指针 fp1指向的文件中,正确的语句是
    a、for(i=0;i<80;i ) fputc(a[i],fp1);
    b、for(i=0;i<10;i ) fputc(&a[i],fp1);
    c、for(i=0;i<10;i ) fwrite(&a[i],8,1,fp1);
    d、fwrite(fp1,8,10,a);

20、如果将文件型指针fp指向的文件内部指针置于文件尾,正确的语句是
    a、feof(fp);
    b、rewind(fp);
    c、fseek(fp,0l,0);
    d、fseek(fp,0l,2);

21、下列程序的主要功能是 #include "stdio.h" main() {file *fp; long count=0; fp=fopen("q1.c","r"); while(!feof(fp)) {fgetc(fp);count ;} printf("count=%ld\n",count); fclose(fp); }
    a、读文件中的字符
    b、统计文件中的字符数并输出
    c、打开文件
    d、关闭文件

22、在c中,假设文件型指针fp已经指向可写的磁盘文件,并且正确执行了函数 调用fputc('a',fp),则该次调用后函数返回的值是
    a、字符'a'或整数65
    b、符号常量eof
    c、整数1
    d、整数-1

23、在c中,打开文件的程序段中正确的是
    a、#include file *fp; fp=fopen("file1.c","wb");
    b、#include file fp; fp=fopen("file1.c","w");
    c、#include file *fp; fp=fopen("file1.c","w");
    d、#include file *fp; fp=fopen("file1.c","w");

24、在c中,所有的磁盘文件在操作前都必须打开,打开文件函数的调用格式为: fopen(文件名,文件操作方式); 其中文件名是要打开的文件的全名,它可以是:
    a、字符变量名、字符串常量、字符数组名
    b、字符常量、字符串变量、指向字符串的指针变量
    c、字符串常量、存放字符串的字符数组名、指向字符串的指针变量
    d、字符数组名、文件的主名、字符串变量名

25、有如下程序段: #include "stdio.h" main() {file *fp; int i; char s[10]; fp=fopen("name.txt","w") for(i=0;i<40;i ) {scanf("%s",s); fputc(s,fp);fputc("n",fp);} fclose(fp); } 下面说法正确的是
    a、将39个人的名字写入文本文件name.txt中
    b、将40个人的名字写入文本文件name.txt中
    c、文件name.txt中只能写入40个字符
    d、文件name.txt必须存在

26、在c中,缓冲文件系统是指
    a、缓冲区是由用户自己申请的
    b、缓冲区是由系统自动建立的
    c、缓冲区是根据文件的大小决定的
    d、缓冲区是根据内存的大小决定的

27、在内存与磁盘频繁交换数据的情况下,对磁盘文件的读写最好使用的函数是
    a、fscanf,fprintf
    b、fread,fwrite
    c、getc,putc
    d、putchar,getchar

28、在c中,文件型指针是
    a、一种字符型的指针变量
    b、一种结构型的指针变量
    c、一种共用型的指针变量
    d、一种枚举型的指针变量

29、下面程序段定义了函数putint,该函数的功能是 putint(int n,file *fp) {char *s; int num; s=&n; for(num=0;num<2;num ) putc(s[num],fp);}
    a、屏幕输出一整数
    b、屏幕输出一字符
    c、向文件写入一实数
    d、向文件写入一整数

30、按文件组织方式的不同,文件可以分为流式文件和记录式文件。

31、file * fp; fp=fopen(“abc.txt”,”a”);表示可以在abc.txt中写入数据。

32、ferror函数的返回值是0或非0。

33、clearerr函数的返回值是0

34、file * fp; fp=fopen(“abc.txt”,”w ”);表示只能在abc.txt上进行将数据写入的操作。

35、从文本文件中读取数据时,我们只能通过自己添加回车符当做一个换行符。

36、stdin,stdout,stderr这三个标识符在头文件stdio.h中定义。

37、c语言定义了三个标准文件(stdin,stdout,stderr)。

38、按数据输入/输出的传递方式,文件可以分为缓冲文件系统和非缓冲文件系统。

39、fgets函数在读入完所有的数据时会自动加上结束标志’\0’。

40、在c中,对文件的存取是以___为单位的

41、定义fele *fp,其中fp是指____

42、在c程序中,文件可以用___和___方式存取

43、以下程序执行后,文件test.dat中的内容是什么? #include #include void fun(char * fname,cahr * st) { file * fp; int i; fp=fopen(fname,"w"); for(i=0;i
44、给出以下程序的执行结果。 #include int main() { file * fp; int i=20,j=30,k,n; fp=fopen("data.dat","w"); fprintf(fp,"%d\n",i); fprintf(fp,"%d\n",j); fclose(fp); fp=fopen("data.dat","r"); fscanf(fp,"%d%d",&k,&n); printf("%d,%d\n",k,n); fclose(fp); }

45、给出以下程序的执行结果。 #include void main() { file * fp; int i,k=0,n=0; fp=fopen("data.dat","w"); for(i=1;i<4;i ) fprintf(fp,"%d",i); fclose(fp); fp=fopen("data.dat","r"); fscanf(fp,"%d%d",&k,&n); printf("%d,%d\n",k,n); fclose(fp); }

46、给出以下程序的执行结果。 #include void main() { file * fp; int i,a[4]={1,2,3,4},b; fp=fopen("data.dat","wb"); for(i=0;i<4;i ) fwrite(&a[i],sizeof(int),1,fp); fclose(fp); fp=fopen("data.dat","rb"); fseek(fp,-2l * sizeof(int),seek_end); fread(&b,sizeof(int),1,fp); fclose(fp); printf("%d\n",b); }

47、假设不存在abc.dat文件,如下程序执行后,abc.dat文件的内容是什么? #include int main() { file * fp; char * str1="first"; char * str2="second"; if ((fp=fopen("abc.dat","a "))==null) { printf("can't open abc file\n"); return 0; } fwrite(str2,6,1,fp); fseek(fp,0l,seek_set); fwrite(str1,5,1,fp); fclose(fp); return 0; }

48、给出以下程序的执行结果。 #include int main(void) { char str[10]="abcdefghi"; file * fp1, * fp2; fp1=fopen("c.txt","wb"); if (fp1!=null) { fputs(str,fp1); fputs("\n1234",fp1); fclose(fp1); fp2=fopen("c.txt","rb"); fgets(str,8,fp2); printf("%s",str); fgets(str,8,fp2); printf("%s\n",str); fclose(fp2); } }

49、定义“file *fp;",则文件指针fp 指向的是______

期末考试试卷

期末考试试卷

1、c语言是一种( )。
    a、机器语言
    b、汇编语言
    c、高级语言
    d、低级语言

2、一个c程序的执行是从( )。
    a、本程序的main函数开始,到main函数结束
    b、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束。
    c、本程序的第一个函数开始,到本程序main函数结束。
    d、本程序的main函数开始,到本程序文件的最后一个函数结束。

3、以下叙述不正确的是( )。
    a、一个c源程序必须包含一个main函数。
    b、一个c源程序可由一个或多个函数组成。
    c、c程序的基本组成单位是函数。
    d、在c程序中,注释说明只能位于一条语句的后面。

4、一个c语言程序是由( )。
    a、一个主程序和若干个子程序组成
    b、函数组成
    c、若干过程组成
    d、若干子程序组成

5、下列不是c语言的特点的是( )。
    a、语言简洁、紧凑,使用方便。
    b、数据类型丰富,可移植性好。
    c、能实现汇编语言的大部分功能。
    d、有较强的网络操作功能。

6、以下不属于c语言的数据基本类型的是()
    a、字符串类型
    b、基本整型
    c、双精度浮点型
    d、单精度浮点型

7、以下标识符错误的是()
    a、class
    b、t_mac
    c、23_lbj
    d、kb_24

8、对于逗号运算”<表达式1>,<表达式2>,…,<表达式n>”的运算结果是()
    a、表达式1的运算结果
    b、表达式n的运算结果
    c、所有表达式运算结果的乘积
    d、所有表达式运算结果的和

9、以下不属于c语言中的关键字的是()
    a、auto
    b、max
    c、union
    d、int

10、’\n’在c语言中的含义是()
    a、空格
    b、换行符
    c、制表符
    d、回车符

11、有以下程序: #include int main() { int a=233,b=17; printf("%d\n",a b); return 0; } 程序运行后的输出结果是()。
    a、233
    b、17
    c、250
    d、260

12、有以下程序: #include int main() { int a=233,b=17; printf("%d,",a =b); printf("%d\n",b =a); return 0; } 程序运行后的输出结果是()。
    a、233,250
    b、250,267
    c、233,17
    d、250,17

13、有以下程序: #include int main() { int a=233,b=17; printf("%d, %d\n",a =b,b =a); return 0; } 程序运行后的输出结果是()。
    a、233,17
    b、483,483
    c、250,483
    d、483,250

14、有以下程序: #include int main() { int a=233; printf("%o\n",a); return 0; } 程序运行后的输出结果是()。
    a、233
    b、351
    c、e9
    d、0

15、有以下程序: #include int main() { int a=233; scanf("%d",&a); printf("%d\n",a); return 0; } 程序运行后键盘输入2333,输出结果是()。
    a、233
    b、2333
    c、2332333
    d、2333233

16、已知a是int型变量,使用scanf函数输入一个整数给变量a,正确的函数调用是()。
    a、scanf("%d",a);
    b、scanf("%c",a);
    c、scanf("%d",&a);
    d、scanf("%c",&a);

17、有以下程序: #include int main() { float a=111,b=222; printf("%f\n",a b); return 0; } 程序运行后的输出结果是()。
    a、333
    b、333.000000
    c、111222
    d、111.222

18、经过以下语句后: if (a) { a ; } 整型变量 a 的值不可能是()。
    a、0
    b、1
    c、2
    d、3

19、有以下程序段: int a = 0; for (int i = 0; i < 10; i ) { a = i; } 执行后 a 的值为()。
    a、0
    b、10
    c、25
    d、45

20、有以下程序段: int a = 9, b = 3; while (a) { a -= b; b = a; } 执行后 a 的值为()。
    a、0
    b、10
    c、25
    d、45

21、有以下程序段: int a,b=3; do { a = 0; a =b; b-=1; }while(b); 执行后 a 的值为()。
    a、0
    b、1
    c、2
    d、3

22、有以下程序段: int a = 3; switch (a) { case 3: a ; case 4: a ; break; case 5: a ; default: break; } 执行后 a 的值为()。
    a、3
    b、4
    c、5
    d、6

23、有以下程序段: int a = 2, b = 3, c = 4; if (c = a b) { printf("ok!"); } else { printf("no!"); } 输出结果是()。
    a、ok!
    b、no!
    c、程序错误
    d、以上都不对

24、有以下程序段: int a = 3, b = 6; while (b>a) { b -= a; switch (a) { case 3: a -= 2; break; case 4: b = 5; break; case 5: a ; break; default: for (int i = b; i >= a; i--) { a*i; } break; } } 执行后 a 的值为()。
    a、0
    b、1
    c、2
    d、4

25、下列属于分支结构的是( )。
    a、while
    b、switch
    c、for
    d、以上都不是

26、在定义int a[3][3]之后,对a的引用正确的是:
    a、a[2][3]
    b、.a[2,0]
    c、a[2][1]
    d、a[3][1]

27、在执行语句:int a[][3]={1,2,3,4,5,6}后,a[1][1]的值是:
    a、5
    b、4
    c、2
    d、1

28、当接受用户输入的含有空格的字符串时,应使用____函数。
    a、gets()
    b、getchar()
    c、scanf()
    d、printf()

29、以下关于数组的描述正确的是:
    a、数组的大小是固定的,但可以有不同类型的数组元素。
    b、数组的大小是可变的,且必须有相同类型的数组元素。
    c、数组的大小是固定的,且必须有相同类型的数组元素
    d、数组的大小是可变的,但可以有不同类型的数组元素。

30、若有以下定义和语句,则输出结果是: char a[16]=”hello baby!” printf(“%d\n”,strlen(a));
    a、12
    b、11
    c、10
    d、16

31、定义char a[12]=”ni hao ya!”,输出a[7]=?
    a、a
    b、y
    c、n
    d、o

32、能对一维数组正确初始化的语句是
    a、int a[6]={8*1}
    b、int a[6]={1,,,3}
    c、int a[6]={}
    d、int a[6]=(0,0,0)

33、定义char s[ ]={"boy"},t; 执行下面语句段后输出结果是 s[0]=s[2]; s[2]=s[0]; s[1]=s[3]; s[3]=s[1]; printf("%c,%s \n", s[0], s);
    a、b,boy
    b、y,y
    c、y,yoy
    d、y,yob

34、以下哪种类型的函数一定不能带返回值( )
    a、int
    b、void
    c、double
    d、float

35、以下函数返回的值为( ) int fun(int a, int b,int c) { a = b; b = a; c = b; c = a ; return c; }
    a、2*a
    b、2*b
    c、a b
    d、a c

36、以下程序输出的答案为( ) #include void swap(int a, int b) { int t; t = a; a = b; b = t; } int main() { int a = 1, b = 2; swap(a, b); a *= a; printf("%d\n", a); return 0; }
    a、1
    b、2
    c、4
    d、3

37、以下程序输出的答案为( ) #include int fun(int a, int b) { int t; while (b) { t = b; b = a%b; a = t; } return a; } int main() { int a=4, b=6,ans; ans = fun(a, b); printf("%d\n", ans); return 0; }
    a、6
    b、4
    c、3
    d、2

38、当一个子函数已经被主函数调用但是该函数没有return语句时,该函数会()
    a、不执行
    b、导致整个程序不能运行
    c、执行该函数无返回值
    d、执行该函数并返回0

39、以下哪种关于主调函数与被调函数之间的关系说法是正确的( )
    a、被调函数可以在主调函数内
    b、被调函数一定要放在主调函数后
    c、被调函数一定要放在主调函数前
    d、被调函数被主调函数调用前不一定要先声明

40、以下有哪个函数能交换在主函数内的实参的值() (1).void swap(int a,int b) { int temp=a; a=b; b=temp; } (2) void swap(int a,int b) { a=b; b=a; }
    a、(1)
    b、(2)
    c、(1)(2)
    d、无

41、以下程序调用函数的顺序为() #include int f1(int a, int b); int f2(int a, int b); int f3(int a, int b); int f4(int a, int b); int main() { int a, b,ans; a = 1; b = 2; ans = f1(a, b); } int f1(int a, int b) { return f2(a,b); } int f2(int a, int b) { if (a>b) return f3(a, b); return f4(a, b); } int f3(int a, int b) { return a - b; } int f4(int a, int b) { return b - a; }
    a、f1->f2->f3->f4
    b、f1->f2->f3
    c、f1->f2->f4
    d、f4->f3->f2->f1

42、有以下程序: #include #define hello 100 int main() { printf("%d\n",hello); return 0; } 程序运行后的输出结果是()。
    a、10
    b、15
    c、100
    d、150

43、有以下程序: #include #define a 2 #define b a 1 int main() { printf("%d\n",b); return 0; } 程序运行后的输出结果是()。
    a、1
    b、2
    c、3
    d、编译错误

44、有以下程序: #include #define a 2 #define b a 1 int main() { printf("%d\n",--b); return 0; } 程序运行后的输出结果是()。
    a、1
    b、2
    c、3
    d、编译错误

45、有以下程序: #include #define min(x,y) (x)<(y)?(x):(y) int main() { int k=min(1,2); printf("%d\n",k); return 0; } 程序运行后的输出结果是()。
    a、1
    b、2
    c、12
    d、编译错误

46、有以下程序: #include #define min(x,y) (x)<(y)?(x):(y) int main() { int i=10,j=15,k; k=10*min(i,j); printf("%d\n",k); return 0; } 程序运行后的输出结果是()。
    a、10
    b、15
    c、100
    d、150

47、有以下程序: #include #define mod(x,y) x%y int main() { int a=15,b=100; int z=mod(b,a); printf("%d\n",z ); return 0; } 程序运行后的输出结果是()。
    a、10
    b、11
    c、15
    d、16

48、有以下程序: #include #define x 5 #define y x 1 #define z y*x/2 int main() { printf("%d\n",z); return 0; } 程序运行后的输出结果是()。
    a、5
    b、6
    c、7
    d、12

49、#define能作简单的替代,用宏替代计算多项式4*x*x 3*x 2之值的函数f,正确的宏定义是
    a、#define f (4*x*x 3*x 2)
    b、#define  (4*x*x 3*x 2)  f
    c、#define f(x) (4*x*x 3*x 2) 
    d、#define (4*x*x 3*x 2) f(x)

50、若有以下定义和语句: int s[4][5],(*ps)[5]; ps=s; 则对s数组元素的正确引用形式是?
    a、ps 1
    b、*(ps 3)
    c、ps[0][2]
    d、*(ps 1) 3

51、有如下代码段: #include #include int a=0; int *p; int main(){ float b; double *dp=(double*)malloc(sizeof(double)) } 问在内存中存储在同一存储区的变量为?
    a、a,*dp
    b、a,b
    c、b,dp
    d、p,dp

52、若有说明:int a=2,*p=&a,*q=p; 则下列赋值语句非法的是?
    a、p=q
    b、*p=*q
    c、a=*q
    d、q=a

53、若有说明:int a[]={1,3},*p=a;则printf("%d",*a );的输出结果为?
    a、a的地址
    b、1
    c、2
    d、3

54、变量的指针,其含义是指该变量的?
    a、值
    b、地址
    c、名
    d、一个标志

55、若有语句:int *p,a=10;p=&a; 下列均代表地址的一组选项是?
    a、a,p,*&a
    b、&*a,&a,*p
    c、*&p,*p,&a
    d、&a,&*p,p

56、以下程序调用scanf函数给变量a输入数值的方法是错误的,其错误原因是? #include int main(){ int *p,*q,a,b; p=&a; printf("input a:"); scanf("%d",*p); ... }
    a、*p表示的是指针变量p的地址
    b、*p表示的是变量a的值,而不是变量a的地址
    c、*p表示的是指针变量p的值
    d、*p只能用来说明p是一个变量指针

57、下列判断正确的是?
    a、char *s="zjgsu"; 等价于 char *s;*s="zjgsu"
    b、char s[10]={"zjgsu"}; 等价于 char s[10];s[10]={"zjgsu"};
    c、char *s="zjgsu"; 等价于 char *s;s="zjgsu"
    d、char s[10]="zjgsu",t[10]="zjgsu"; 等价于 char s[10]=t[10]="zjgsu";

58、若有定义语句: struct node{ int a1; int a2; }a3; 以下赋值语句正确的是()
    a、node.a1=4
    b、a2=4;
    c、a3={4,5}
    d、a3.a2=5;

59、变量node所占的内存字节数是_______。(假设整型int为4字节) struct stu{ char name[20]; long int n; int score[4]; }node;
    a、28
    b、30
    c、32
    d、46

60、下列程序的输出结果是() struct node{ int a,b,c; }; int main(){ struct node s[2]={{1,2,3},{4,5,6}}; int t; t=s[0].a s[1].b; printf("%d\n",t); }
    a、5
    b、6
    c、7
    d、8

61、设有变量定义 struct node{ int age; int num; }std,*p=&std; 能正确引用结构体变量node中成员age的表达式是()。
    a、std->age
    b、*std->age
    c、*p.age
    d、(*p).age

62、有如下定义 struct person{ char name[9]; int age; }; struct person class[4]={"john",17,"paul",19,"mary",18,"adam",16}; 根据以上定义,能输出字母m的语句是_____。
    a、printf("%c\n",class[3].name);
    b、printf("%c\n",class[3].name[1]);
    c、printf("%c\n",class[2].name[1]);
    d、printf("%c\n",class[3].name[0]);

63、以下程序的输出结果是______。 struct node{ int x,y; struct node *p; }h[2]; int main(){ h[0].x=1; h[0].y=2; h[1].x=3; h[1].y=4; h[0].p=&h[1]; h[1].p=h; printf("%d%d\n",(h[0].p)->x,(h[1].p)->y); }
    a、12
    b、23
    c、14
    d、32

64、若有以下的说明: struct person{ char name[20]; int age; char sex; }a={"li ning",20,'m'},*p=&a; 则对字符串li ning的引用方式不可以的是()
    a、(*p).name
    b、p.name
    c、a.name
    d、p->name

65、下面程序的输出结果是 typedef union{ long x[2]; int y[4]; char z[8]; }node; node them; int main(){ printf("%d\n",sizeof(them)); }
    a、32
    b、16
    c、8
    d、24

66、若有以下定义: struct date{ int day; int month; int year; }time; 下面的哪一引用方式是正确的()。
    a、day
    b、time.day
    c、time->day
    d、month->day

67、以下程序的功能是(); main(){ file *fp; char str[]="beijing 2008"; fp=fopen("file2","w"); fputs(str,fp); fclose(fp); }
    a、在屏幕上显示"beijing 2008";
    b、把"beijing 2008"存入file2文件中;
    c、在打印机上打印出"beijing 2008";
    d、以上都不对;

68、若要打开a盘上user子目录下名为abc.txt的文本进行读、写操作,下面符合此要求的函数调用时()。
    a、fopen("a:\user\abc.txt","r")
    b、fopen("a:\\user\\abc.txt","r ")
    c、fopen("a:\user\abc.txt","rb")
    d、fopen("a:\\user\\abc.txt","w")

69、若fp已正确定义并指向某个文件,当未遇到改文件结束标志时函数feof(fp)的值为()。
    a、打开file1.txt文件,清除原有的内容;
    b、打开file1.txt文件,只能写入新的内容;
    c、打开file1.txt文件,只能读取原有内容;
    d、打开file1.txt文件,可以读取和写入新的内容;

70、在c中,对文件的存取以______为单位
    a、记录
    b、字节
    c、元素
    d、簇

71、下面的变量表示文件指针变量的是
    a、file *fp
    b、file fp
    c、filer *fp
    d、file *fp

72、在c中,下面对文件的叙述正确的是
    a、用“r”方式打开的文件只能向文件写数据
    b、用“r”方式也可以打开文件
    c、用“w”方式打开的文件只能用于向文件写数据,且该文件可以不存在
    d、用“a”方式可以打开不存在的文件

73、在c中,当文件指针变量fp已指向“文件结束”,则函数feof(fp)的值是
    a、.t.
    b、.f.
    c、0
    d、1

74、下面的程序段的功能是 #include main() { char s1; s1=putc(getc(stdin),stdout);}
    a、从键盘输入一个字符给字符变量s1
    b、从键盘输入一个字符,然后再输出到屏幕
    c、从键盘输入一个字符,然后在输出到屏幕的同时赋给变量s1
    d、在屏幕上输出stdout的值

75、执行如下程序段 #include file *fp; fp=fopen(“file”,”w”); 则磁盘上生成的文件的全名是
    a、file
    b、file.c
    c、file.dat
    d、file.txt

猜你喜欢

  • 2022-12-05 22:05
  • 2022-12-05 21:43
  • 2022-12-05 21:30
  • 2022-12-05 21:30
  • 2022-12-05 20:53
  • 2022-12-05 20:42
  • 2022-12-05 20:26
  • 2022-12-05 20:10
  • 2022-12-05 19:43
  • 2022-12-05 19:31
网站分类
最新发表
标签列表
网站地图