尔雅C语言程序设计_38期末答案(学习通2023课后作业答案)

U校园习题2024-05-19 06:32:1740413抢沙发
尔雅C语言程序设计_38期末答案(学习通2023课后作业答案)摘要: 第1周---初识C语言-从简单程序开始1.1为何学习C语言随堂测验1、C语言的可移植是指可执行文件直接复制到另一台机器上就可以直接运行。2、C语言不能进行游戏开发。3、C语言可以进行电影特效的生成。4 ...

尔雅C语言程序设计_38期末答案(学习通2023课后作业答案)

第1周---初识C语言-从简单程序开始

1.1为何学习C语言随堂测验

1、尔雅C语言的语言程可移植是指可执行文件直接复制到另一台机器上就可以直接运行。

2、序设习通C语言不能进行游戏开发。计期

3、末答C语言可以进行电影特效的案学生成。

4、课后C语言的作业初衷是改写Windows操作系统。

5、答案C语言的尔雅特点有( )、( )、语言程( )、序设习通( )。计期

1.2初识C程序随堂测验

1、末答printf()函数的案学作用是( )。
A、具有数据的输入功能
B、具有数据的输出功能
C、具有数据的转换功能
D、具有输入和输出功能

2、main()函数在C程序只能出现一次。

3、C程序中的注释通常有两种分别是( )和( )。

1.2初识C程序随堂测验

1、C程序的运行是从( )开始的。
A、预处理
B、主函数
C、注释
D、语句

2、一个C程序中主函数main() 可以出现( )次。
A、0
B、1
C、2
D、任意

3、有关C语言中注释的说法正确的是( )。
A、注释只能出现一次
B、注释也是C程序的一部分参与程序的运行
C、注释可以出现程序的任意位置
D、注释只起到提示的作用

4、有关int MyAge;说明错误的是( )。
A、int 是整型数据类型
B、MyAge是变量名
C、分号是语句的结束标志
D、nt MyAge;这条语句的作用是定义一个实变量MyAge

5、一个C源程序中,( )函数只能出现一次。

6、#include <>在C程序中的作用( )。

7、int是( )数据类型。

8、C语言中变量赋值使用( )运算符。

9、C语言中,注释通常有两种书写形式,分别是( )和( )。

1.3C程序结构随堂测验

1、( )是构成C语言程序的基本单位。
A、函数
B、语句
C、注释
D、声明

2、C语言程序总是从( )开始执行。
A、预处理部分
B、程序中第一个函数
C、程序中第一个语句
D、主函数的main()函数

3、以下说法正确的是( )。
A、C语言程序总是从第一条语句的函数开始执行
B、C语言程序总是从主函数main()开始执行
C、主函数main()必须出现在程序的首部
D、用户自定义函数可以调用main()函数

4、scanf()函数的双引号后面跟的是变量。

5、用户自定函数必须出现在主函数main()的后面。

1.3C程序结构随堂测验

1、C语言不区分字母大小写。

2、"stdio.h " 在C程序中表示标准的输入输出头文件。

3、用户自定义函数可以调用主函数main()。

4、C语言中语句结束的标志是句号。

5、C语言中,语句结束的标志是( )。

6、C 语言中格式化输入函数是( )。

7、在C语言中,( )表示表示“以十进制整数的形式输出/输入”。

8、在C语言中,用( )符号引起来的表示字符串常量。

9、int age; &age表示取得变量age在内存中的( )。

第2周----数据性质的限定--数据类型

第二周测验

1、下列四组选项中,均是不合法的用户标识符的选项是( )。
A、x2 p_2 do
B、x-2 int 3m
C、char Flaot A0
D、-12 xb c%Y

2、下列四组选项中,均是合法转义字符的选项是( )。
A、‘\? ’‘\“’‘\n’
B、‘\A’‘\012’‘\”’
C、‘\018’‘\b’‘xab’
D、‘\\2’‘\101’‘xlf’

3、下面不正确的字符常量是( )。
A、”A“
B、’0‘
C、’\a‘
D、'\\'

4、有定义:char a; int b; float x; double y;则表达式a%b-y*x值的数据类型为( )。
A、float
B、char
C、int
D、double

5、下列变量定义中合法的是( )。
A、long _x=12L;
B、double a=e-3;
C、short if=2;
D、float 3_ax=1E-2;

6、下列字符串中不能作为标识符使用的是( )。
A、WHILE
B、user
C、_lvar
D、9stars

7、以下叙述中错误的是( )。
A、用户所定义的标识符允许使用关键字
B、用户所定义的标识符应尽量做到“见名知意”
C、用户所定义的标识符必须以字母或下划线开头
D、用户定义的标识符中,大、小写字母代表不同标识

8、以下不合法的字符常量是( )。
A、'\018'
B、'\"'
C、'\\'
D、'\xcc'

9、下列错误的十六进制型常量表示是( )。
A、0x2f
B、0xg
C、0x88
D、0xaf

10、字符串"\t\1234\""转义字符有( )个。
A、1
B、2
C、3
D、4

11、各种基本数据类型的存贮空间正确的长度排列为( )。
A、int < char <float<double
B、double<float <int<char
C、char<int <float<double
D、float<int <char<double

12、不是C语言提供的合法关键字是( )。
A、this
B、case
C、char
D、switch

13、若已定义x和y为float类型,且x=1;则表达式y=x+3/2的值是( )。
A、1
B、2
C、2.000000
D、2.500000

14、C语言中双精度浮点型变量double在内存中占( )字节。
A、1
B、2
C、4
D、8

15、以下选项中属于C语言的数据类型是( )。
A、字符串型
B、双精度型
C、逻辑型
D、布尔型

16、以下每个选项都代表一个常量,其中正确的整型常量是( )。
A、1.2
B、-20
C、1,000
D、1 4 8

17、不合法的八进制数是( )。
A、0
B、018
C、077
D、023

18、下列哪个标识符是C语言合法的标识符( )。
A、a*b
B、-xyz
C、ba2
D、5x

19、在C程序中,设一表达式中包含有int,long, unsigned和char类型的变量和数据,则表达式最后的运算结果类型是( )。
A、int
B、char
C、unsigned
D、long

20、C语言中基本的数据类型不包括( )。
A、整型
B、字符型
C、实型
D、字符串型

21、算法简而言之就是基于某种计算机语言,利用数据结构来解决具体问题的思路和方法。

22、描述算法可以用自然语言、传统流程图、N-S流程图来描述。

23、C语言本身没有输入输出语句,要实现输入输出必须调用相应的输入输出函数。

24、C语言中的基本数据类型有字符型、整型和浮点型。

25、在C语言中输出数据时可以指定数据的精度,即小数点后保留几位。

26、在标准C中,使用所有输入输出函数必须包含“stdio.h”文件。

27、程序中若要使用printf()函数就必须引用头文件”stdio.h”。

28、“A”是一个字符常量。

29、浮点型常量的指数表示中 ,e 是可以省略的。

30、在C语言中,逗号既可以作为运算符,也可以作为分隔符。

31、下划线是标识符中的合法字符。

32、C 语言程序在书写上只能是一条语句写一行。

33、分号是 C 语言中语句的结束符 , 不可用作分隔符。

34、C 语言规定 : 定义符号常量时必须用大写字母。

35、一个变量的数据类型被强制转换后,它将保持被强制转换后的数据类型。

36、数据是操作的对象,操作的结果会改变数据的状况。

37、字符型变量用来存放字符常量,注意只能放2个字符。

38、在 C语言中的实型变量分为两种类型,它们是 float(实型)和double(双精度实型)。

39、已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2='A'+'6'-'3'后,c2中的值为_____。

40、在C语言中,char型数据在内存中的存储形式是______码。

41、若x是int型变量,则执行表达式x=(a=4,6*2)后,x的值为______。

42、getchar函数可以接收______个字符,输入数字也按字符处理。

43、一般一个字符变量在内存中占_____个字节。

数据类型作业

1、分析并写出以下程序的运行结果: #include <stdio.h> int main() { int a=10,b=4; float x=23.2,y=5.6; printf("%.2f\n",(float)(a*b)/2); printf("%d\n",(int)x%(int)y); return 0; }

2、分析并写出下面程序的输出结果: #include <stdio.h> int main() { float x=123.456; printf("%-5.2f\n",x); return 0; }

3、下面程序在屏幕上的输出是________。 int main() { printf(”ab\b\b c”); } A)ab\b\b c B)a c C)abc D)ab c

4、以下选项中合法的实型常数是________。 A)5E2.0 B)E-3 C).2E0 D)1.3E

第3周 数据加工处理----运算符及表达式

第三周单元测试

1、设有定义 int k=3,m=6; float f=12;,则以下选项中错误的表达式是( )。
A、k=k>=k+2
B、-k--
C、m%int(f)
D、k>=f>=m*k

2、有以下程序: #include <stdio.h> int main() { char c1='A',c2='a'; printf("%c\n",(c1,c2)); return 0; } 以下叙述中正确的是( )。
A、程序输出大写字母 A
B、程序输出小写字母 a
C、格式说明符不足,编译出错
D、程序运行时产生出错信息

3、设有定义 int x=2,y=3,z=4;,则以下选项中值为 0 的表达式是( )。
A、(!x==1)&&(!y==0)
B、(x<&&!z||1)
C、x&&y
D、(y+y)&&(z-x)

4、有以下程序: #include <stdio.h> int main() { int x=0,a=3,b=2,c=1; x=a<b?b:a; x=x>c?c:x; printf("%d\n",x); return 0; } 则程序输出结果是( )。
A、0
B、1
C、2
D、3

5、已知下列语句中的a和b都是int型变量,其中错误的语句是( )。
A、a=b++;
B、a=++b;
C、(a+b)++;
D、++a=b;

6、以下程序输出的结果是( )。 #include <stdio.h> int main() { int x=13,y=24; printf("%d%d",x++,++y); printf("%d%d\n",x++,++y); return 0; }
A、12353513
B、12343514
C、12343513
D、13251426

7、在C 语言中,逻辑值“真”用 表示( )。
A、true
B、大于0 的数
C、非0 整数
D、非0 的数

8、下列运算符中优先级最低的是( )。
A、!
B、&&
C、!=
D、?:

9、以下能正确定义且赋初值的语句是( )。
A、int n1=n2=10;
B、char c=32;
C、float f+1.2=f;
D、double x=12.3E2.5;

10、设a为整型变量,不能正确表达数学关系:10<a<15的C语言表达式是( )。
A、10<a<15
B、a= =11 || a= =12 || a= =13 || a= =14
C、a>10&&a<15
D、!(a<=10)&&!(a>=15)

11、表达式“10!=9”的值是( )。
A、true
B、非零值
C、0
D、1

12、设有单精度变量f,其值为13.8。执行语句“n=( (int)f )%3;”后,n的值是( )。
A、4
B、1
C、4.333333
D、4.7

13、若有代数式3ae/bc,则不正确的c语言表达式是( )。
A、a/b/c*e*3
B、3*a*e/b/c
C、3*a*e/b*c
D、a*e/b/c*3

14、设有变量说明:float x = 4.0 , y = 4.0,下面使x为10.0的表达式是( )。
A、x -= y*2.5
B、x /= y+9
C、x *= y-6
D、x += y+2

15、执行语句"x=(a=3,b=a--)"后,x,a,b的值依次为( )。
A、3, 3, 2
B、3,2,2
C、3,2,3
D、2,3,2

16、以下程序输出的结果是( )。 #include <stdio.h> int main() { int a,b,c=30; a=c/5%9; b=a&&(-10); printf("%d,%d\n",a,b); return 0; }
A、6,1
B、1,6
C、2,1
D、1,2

17、执行下列语句后,y的值是( )。 int x=1,y=1;++x||++y;
A、不确定
B、0
C、1
D、2

18、以下程序输出的结果是( )。 #include <stdio.h> int main() { int x=2; x+=x-=x*x; printf("%d\n",x); return 0; }
A、4
B、-4
C、6
D、-6

19、已知各变量的类型说明如下: int m=8,n, a, b; unsigned long w=10; double x=3.14, y=0.12; 则以下符合C语言语法的表达式是( )。
A、a+=a-=(b=2)*(a=8)
B、n=n*3=18
C、x%3
D、y=float (m)

20、以下符合C语言语法的赋值表达式是( )。
A、a=9+b+c=d+9
B、a=(9+b, c=d+9)
C、a=9+b, b++, c+9
D、a=9+b++=c+9

21、在C语言中,要求运算数必须是整型的运算符是( )。
A、/
B、++
C、*=
D、%

22、已知s是字符型变量,下面不正确的赋值语句是( )。
A、s=’\012’;
B、s= ’u+v’;
C、s=’1’+’2’;
D、s=1+2;

23、设x、y均为float型变量,则不正确的赋值语句是( )。
A、++x ;
B、x*=y-2;
C、y=(x%3)/10;
D、x=y=0;

24、以下程序输出的结果是( )。 #include <stdio.h> int main() { int x=12345; printf("%2d\n",x); return 0; }
A、12
B、12345
C、345
D、45

25、以下程序输出的结果是( )。 #include <stdio.h> int main() { unsigned char x,y; x=7^3; y=~4&3; printf("%d,%d\n",x,y); return 0; }
A、4,3
B、3,4
C、2,4
D、4,5

26、C 程序中,+、-、*、/、%号是算术运算符,可用于整型和实型数的运算。

27、表达式3.6-5/2+1.2+5%2的值是1.8 。

28、用逻辑表达式表达“大于60且小于100的数”为x>60&x<100 。

29、/ 运算符要求运算数必须是整数。

30、Int, #a15 , char都是合法的标识符。

31、'b'和"b"是不同的两种常量。

32、在标准C中,“=”是判断两个数是否相等。

33、在C语言中,所有算术运算符的优先级都相同。

34、在程序运行过程中其值可以改变的量称为变量。

35、“A”是一个字符常量。

36、若int a=3,b=2,c=1,f;表达式f=a>b>c的值是______。

37、若有以下定义,int m=5,y=2;则计算表达式y+=y-=m*=y后y的值是______。

38、若a是int型变量,则表达式(a=4*5,a*2),a+6的值为______。

39、若a是int型变量,则计算表达式a=25/3%3后a的值为______。

40、若x和n均是int型变量,且x和n的初值均为5,则计算表达式x+=n++后x的值为______。

41、若有定义:int b=7;float a=2.5,c=4.7;则表达式a+(int)(b/3*(int)(a+c)/2)%4的值为______。

42、若有定义:char c='\010';则变量c中包含的字符个数为______个。

43、若有定义:int a,b;表达式a=2,b=5,a++,b++,a+b的值为______。

44、表达式8/4*(int)2.5/(int)(1.25*(3.7+2.3))值的数据类型为_____。

45、若a和b均为int型变量,则以下语句的功能是______。 a+=b;b=a-b;a-=b;

第三周作业

1、阅读以下程序,并给出程序输出结果: #include <stdio.h> int main() { int m=3,x=4,y=4,z=7; m=(m<x) ? x++ : m; m=(m<y) ? y++ : m; m=(m<z) ? z++ : m; printf("%d,%d,%d,%d\n",m,x,y,z); return 0; }

2、已知A=7.5,B=2,C=3.6,表达式(A>B && C>A) || (A<B && !C>B)的值是( )。 A)0 B)10 C)1 D)5

3、判断整型变量ch是否为数字的正确表达式是( )。 A) ‘0’<=ch<=‘9’ B) (ch>=‘0’)&(ch<=‘9’) C) (ch>=‘0’)&&(ch<=‘9’) D) (‘0’<= ch)AND(‘9’>= ch)

4、设整型变量a为5,使b不为2的表达式是( )。 A) b = a/2 B) b = 6-(--a) C) b=a%2 D) b=a>3?2:1

5、以下程序段的输出结果是( )。 int x=10,y=10; printf(“%d %d\n”,x--,--y); A) 10 10 B) 9 9 C) 9 10 D) 10 9

6、下列语句不具有赋值功能的是( )。 A)a*=b B)x=1 C)a+b D)a++

7、下列程序段输出结果是( )。 int j=2 , i=1; j /= i*j; printf(“%d”,j); A)0 B)1 C)2 D)3

8、执行 x=(6*7%8+9)/5; 后,x的值为( )。 A)1 B)2 C)3 D)4

9、若已定义x和y为double类型,则表达式x = 1,y = x+3/2的值是( )。 A)1 B)2 C)2.0 D)2.5

10、阅读以下程序,并给出程序的输出结果。 #include <stdio.h> int main() { int a=43; int b = 148; printf("%d",a&b); return 0; }

第4周 自上而下依次执行----顺序程序设计

第四周测试

1、设有如下定义: int x=11,y=3, z; 则语句printf("%d\n", z = x%y ); 的输出结果是( )。
A、1
B、2
C、0
D、3

2、设整型变量x的值为3,执行语句"x += x;"后,x的值是( ).
A、3
B、9
C、6
D、12

3、以下能正确定义且赋初值的语句是( ).
A、int n1=n2=10;
B、char c=32;
C、float f=f+1.1;
D、double x=12.3E2.5;

4、设有定义int k=1,m=2;float f=7;,则以下选项中错误的表达式是( ).
A、k=k>=k
B、-k++
C、k%int(f)
D、k>=f>=m

5、以下选项中,当x为大于1的奇数时,值为0 的表达式是( ).
A、x%2==1
B、x/2
C、x%2!=0
D、x%2==0

6、表达式3.6-5/2+1.2+5%2的值是( ).
A、4.3
B、4.8
C、3.3
D、3.8

7、阅读以下程序,当输入数据的形式为:25,13,10<CR>(注:<CR>表示回车),则正确的输出结果为( )。 int main() { int x,y,z; scanf(“%d%d%d”,&x,&y,&z); printf(“x+y+z=%d\n”,x+y+z); return 0; }
A、x+y+z=48
B、x+y+z=35
C、x+z=35
D、不确定值

8、假设所用变量已经定义,以下不符合C语言语法的赋值语句是( ).
A、j++;
B、j=j=5;
C、k=2*4,4*k;
D、y=(float)j;

9、设有说明语句:char a=‘\72’;则变量a( ).
A、包含1个字符
B、包含2个字符
C、包含3个字符
D、包含4个字符

10、以下程序的输出结果是( ). # include <stdio.h> int main() { int i=010 , j = 10; printf("%d,%d\n",+ +i , j - -); return 0; }
A、11,10
B、9,10
C、010,9
D、10,9

11、在C语言中,如果下面的变量都是int类型,则输出的结果是( ). sum=pa=5; pd=sum + + ,pd + + , + + pd; printf("%d\n",pa);
A、7
B、6
C、5
D、4

12、假设a,b,i,k都已正确定义,请选出合法的C语言赋值语句( ).
A、a=b=58
B、i++;
C、a=58,b=58
D、k=int(a+b);

13、设有如下定义: int x=10,y=3,z; 则语句printf("%d\n",z=(x%y,x/y)); 的输出结果是( ).
A、1
B、0
C、4
D、3

14、设x和y均为int型变量,则以下语句:x+=y,y=x-y;x-=y;的功能是( ).
A、把x和y按从大到小排列
B、把x和y按从小到大排列
C、无确定结果
D、交换x和y中的值

15、设x、y、z和k都是int型变量,则执行表达式:x=(y=4,z=16,k=32)后,x的值为( ).
A、4
B、16
C、32
D、52

16、设有 int x=11; 则表达式 (x++ * 1/3) 的值是( ).
A、3
B、4
C、11
D、12

17、若有以下说明语句,则该语句( ). char s='\092';
A、使s 的值包含1 个字符
B、说明不合法,s 的值不确定
C、使s 的值包含4 个字符
D、使s 的值包含3 个字符

18、以下叙述中正确的是( ).
A、预处理命令行必须位于 C 源程序的起始位置
B、在 C 语言中,预处理命令行都以"#"开头
C、每个 C 程序必须在开头包含预处理命令行:#include<stdio.h>
D、C 语言的预处理不能实现宏定义的功能

19、下列程序段的输出结果是( ). char c1,c2; c1=65; c2=65+32+1; printf(“%c,%c”,c1,c2);
A、a,B
B、a,b
C、A,b
D、A,B

20、下列程序段输出结果是( ). int j=2 , i=1; j /= i*j; printf(“%d”,j);
A、0
B、1
C、2
D、3

21、设a,b为字符型变量,执行scanf(“a=%c,b=%c”,&a,&b)后使a为’A’,b为’B’,从键盘上的正确输入是( ).
A、'A’ ‘B’
B、A,B
C、A=A,B=B
D、a=A,b=B

22、结构化程序设计的三种结构是顺序结构、选择结构和循环结构.

23、可以用printf("%d" ,123);语句输出一个十六进制整数.

24、可以用scanf("%x",&d);语句从键盘接收一个八进制整数给变量d.

25、如果a是一维字符数组名,则语句scanf("%s", &a); 是正确的.

26、判断a,b两个数是否相等,用 a = b。

27、若int x=2,y=3,z=4 则表达式x<z?y:z的结果是2.

28、C语言中,关系表达式和逻辑表达式的值是0或1.

29、在C程序中,变量可以一边定义一边使用。

30、在C程序中,无论是整数还是实数,都能被准确无误地表示。

31、运算符优先顺序:赋值运算符<逻辑运算符<关系运算符<算术运算符。

32、设a、b、c为整型数, 且a=2、b=3、c=4, 则执行完以下语句: a*=16+(b++)-(++c);后,a的值是______.

33、若有char c1,c2,为使变量c1得到字符'A',变量c2得到字符'B',正确的sacnf输入形式是_______;.

34、有一输入函数scanf("%d",k);则不能使float类型变量k得到正确数值的原因是______。

35、执行下列语句后,y的值是_____。 int x=1,y=1;++x||++y;

36、执行 x=(6*7%8+9)/5; 后,x的值为_____.

第四周作业

1、输入梯形的上底、下底以及高的值,编程输出其面积。 给出程序以及程序运行的结果图。

2、编程从键盘输入5名同学的成绩(数据类型为整型),输出他们的平均值,保留2位小数。 给出程序以及运行结果图。

3、欧阳俊最近学习了C语言,这门课程的总成绩计算办法是:总成绩=作业成绩*5%+单元测试*15%+讨论发帖*5%+期中成绩*15%+实验*10%+期末成绩*50%,请为他编写一个C程序,统计出其最后的总成绩。 给出程序和程序运行结果。

第5周 约束限制合理执行----分支程序设计

第五周测验

1、有以下程序: #include<stdio.h> int main() { int a=0,b=1,c=0,d=20; if(a) d-=10; else if(!b) if(!c)d=15; else d=25; printf("%d\n",d); return 0; } 程序输出的结果应该为________.
A、20
B、15
C、25
D、10

2、若有定义:float x=1.5;int a=1,b=3,c=2;则正确的switch语句是( ).
A、switch(x) { case l.0:printf("*\n"); case 2.0:printf("**\n");}
B、switch((int)x); { case l:printf("*\n"); case 2:printf("**\n");}
C、switch(a+b); { case l:printf("*\n"); case 2+1:printf("**\n");}
D、switch(a+b) { case l:printf("*\n"); case c:printf("**\n");}

3、有以下程序: int main() { int k=1,n=0; switch(++k) { default : break; case 1 : n+=k; case 2 : case 3 : n+=k; } printf("%d\n",n); return 0; } 程序运行后的输出结果是( ).
A、1
B、2
C、3
D、0

4、以下程序输出的结果是( ). #include<stdio.h> void main() { int x=0,y=1,a=0,b=0; switch(x) { case 0: switch(y) { case 0:a++;break; case 1:b++;break; } case 1: a++;b++;break; } printf("%d,%d\n",a,b); return 0; }
A、1,2
B、2,1
C、1,0
D、0,1

5、有以下程序段: int a; if (3&&2) a=1; else a=2; 执行后a=( ).
A、0
B、2
C、1
D、无法确定

6、表达式:10!=9的值是( ).
A、true
B、非零值
C、0
D、1

7、设int x=1,y=1;表达式(!x++ || y--)的值是( ).
A、0
B、1
C、2
D、-1

8、设整型变量a,b的值分别为1,2,那么表达式 a>b?a+b:a-b的结果是( ).
A、1
B、2
C、3
D、-1

9、以下程序: #include <stdio.h> int main() { int a=0,b=1,c=2; if(c=a-b) printf("Yes!"); else printf("No!"); return 0; } 输出结果是( ).
A、Yes!
B、No!
C、程序错误
D、以上都不对

10、设整型变量a,b的值分别为1,0,那么a= =b 的结果是( ).
A、0
B、1
C、2
D、都不对

11、设整型变量a,b的值分别为1,0,那么!(a= =b) 的结果是( ).
A、0
B、1
C、2
D、都不对

12、设整型变量a,b的值分别为1,2,那么!a && b的结果是( ).
A、0
B、1
C、2
D、都不对

13、设x为非零,则下列描述错误的是( ).
A、!(x = = 0)
B、x != 0
C、3*x != 0
D、x>0

14、设整型变量a,b的值分别为6,2,那么a%b != 0的结果是( ).
A、0
B、2
C、1
D、3

15、设整型变量a,b的值分别为1,0,那么a || (++b)的结果是( ).
A、0
B、1
C、2
D、都不对

16、执行下面程序中的输出语句后,输出结果是( ). #include<stdio.h> int main() { int x; printf("%d\n",(x=3*1,x*3,x+2)); return 0; }
A、5
B、4
C、3
D、2

17、下面程序的输出是( ). #include<stdio.h> int main() { char c1,c2; c1='A'+'2'-'5'; c2='A'+'5'-'3'; printf("%d,%c\n",c1,c2); return 0; }
A、63,B
B、62,C
C、63,D
D、62,B

18、如果c为字符型变量,判断c是否为空格不能使用( ).(假设已知空格ASCII码为32)
A、if(c= ='32')
B、if(c= =32)
C、if(c= ='\40')
D、if(c==' ')

19、执行下面程序时,若从键盘输入"3<CR>"(CR表示回车键),则程序的运行结果是( ). #include <stdio.h> int main( ) { int i; char c; c=getchar( ); if (c>='0' && c<='9') i=c-'0'; else if (c>='a' && c<='f') i=c-'a'+10; else i=c-'A'+10; printf("%d\n",i); return 0; }
A、2
B、3
C、4
D、10

20、下列程序的执行结果是( ). #include <stdio.h> int main( ) { int x=0,y=2,z=1; if (x=z=y) x=3; printf("%d,%d\n",x,z); return 0; }
A、3,2
B、2,3
C、2,0
D、0,2

21、运行下面程序时,从键盘输入字母I,则输出结果是( ). #include <stdio.h> int main( ) { switch(getchar( )) { case 'I':printf("I love\n"); case 'C':printf("Chnia!\n"); default:printf("You are OK!\n"); } return 0; }
A、I love Chnia! You are OK!
B、I love
C、China
D、I love Chnia! You are OK!

22、在分支结构switch中,case后面跟的一定是常量。

23、逻辑运算符优先级高于关系运算符的优先级。

24、在条件表达式中,-1代表为真。

25、在switch语句中,有没有break的情况都是相同的。

26、判断a,b两个数是否相等,用 a = b。

27、下面程序的输出结果是______。 #include <stdio.h> int main() { int a=2,b=1,k; if (a>b); k=a, a=b, b=k; printf("%d,%d\n",a,b); return 0; }

28、若执行下面程序时,从键盘输入"1,2",则输出是_____。 #include <stdio.h> int main() { int a,b,s; scanf("%d,%d",&a,&b); s=a; if (a<b) s=b; s=s*s; printf("%d\n",s); return 0; }

29、阅读以下程序: #include <stdio.h> int main() { int i=10; switch(i){ case 9: i+=1; case 10: i+=1; case 11: i+=1; default : i+=1; } printf("%d",i); return 0; } 运行结果______.

30、已知能被4整除而不能被100整除的或者能被400整除的年份是润年,则判断某一年是否是润年的程序如下: #inlcude <stdio.h> int main() { int year,leap; scanf("%d",&year); if(year%4==0&&year%100!=0||year%400==0) leap=1; else leap=0; if(________ ) printf(“是润年”); else printf(“不是润年”); return 0; }

31、以下程序段输出的结果是: int a=2,b=3; int n; n=a>b?a:b; printf("%d",n);

第五周作业

1、某商场的客户分为白金卡会员、金卡会员、银卡会员和普通客户。为了回馈广大顾客,现推出以下优惠活动: (1)如果客户是白金卡会员,现在将享受7折优惠; (2)如果客户是金卡会员,现在将享受8折优惠; (3)如果客户是银卡会员,现在将享受9折优惠; (4)如果客户是普通客户,现在将享受9.5折优惠; 现要求根据顾客的身份和购买商品的价格,输出应付的金额(保留2位小数)。

2、输入y和m的值,输出y年m月有多少天。 比如输入:2019,3 则输出31 输入:2000,2 则输出29

3、输入任意一个字符,判断是大写字母、小写字母还是数字,如果不是以上三种情况,则输出“other”。

第6周 缠缠绵绵不离不弃----循环程序设计

第6周测试

1、#include <stdio.h> int main() { int x=3; do { x-=2; printf("%d ",x); } while(!(--x)); return 0; } 执行这个程序的输出结果是( ).
A、1
B、-2
C、1 -2
D、死循环

2、执行语句序列 int i=0; while(i<25) i+=3; printf("%d",i); 输出结果是( ).
A、24
B、25
C、26
D、27

3、有如下语句序列: int k=0; do{ k+=5; putchar('$'); }while(k<10); while(k-->0) putchar('*'); 执行上面的语句序列输出字符$和*的个数分别是( ).
A、2 10
B、4 10
C、5 20
D、3 20

4、有如下程序段:  int i=1; while (1) { i++; if(i==10) break; if(i%2==0) cout<<'*'; }   执行这个程序段输出字符*的个数是( ).
A、10
B、3
C、4
D、20

5、以下语句段中,不是无限循环是( ).
A、i=100; while (1) { i=i%100; i++; if(i>100)break; }
B、for (;;);
C、k=32764; do { k++; k++; } while(k>0);
D、s=32764; while((s++%2)||(s%2))s++;

6、在以下给出的表达式中,与while(E)中的(E)不等价的表达式是( ).
A、(!E==0)
B、(E>0||E<0)
C、(E==0)
D、(E!=0)

7、有以下程序: #include <stdio.h> int main() { int y=10; while(y--); printf("y=%d\n",y); return 0; } 程序执行后的输出结果是( ).
A、y=0
B、y=-1
C、y=1
D、y=10

8、有以下程序段: int n,t=1,s=0; scanf("%d",&n); do{ s=s+t; t=t-2; }while (t!=n); 为使此程序段不陷入死循环,从键盘输入的数据应该是( ).
A、任意正奇数
B、任意负偶数
C、任意正偶数
D、任意负奇数

9、对下边for循环,循环体体执行次数是( ). for ( i = 1; i <= 10; i = i + 2 );
A、5
B、4
C、10
D、6

10、下边循环执行完后,x为( ). for ( x= 1;x< 6; x++ ) x = 2 * x;
A、7
B、6
C、8
D、12

11、下边循环执行完后,n为( ). for ( x= 1; x< 5; x++ ) for ( y= n = 0; y< x; y++, n = n +x) ;
A、16
B、10
C、14
D、5

12、下面程序段输出结果是( ). int i , a= 0; for ( i = 0; i < 10; i++ ) a++, i++; printf("%d", a);
A、10
B、5
C、6
D、9

13、从循环体内某一层跳出,继续执行循环外的语句是( ).
A、break语句
B、return语句
C、continue语句
D、空语句

14、循环语句 for (x=0,y=0; (y!=1)&&(x<4);x++)的循环执行次数为( ).
A、无限次
B、不循环
C、4次
D、3次

15、循环语句for (x=0,y=0; (y!=1)||(x<4);x++);的执行次数为( ).
A、无限次
B、不循环
C、4次
D、3次

16、设i,j,k均为int型变量,k初值为0,执行完下面的for循环后,k的值为( ). for (i=0,j=10; i<=j; i++,j--) k=i+j;
A、10
B、9
C、8
D、7

17、下边程序段循环执行的次数是( ). int x= 0, y = 10; for ( ; y > 3; y-- ) { x++; if ( x> 3) break ; }
A、3
B、4
C、5
D、6

18、以下for循环语句,循环体的执行次数是 ( ). for( i=5; i>1; i-- ) ;
A、2
B、3
C、4
D、5

19、以下for循环语句,循环体的执行次数是( ). for( i=1; i<=5; i+=2 ) ;
A、3
B、4
C、5
D、6

20、定义变量int i=-1; 则以下不是无限循环的是( ).
A、for (i=0; i=1; i++) ;
B、for ( i=0; ; i--) ;
C、for ( ; i>-10; i--) ;
D、for ( ; i<0 ; ) ;

21、定义变量int i=2; 则以下是无限循环的是 ( ).
A、for (i=0;i==1;i++) ;
B、for (i=0; i<0 ; ) --i;
C、for ( ; i>10; i++) ;
D、for ( ; i ; ++i ) ;

22、do-while语句的循环体( ).
A、可能一次都不执行
B、至少要执行一次
C、由循环条件决定循环次数
D、B C均正确

23、continue语句只能用于循环语句中。

24、在for循环中允许使用嵌套循环,但只能是嵌套while循环。

25、break语句只能用于循环语句中。

26、for循环可能一次都不执行。

27、continue语句是结束本次循环。

28、在循环过程中,使用break语句和continue语句的作用是一样的。

29、for( ; ; )这写书写for循环是合法的,即for三个表达式都是可以省略的。

30、以下程序运行完后的输出的结果是________. #inlcude <stdio.h> int main() { int x=5 ; for( ; x ; ) { x--; if(x==0) break; printf("0"); } return 0; }

31、以下程序运行完后m的值是____. int main() { int i, m=0 ; for(i=0; i<10; i++) i++; m++; printf("%d", m); return 0; }

32、以下程序运行完后x的值是______. #include <stdio.h> int main() { int i, x=0 ; for(i=0; i<4; i++) x++, i++; printf("%d", x); return 0; }

33、以下程序运行完后s的值是____. #include <stdio.h> int main() { int n ; float s=1.0; for(n=5;n>1;n--) s=s+1/n; printf("%0.1f\n",s); return 0; }

34、以下程序运行完后的结果是_____ #include <stdio.h> int main() { int k; for (k=1;k<5;k++) { if(k%2!=0) printf("a"); else printf("b") ; } return 0; }

35、下面程序的功能是根据近似公式:π2/6(六分之π的平方)≈ 1/12(1的平方分之1)+1/22(2的平方分之1)+1/32(3的平方分之1)+ …… +1/n2(n的平方分之1),求π值。 #include <math.h> int main() { double s=0.0; long i; for(i=1;i<=n;i++) s=s+ 1.0/(float)(i*i); printf("%0.2f",___________); return 0; }

第6周作业

1、编程实现:输出两个整型输的最大公约数和最小公倍数。

2、编程实现:输出所有的“水仙花”数,所谓“水仙花”数是指一个3位数,其各位数字的立方和等于该数的本身。

3、编程实现: 用循环程序实现输出如下图形: * * * * * * * * * * * * * * * * * * * * * * * * *

第7周 数以类聚集约处理----数组

第7周测验

1、有以下程序: #include <stdio.h> int main() { int p[8]={ 11,12,13,14,15,16,17,18},i=0,j=0; while(i++<7) if(p[i]%2) j+=p[i]; printf("%d\n",j); } 程序运行后的输出结果是( ).
A、43
B、45
C、47
D、50

2、要定义一个具有5个元素的一维数组vect,并使其各元素的初值依次是30,50,-88,0和0,则下列定义语句中错误的是( ).
A、int vect[ ]={ 30,50,-88};
B、int vect[ ]={ 30,50,-88,0,0};
C、int vect[5]={ 30,50,-88};
D、int vect[5]={ 30,50,-88,0,0};

3、以下数组定义中错误的是( ).
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};

4、有以下程序 #include <stdio.h> int main() { int i,t[][3]={ 9,8,7,6,5,4,3,2,1}; for(i=0;i<3;i++) printf("%d ",t[2-i][i]); } 程序执行后的输出结果是( ).
A、7 5 3
B、3 5 7
C、3 6 9
D、7 5 1

5、以下叙述中错误的是( ).
A、对于 double 类型数组,不可以直接用数组名对数组进行整体输入或输出
B、数组名代表的是数组所占存储区的首地址,其值不可改变
C、当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息
D、可以通过赋初值的方式确定数组元素的个数

6、下列语句中,正确的是( ).
A、char*myString="Hello-World!";
B、char myString="Hello-World!";
C、char myString[11]="Hello-World!";
D、char myString[12]="Hello-World!";

7、以下能正确定义字符串的语句是( ).
A、char str[]={ '64'};
B、char str="\x43";
C、char str='';
D、char str[]="\0";

8、有以下程序: #include <string.h> #include <stdio.h> int main() { char p[]={ 'a','b','c'},q[10]={ 'a','b','c'}; printf("%d %d\n",strlen(p),strlen(q)); } 以下叙述中正确的是( ).
A、在给 p 和 q 数组置初值时,系统会自动添加字符串结束符,故输出的长度都为 3
B、由于 p 数组中没有字符串结束符,长度不能确定;但 q 数组中字符长度为 3
C、由于 q 数组中没有字符串结束符,长度不能确定;但 p 数组中字符长度为 3
D、由于 p 和 q 数组中没有字符串结束符,故长度都不能确定

9、已有定义:char a[]="xyz",b[]={ 'x','y','z'};,以下叙述中正确的是( ).
A、数组 a 和 b 的长度相同
B、a 数组长度小于 b 数组长度
C、a 数组长度大于 b 数组长度
D、上述说法都不对

10、有以下程序: #include <stdio.h> int main() { char a[7]="a0\0a0\0"; int i,j; i=sizeof(a); j=strlen(a); printf("%d %d\n",i,j); } 程序运行后的输出结果是( ).
A、2 2
B、7 6
C、7 2
D、2 7

11、已知有数组定义: char a[3][4]; 下列表达式中错误的是( ).
A、a[2]="WIN"
B、strcpy(a[2],"WIN")
C、a[2][3]='W'
D、a[0][1]=a[0][1]

12、以下程序段中的词句被执行后,数组s1的内容是( ). char s1[10]=”ABCD”,s2[20]=”EFGH”; strcpy(s1+2,s2);
A、ABEFGH
B、EFABCD
C、ABCD
D、CDEFGH

13、下列关于数组初始化的说法不正确的是( ).
A、char s[10]={ ’a’,’b’,’c’,’d’,’c’,’f’,’g’,’h’,’i’};”表示s[9]元素值为空字符
B、对于“char s|10|;”它的元素初值是不确定的
C、char s[10]={ ‘a’,’b’,’c’}”是不合法的,因为数组长度为10,而初始值仅有3个
D、若对数组s定义:“static char s[10];”,则数组元素值均为空字符

14、下列描述中不正确的是( ).
A、字符型数组中可能存放字符串。
B、可以对字符型数组进行整体输入、输出。
C、字符串函数声明在包ctype.h中。
D、字符串的结束符是’\0’。

15、定义如下变量和数组: int i ; int x[6] ={ 1,2,3,4,5,6}; 则语句for(i=0;i<3;i++) printf("%d? ",x [5-i]); 的输出结果是( ).
A、1 2 3
B、1 3 5
C、2 4 6
D、6 5 4

16、不能把字符串:Hello!赋给数组b的语句是( ).
A、char b[10]={ 'H','e','l','l','o','!'};
B、char b[5] ="Hello!";
C、char b[10]; strcpy(b,"Hello!");
D、char b[10]="Hello!";

17、以下对二维数组 a的正确定义是( ).
A、int a[3][];
B、float a(3,4);
C、double a[2][4];
D、float a(3)(4) ;

18、设有定义:char s[12]="string";则printf ("%d\n",strlen(s));的输出是( ).
A、6
B、7
C、11
D、12

19、函数调用strcat(strcpy(str1,str2),str3)的功能是( ).
A、将字符串str2复制到字符串str1中后再将字符串str3连接到字符串str1之后
B、将字符串str1复制到字符串str2中后再连接到字符串str3之后
C、将字符串str1复制到字符串str2中后再复制到字符串str3之后
D、将字符串str2连接到字符串str1中后再将字符串str1复制到字符串str3中

20、若有说明int a[3][4]=;下列叙述正确的是( ).
A、只有元素a[0][0]可得到初值0
B、此说明语句不正确
C、数组a中各元素都可得到初值,但其值不一定为0
D、数组a中每个元素均可得到初值0

21、定义如下变量和数组: int k; int a[3][3]={ 9,8,7,6,5,4,3,2,1}; 则下列语句的输出结果是( ). for(k=0;k<3;k++) printf(“%d”,a[k][k]);
A、7 5 3
B、9 5 1
C、9 6 3
D、7 4 1

22、判断字符串a和b是否相等,应使用( ).
A、if(a= =b)
B、if(a=b)
C、if(strcpy(a,b))
D、if(strcmp(a,b)= =0)

23、若有定义:int a[3][4],则对数组a中某元素的正确引用是( ).
A、a[2][4]
B、a[1][3]
C、a(5)
D、a[10-10]

24、在定义一维数组时,可以将该数组的长度省略.

25、数组名代表数组的首地址.

26、在C语言中,数组元素在内存中的存放顺序是按顺序存放的.

27、字符串函数strupr(str),可将串中大写字母变成小写字母.

28、字符串的结束符不是’\0’ .

29、可如此定义a数组:float a[3]={ 12.5,’z’,”school”};

30、数组边定义边赋值时,大括号内数据项的数目可以大于或等于数组的长度.

31、字符串函数strcat(str1,str2)的作用是将字符串str2连接在字符串str1后.

32、下面程序的输出结果是_______。 #include <stdio.h> int main() { char ch[7]={ "65ab21"}; int i; for (i=0;ch[i]>='0'&&ch[i]<='9';i++) printf("%c ",ch[i]); return 0; }

33、将程序补充完整,实现功能:输出斐氏数列的前20项,菲波纳契额数列具有这样的性质:F(0)=1 F(1)=2 F(N)=F(N-1)+F(N-2) #include <stdio.h> int main() { int i; long f[20]={ 1,2}; for(i=2 ; i<20 ; i++) f[i] =______________; for(i=0 ; i<20 ; i++) printf("%ld\t ",f[i]); return 0; }

34、将程序补充完整,实现功能:输入2个字符串,判断两个串是否相同,相同输出yes,不同输出no。 #include <stdio.h> #include <string.h> int main() { char x[80],y[80]; gets(x); gets(y); if(______________) puts("yes"); else puts("no"); return 0; }

35、设有以下代码: #include <stdio.h> int main() { int a[3][3],s=0; int i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%d",&a[i][j]); for(i=0;i<3;i++) for(j=0;j<i;j++) s+=a[i][j]; printf("%d\n",s); return 0; } 假设键盘上输入的9个数据为:1 2 3 4 5 6 7 8 9 , 上面程序的输出结果是__________。

36、下面程序执行后,s=_________。 float b[]={ 0.5,1.6,2.7,3.8,4.9,5,6.1,6.2,7.3,8.4},s; int i; for(i=0,s1=s2=0 ; i<9 ; i++ ) if( i%3 ) s2 += b[i] – (int) b[i];

第7周作业

1、用选择法对10个整型数进行升序排序。

2、有一个已经排好的数组,要求输入一个数后,按原来排序的规律将它插入到数组中。

3、将一个数组中的值按逆序重新存放。

第8周 模块处理独自成章-----函数

第八周测验

1、以下不正确的说法是( ).
A、在不同函数中可以使用相同名字的变量
B、形式参数是局部变量
C、在函数内定义的变量只在本函数范围内有定义
D、在某函数内定义的变量可在其余函数中通用

2、以下正确的函数定义是( ).
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)

3、以下正确的函数定义是( ).
A、double fun(int x, int y) { z=x+y ; return z ; }
B、double fun(int x,y) { int z ; return z ; }
C、fun (x,y) { int x, y ; double z ; z=x+y ; return z ; }
D、double fun (int x, int y) { double z ; return z ; }

4、若调用一个函数,且此函数中没有return语句,则正确的说法是( ).
A、该函数没有返回值
B、该函数返回若干个系统默认值
C、能返回一个用户所希望的函数值
D、返回一个不确定的值

5、已知一个函数的定义如下: double fun(int x, double y) { …… } 则该函数正确的函数原型声明为( ).
A、double fun (int x,double y)
B、fun (int x,double y)
C、double fun (int x ,double y );
D、fun(x,y) ;

6、C语言规定,函数返回值的类型是由( )决定的.
A、return语句中的表达式类型
B、调用该函数时的主调函数类型
C、调用该函数时由系统临时
D、在定义函数时所指定的函数返回类型

7、若在某程序中定义了多个函数,则以下说法中正确的是( ).
A、C语言程序总是从第一个的数开始执行
B、在C语言程序中,要调用的函数必须在main()函数中定义
C、C语言程序总是从main()函数开始执行
D、C语言程序中的main()函数必须放在程序的开始部分

8、设有某函数fun,定义如下: int fun(int x, int y) { …….. } 以下fun函数的调用,正确的是( ).
A、fun(3 , 4.2)
B、fun(3 , 4)
C、int a; a = fun(3 , 4)
D、int a; a = fun(3 , 4.2)

9、已知函数FA调用FB,若要把这两个函数定义在同一个文件中,则( ).
A、FA必须定义在FB之前
B、FB必须定义在FA之前
C、若FA定义在FB之后,则FA的原型必须出现在FB的定义之前
D、若FB定义在FA之后,则FB的原型必须出现在FA的定义之前

10、若有下面的函数调用: fun(a+b,3,max(n-1,b)) 则fun的实参个数是( ).
A、3
B、4
C、5
D、6

11、下列关于C函数的叙述中,正确的是( ).
A、每个函数至少要具有一个参数
B、每个函数都必须返回一个值
C、函数在被调用之前必须先声明
D、函数不能自己调用自己

12、有以下程序 #include <stdio.h> int fun1(double a) { return a*=a; } int fun2(double x,double y) { double a=0,b=0; a=fun1(x);b=fun1(y); return(int)(a+b); } int main() { double w; w=fun2(1.1,2.0); return 0; } 程序执行后变量w中的值是( ).
A、5
B、5.21
C、0
D、10.21

13、以下关于函数的叙述中正确的是( ).
A、每个函数都可以被其他函数调用(包括 main 函数)
B、每个函数都可以被单独编译
C、每个函数都可以单独运行
D、在一个函数内部可以定义另一个函数

14、有以下程序: #define N 20 void fun(int a[],int n,int m) { int i ; for(i=m;i>=n;i--)a[i+1]=a[i]; } int main() { int i,a[N]={ 1,2,3,4,5,6,7,8,9,10}; fun(a,2,9); for(i=0;i<5;i++) printf("%d",a[i]); return 0; }程序运行后的输出结果是( ).
A、10234
B、12344
C、12334
D、12234

15、有以下程序: #include <stdio.h> #define P 3 void F(int x){ return(P*x*x); } int main() { printf("%d\n",F(3+5)); return 0; } 程序运行后的输出结果是( ).
A、192
B、29
C、25
D、编译出错

16、计算斐波那契数列第n项的函数定义如下: int fib(int n){ if(n= =0) return 1; else if(n= =1) return 2; else return fib(n-1)+fib(n-2); } 若执行函数调用表达式fib(2),函数fib被调用的次数是( ).
A、1
B、2
C、3
D、4

17、有以下程序 int fun(int n) { if(n==1) return 1; else return(n+fun(n-1)); } int main() { int x; scanf("%d",&x); x=fun(x); printf("%d\n",x); return 0; } 执行程序时,给变量x输入10,程序的输出结果是( ).
A、55
B、54
C、40
D、45

18、在函数中,可以用auto、extern、register和static这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是( ).
A、auto
B、extern
C、register
D、static

19、有以下程序 int fun(int x[],int n) { static int sum=0,i; for(i=0;i<n;i++) sum+=x[i]; return sum; } int main() { int a[]={ 1,2,3,4,5},b[]={ 6,7,8,9},s=0; s=fun(a,5)+fun(b,4); printf("%d\n",s); return 0; } 程序执行后的输出结果是( ).
A、45
B、50
C、55
D、60

20、有以下程序: #include <stdio.h> int a=2; int f(int n) { static int a=3; int t=0; if(n%2){ static int a=4; t+=a++; } else { static int a=5; t+=a++; } return t+a++; } int main() { int s=a,i; for(i=0;i<3;i++) s+=f(i); printf("%d\n",s); return 0; } 程序运行后的输出结果是( ).
A、30
B、29
C、28
D、19

21、在不同函数中可以使用相同名字的变量。

22、全局变量的作用域是整个程序。

23、局部变量的作用域是整个程序。

24、函数在做调用时,实际参数必须与形式参数一致,包括数量和数据类型。

25、函数的返回值必须与函数定义时的返回类型一致。

26、以下程序输出的结果是:____________

27、以下程序运行结果是:_________

28、下面程序执行过程中若输入23、45,运行结果是:___________

29、#include <stdio.h> int main() { int a=12,b=12; printf(“%d,%d\n”,--a,++b); return 0; } 程序执行后的输出结果是______.

30、#include <stdio.h> int main() { int x=0,y=5,z=3; while(z-->0&&++x<5) y=y-1; printf(“%d,%d,%d\n”,x,y,z); return 0; } 程序执行后的输出结果是________.

第八周作业

1、写两个函数,分别求出两个整数的最大公约数和最小公倍数,用主函数调用这个两个函数,并输出结果。两个整数由键盘输入。

2、

3、写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。

第9周 程序利器所向披靡----指针

第九周单元测试(指针)

1、有以下程序,其中函数fun的功能是将多个字符串按字典顺序排序: #include <stdio.h> #include <string.h> void fun(char *p[],int n) { char *t; int i,j; for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(strcmp(p[i],p[j])>0) { t=p[i]; p[i]=p[j]; p[j]=t; } } int main() { char *p[5]={ "abc","aabdfg","abbd","dcdbe","cd"}; fun(p,5); printf("%d\n",strlen(p[1])); return 0; } 程序运行后的输出结果是( ).
A、1
B、2
C、3
D、4

2、有以下函数: fun(char *a,char *b) { while((*a!='\0')&&(*b!='\0')&&(*a==*b)) { a++; b++; } return(*a-*b); } 该函数的功能是( ).
A、计算a和b所指字符串的长度之差
B、将b所指字符串连接到b所指字符串中
C、将b所指字符串连接到a所指字符串后面
D、比较a和b所指字符串的大小

3、执行语句int a=20,*p=&a;后,下列描述错误的是( ).
A、p的值为20
B、p指向整型变量a
C、*p表示变量a的值
D、p的值是变量a的地址

4、已知p是指针变量,则不能初始化指针的值是( ).
A、1
B、0
C、NULL
D、某个变量的地址

5、下面能正确使用的语句是( ).
A、int*x;y=1;x=&y;
B、int*x;y;x=&y;
C、int*x;*x=1;
D、int*x,y=1;x=y;

6、语句int*p=&k;定义了指针p,与这个语句等效的语句序列是( ).
A、int*p;p=&k;
B、int*p;p=k;
C、int*p;*p=&k;
D、int*p;*p=k;

7、若有说明语句:double *p,a;则能通过scanf语句正确给输入项读入数据的程序段是( ).
A、*p=&a; scanf("%lf",p);
B、*p=&a; scanf("%f",p);
C、p=&a; scanf("%lf",*p);
D、p=&a; scanf("%lf",p);

8、若有定义 int x=0,*p=&x;,则语句 printf("%d\n",*p);的输出结果是( ).
A、随机值
B、0
C、x 的地址
D、p 的地址

9、设有定义 int n1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与 n2=n1;语句等价的是( ).
A、*p=*q;
B、p=q;
C、*p=&n1;
D、p=*q;

10、有以下程序: #include <stdio.h> #include <string.h> int main() { int a[10]={ 1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p+2; printf("%d\n",*p+*q); return 0; } 程序运行后的输出结果是( ).
A、16
B、10
C、8
D、6

11、有以下程序: #include <stdio.h> #include <string.h> int main() { int a[3][3],*p,i; p=&a[0][0]; for(i=0;i<9;i++) p[i]=i; for(i=0;i<3;i++) printf("%d",a[1][i]); return 0; } 程序运行后的输出结果是( ).
A、123
B、345
C、234
D、135

12、有以下程序: #include <stdio.h> #include <string.h> int main() { int a[]={ 1,2,3,4,5,6,7,8,9,0},*p; for(p=a;p<a+10;p++) printf("%d,",*p); return 0; } 程序运行后的输出结果是( ).
A、1,2,3,4,5,6,7,8,9,0,
B、2,3,4,5,6,7,8,9,10,1,
C、0,1,2,3,4,5,6,7,8,9,
D、1,1,1,1,1,1,1,1,1,1,

13、下列选项中,变量pt是数组指针的是( ).
A、int (*pt)[5]
B、int *pt[5]
C、(int*)pt[5]
D、int *pt[]

14、有如下定义:int a[5]={ 1,3,5,7,9},*p=a;下列表达式中不能得到数值5的是( ).
A、a[2]
B、a[3]
C、*(p+2)
D、*p+4

15、int *p[4];的定义与 ( )中的定义等价.
A、int p[4]
B、int *p
C、int *(p[4])
D、int (* p)[4]

16、若有语句 char *line[5];,以下叙述中正确的是( ).
A、定义 line 是一个数组,每个数组元素是一个基类型为 char 的指针变量
B、定义 line 是一个指针变量,该变量可以指向一个长度为 5 的字符型数组
C、定义 line 是一个指针数组,语句中的*号称为间址运算符
D、定义 line 是一个指向字符型函数的指针

17、有以下程序: #include <stdio.h> #include <string.h> int main() { char s[]="159",*p; p=s; printf("%c",*p++); printf("%c",*p++); return 0; } 程序运行后的输出结果是( ).
A、15
B、19
C、59
D、51

18、程序中若有如下说明和定义语句 char fun(char *); int main() { char *s="one",a[5]=,(*f1)()=fun,ch; ...... } 以下选项中对函数 fun 的正确调用语句是( ).
A、(*f1)();
B、*f1(*s);
C、fun(&a);
D、ch=*f1(s);

19、字符串在内存中的起始地址称为字符串的指针,可以定义一个字符指针变量指向一个字符串.

20、指针变量和它指向的变量之间的关系,可以用指针运算符“*”表示.

21、当两个指针变量指向同一个数组时,两指针变量相减所得之差是两个指针所指数组元素之间相差的元素个数.

22、变量的两个值 : 本身值和地址值都是可以改变的.

23、不允许把一个数值或字符赋予指针变量.

24、有指针变量p和数组a,指针变量和数组都可以实现本身的值的改变,如p++和a++.

25、char *s="C Language";表示s是一个指向字符串的指针变量,把字符串的首地址赋予s.

26、指针数组的每个元素都是一个指针变量.

27、指针数组的每个元素都是一个指针变量.

28、指针变量,只能作为函数的形参,不可以作函数的实参.

29、如果指针变量p已指向数组中的一个元素,则p+1指向同一数组中的下一个元素.

30、int (*p)[4]它表示p是一个指针数组,它包含4个指针变量元素.

31、可以用一个指针变量指向一个函数,然后通过该指针变量调用此函数.

32、直接访问就是直接利用变量的地址进行存取直接访问.

33、以下程序输出的结果是_____________. #include <stdio.h> #include <string.h> void swap(int *pa,int *pb) { int *p; p=pa; pa=pb; pb=p; } int main() { int a=10,b=20; int *p1=&a,*p2=&b; if(a<b) swap(p1,p2); printf("%d,%d\n",a,b); return 0; }

34、以下程序输出的结果是________. #include<stdio.h> int a=5; int b=7; int plus(int *x,int *y) { int z; z=*x+*y; return (z); } int main() { int a=4,b=5,c,*pa=&a,*pb=&b; c=plus(pa,pb); printf("%d\n",c); return 0; }

35、以下程序输出的结果是( ). #include<stdio.h> int f(int y) { static int i=5; y++; i*=2; return i+y; } int main() { int x=3,c,*px=&x; c=f(*px); printf("%d\n",c); return 0; }

36、以下程序输出结果是___________. #include <stdio.h> #include <string.h> int main() { int a=2,*pa=&a; float n=5.888,b,*pn=&n; b=*pa+(int)*pn; printf("%.1f\n",b); return 0; }

37、以下程序的输出结果是_____. #include <stdio.h> #include <string.h> int main() { int a=1,b=1,*pa,*pb; for(pa=&a,pb=&b;*pa<=100;(*pa)++) { if(*pb>=10) break; if(*pb%3==1) { *pb+=3; continue; } } printf("%d\n",a); return 0; }

期中考试

C语言程序设计检测卷

1、以下选项中正确的实型常量是( ).
A、2.3
B、E-2
C、2e
D、1,000

2、以下选项中不合法的用户标示符是( )
A、_123
B、A12_1
C、$
D、Ds

3、C语言中运算对象必须是整型的运算符是( ).
A、%
B、/
C、!
D、*

4、若变量已正确定义并赋值,符合C语言语法的表达式是( ).
A、a=a+7;
B、a=7+b+c,a++
C、int(12.3%4)
D、a=a+7=c+b

5、下面合法的赋值语句是( ).
A、a=b=58
B、k=int(a+b)
C、a=58,b=58
D、--i

6、若变量已正确定义为int ,要给a,b,c输入数据,正确的输入语句是( ).
A、gets(a,b,c)
B、scanf(“%d%d%d”,a,b,c)
C、scanf(“%D%D%D”,&a,&b,&c)
D、scanf(“%d%d%d”,&a,&b,&c)

7、若变量a,b,t已正确定义,要将a和b中的数进行交换,以下选项中不正确的语句组是( ).
A、a=a+b,b=a-b,a=a-b;
B、t=a,a=b,b=t;
C、a=t;t=b;b=a
D、t=b;b=a;a=t;

8、若有正确定义语句: double x=5.16894; 语句printf(“%f\n”,(int)(x*1000+0.5)/(double)1000);的输出结果是( ).
A、输出格式说明与输出项不匹配,输出无定值
B、5.170000
C、5.168000!
D、5.169000

9、若有以下程序段: int a=0,b=0,c=0; c=(a-=a-5),(a=b,b+3); printf(“%d,%d,%d\\n”,a,b,c); 执行后的输出结果是( ).
A、3,0,-10
B、0,0,5
C、-10,3,-10
D、3,0,3

10、下列运算符中优先级别最高的是( ).
A、!
B、%
C、-=
D、&&

11、为表示关系:,应使用的C语言表达式是( ).
A、(x>=y)&&(y>=z)
B、(x>=y)AND(y>=x)
C、(x>=y>=z)
D、(x>=y)&(y>=z)

12、设a、b和c都是int 型变量,且a=3,b=4,c=5,则以下的表达式中值为0的表达式是( ).
A、a&&b
B、a<=b
C、a||b+c&&b-c
D、!((a<b)&&!c||1)

13、有以下程序: #include<stdio.h> int main() { int a=2,b=-1,c=2; if(a<b) if(b<0) c=0; else c+=1; printf(“%d\n”,c); return 0; } 程序的运行结果是( ).
A、0
B、1
C、2
D、3

14、有以下程序: #include<stdio.h> int main() { int w=4,x=3,y=2,z=1; printf(“%d\n”,(w<x?w:z<y?z:x)); return 0; } 程序的运行结果( ).
A、1
B、2
C、3
D、4

15、有以下程序: int main() { int a,b,s; scanf(“%d %d”,&a,&b); s=a; if(a<b) s=b; s*=s; printf(“%d\n”,s); return 0; } 若执行以上程序时从键盘上输入3和4,则输出结果是( ).
A、14
B、16
C、18
D、20

16、有以下程序段: y=-1; if(x!=0) if(x>0) y=1; else y=0; 其能正确表示的数学函数关系是( ).
A、
B、
C、
D、

17、若有定义语句int a, b;double x;则下列选项中正确的是( ).
A、switch(x%2) { case 0: a++; break; case 1: b++; break; default : a++; b++; }
B、switch((int)x/2.0) { case 1: b++; break; case 0: a++; break; default : a++; b++; }
C、switch((int)x%2) { case 0: a++; break; case 1: b++; break; default : a++; b++; }
D、switch((int)(x)%2) { case 0.0: a++; break; case 1.0: b++; break; default : a++; b++; }

18、有以下程序段: int k,j,s; for(k=2;k<6;k++,k++) { s=1; for(j=k;j<6;j++) s+=j; } printf(“%d\n”,s); 程序段的输出结果是( ).
A、9
B、1
C、11
D、10

19、有以下程序段: int i,j,m=0; for(i=1;i<=15;i+=4) for(j=3;j<=19;j+=4) m++; printf(“%d\n”,m); 程序段的输出结果是( ).
A、12
B、15
C、20
D、25

20、有以下程序段: int n=10; while(n>7) { n--; printf(“%d\n”,n); } 程序段的输出结果是( ).
A、10 9 8
B、9 8 7
C、10 9 8 7
D、9 8 7 6

21、有以下程序段: int x=3; do printf(“%3d”,x-=2); while(!(--x)); 程序段的输出结果是( ).
A、1
B、0
C、1 -2
D、死循环

22、有以下程序: #include <stdio.h> int main() { int i,sum; for(i=1;i<=6;i++) sum+=sum; printf(“%d\n”,sum;); return 0; } 程序的输出结果是( ).
A、15
B、14
C、不确定
D、0

23、有以下程序: #include <stdio.h> int main() { int i; for(i=1;i<=5;i++) { if(i%2) printf(“*”); else continue; printf(“#”); return 0; } pintf(“$\n”);} 程序的输出结果是( ).
A、*#*#*#$
B、#*#*#*$
C、*#*#$
D、#*#*$

24、有以下程序: #include<stdio.h> int main() { int x,i; for(i=1;i<=100;i++) { x=i; if(++x%2==0) if(++x%3==0) if(++x%7==0) printf(“%d”,x); } printf(“\n”); return 0; } 程序的输出结果是( ).
A、28 70
B、42 84
C、26 68
D、39 81

25、以下错误的描述是( ).
A、break语句不能用于循环语句和switch语句外的任何其它语句
B、在switch语句中使用break语句或continue语句的作用相同
C、循环语句中使用continue是为了结束本次循环,而不是终止整个循环
D、循环语句中使用break是为了使流程跳出循环体,提前结束循环

26、已知int I,x[3][3]={ 1,2,3,4,5,6,7,8,9}; 则下面语句的输出结果是( ). for(I=0;I<3;I++) printf(“%d”,x[I][2-I]);
A、159
B、147
C、357
D、369

27、不能对二维数组a进行正确初始化的语句是( ).
A、int a[2][3]=;
B、int a[][3]={ { 1,2},};
C、int a[2][3]={ { 1,2},{ 3,4},{ 5,6}};
D、int a[][3]={ 1,2,3,4,5,6};

28、已知在函数外面有 int a[][4]={ 1,1};则下面叙述错误的是( ).
A、数组a的每个元素都可以得到初值0
B、二维数组a的第一维大小为1
C、二维数组a的行数起始值为0
D、只有元素a[0][0]和a[0][1]可得到初值0,其余元素得不到初值

29、下面描述正确的是( ).
A、两个字符串所包含的字符个数相同时,才能比较字符串
B、字符个数多的字符串比字符少的字符串大
C、字符串“STOP”与 “sTOP”相等
D、字符串“That”小于 “The”

30、有以下程序段: int a[]={ 4,0,2,3,1},i,j,t; for(i=1;i<5;i++) { t=a[I];j=i-1; while(j>=0&&t>a[j]) { a[j+1]=a[j];j—} a[j+1]=t; } 该程序功能是( ).
A、对数组a进行插入排序(升序)
B、对数组a进行插入排序(降序)
C、对数组a进行选择排序(升序)
D、对数组a进行选择排序(降序)

31、预处理命令的前面必须加一个“#”号。

32、在if语句的三种形式中,如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用{ }括起来组成一个复合语句。

33、continue 不是结束本次循环,而是终止整个循环的执行。

34、在对数组全部元素赋初值时,不可以省略行数,但能省略列数。

35、C 语言标准格式输入函数 scanf() 的参数表中要使用变量的地址值。

36、浮点型常量的指数表示中 ,e 是可以省略的。

37、任何表达式语句都是表达式加分号组成的。

38、用字符串方式赋值比用字符逐个赋值要多占一个字节, 用于存放字符串结束标志'\0'。

39、do-while循环至少要执行一次循环语句。

40、数组名能与其它变量名相同。数组名后是用方括号括起来的常量表达式,不能用圆括号。

41、条件运算符?和:是一对运算符,不能分开单独使用。

42、函数strcmp从头至尾顺序地将其对应字符比较,遇到两个字符不等时,两个字符相减得到一个int型值,两个字符串完全相同时,则返回0。

43、C 语言标准输入操作中 ,gets() 函数一次只可读取一个字符。

44、bre

学习通C语言程序设计_38

本篇是学习通C语言程序设计第38章的相关文章,主要介绍了C语言的文件读写操作。

文件读写操作

在C语言中,文件读写操作是非常常见的操作。文件可以被看做是一种特殊的数据类型,可以被读取、写入和更新。

文件读取

文件读取操作就是从文件中读取数据到程序中。C语言提供了多种读取文件的函数,比较常用的是fopen()和fscanf()函数。

下面是一个简单的例子,演示了如何从文件中读取数据:

#include <stdio.h>int main(){     FILE* fp;    char str[100];    fp = fopen(\test.txt\ \r\    if(fp == NULL)    {         printf(\Error: File open failed.\        return 1;    }    fscanf(fp, \s\ str);    printf(\Read from file: %s\ str);    fclose(fp);    return 0;}

在这个例子中,我们打开了一个名为test.txt的文件,读取了文件中的第一个字符串,并将其打印到屏幕上。注意,我们使用了fscanf()函数来读取文件。

文件写入

文件写入操作就是将程序中的数据写入到文件中。C语言中也提供了多种写入文件的函数,比较常用的是fopen()和fprintf()函数。

下面是一个简单的例子,演示了如何将数据写入到文件中:

#include <stdio.h>int main(){     FILE* fp;    char str[100] = \Hello world!\    fp = fopen(\test.txt\ \w\    if(fp == NULL)    {         printf(\Error: File open failed.\        return 1;    }    fprintf(fp, \s\ str);    printf(\Write to file: %s\ str);    fclose(fp);    return 0;}

在这个例子中,我们打开了一个名为test.txt的文件,将字符串\Hello world!\写入到文件中,并将其打印到屏幕上。注意,我们使用了fprintf()函数来写入文件。

文件更新

文件更新操作就是同时读取和写入文件。C语言中也提供了多种更新文件的函数,比较常用的是fopen()和fread()、fwrite()函数。

下面是一个简单的例子,演示了如何更新文件:

#include <stdio.h>int main(){     FILE* fp;    char str[100];    fp = fopen(\test.txt\ \r+\    if(fp == NULL)    {         printf(\Error: File open failed.\        return 1;    }    fread(str, sizeof(char), 6, fp);    printf(\Read from file: %s\ str);    fseek(fp, 0, SEEK_SET);    fwrite(\Hello\ sizeof(char), 5, fp);    fclose(fp);    return 0;}

在这个例子中,我们打开了一个名为test.txt的文件,首先读取了文件中的前6个字符,然后将文件指针移动到文件开头,并将字符串\Hello\写入到文件中。注意,我们使用了fread()和fwrite()函数来读取和写入文件,使用了fseek()函数来移动文件指针。

总结

C语言中的文件读写操作是非常常见的操作。文件可以被看做是一种特殊的数据类型,可以被读取、写入和更新。常用的文件读写函数有fopen()、fscanf()、fprintf()、fread()、fwrite()等。

在进行文件读写操作时,需要注意一些常见的错误情况,比如文件不存在、文件打开失败等。同时也需要注意文件指针的移动,确保读写位置正确。

学习通C语言程序设计_38

本篇是学习通C语言程序设计第38章的相关文章,主要介绍了C语言的文件读写操作。

文件读写操作

在C语言中,文件读写操作是非常常见的操作。文件可以被看做是一种特殊的数据类型,可以被读取、写入和更新。

文件读取

文件读取操作就是从文件中读取数据到程序中。C语言提供了多种读取文件的函数,比较常用的是fopen()和fscanf()函数。

下面是一个简单的例子,演示了如何从文件中读取数据:

#include <stdio.h>int main(){     FILE* fp;    char str[100];    fp = fopen(\test.txt\ \r\    if(fp == NULL)    {         printf(\Error: File open failed.\        return 1;    }    fscanf(fp, \s\ str);    printf(\Read from file: %s\ str);    fclose(fp);    return 0;}

在这个例子中,我们打开了一个名为test.txt的文件,读取了文件中的第一个字符串,并将其打印到屏幕上。注意,我们使用了fscanf()函数来读取文件。

文件写入

文件写入操作就是将程序中的数据写入到文件中。C语言中也提供了多种写入文件的函数,比较常用的是fopen()和fprintf()函数。

下面是一个简单的例子,演示了如何将数据写入到文件中:

#include <stdio.h>int main(){     FILE* fp;    char str[100] = \Hello world!\    fp = fopen(\test.txt\ \w\    if(fp == NULL)    {         printf(\Error: File open failed.\        return 1;    }    fprintf(fp, \s\ str);    printf(\Write to file: %s\ str);    fclose(fp);    return 0;}

在这个例子中,我们打开了一个名为test.txt的文件,将字符串\Hello world!\写入到文件中,并将其打印到屏幕上。注意,我们使用了fprintf()函数来写入文件。

文件更新

文件更新操作就是同时读取和写入文件。C语言中也提供了多种更新文件的函数,比较常用的是fopen()和fread()、fwrite()函数。

下面是一个简单的例子,演示了如何更新文件:

#include <stdio.h>int main(){     FILE* fp;    char str[100];    fp = fopen(\test.txt\ \r+\    if(fp == NULL)    {         printf(\Error: File open failed.\        return 1;    }    fread(str, sizeof(char), 6, fp);    printf(\Read from file: %s\ str);    fseek(fp, 0, SEEK_SET);    fwrite(\Hello\ sizeof(char), 5, fp);    fclose(fp);    return 0;}

在这个例子中,我们打开了一个名为test.txt的文件,首先读取了文件中的前6个字符,然后将文件指针移动到文件开头,并将字符串\Hello\写入到文件中。注意,我们使用了fread()和fwrite()函数来读取和写入文件,使用了fseek()函数来移动文件指针。

总结

C语言中的文件读写操作是非常常见的操作。文件可以被看做是一种特殊的数据类型,可以被读取、写入和更新。常用的文件读写函数有fopen()、fscanf()、fprintf()、fread()、fwrite()等。

在进行文件读写操作时,需要注意一些常见的错误情况,比如文件不存在、文件打开失败等。同时也需要注意文件指针的移动,确保读写位置正确。

文章版权及转载声明

本文地址:http://www.zzxhsh.org/3e799463.html发布于 2024-05-19 06:32:17
文章转载或复制请以超链接形式并注明出处五煦查题

评论列表 (暂无评论,44人围观)参与讨论