C语言程序设计(杨桂华)(桂林理工大学) 中国大学mooc慕课答案2024版 m60355
第1周—初识C语言-从简单程序开始 第一周测验
1、 对于一个正常运行的C程序,以下叙述中正确的是( )。
答案: 程序的执行总是从main函数开始,在main函数结束
2、 ( )是构成C语言程序的基本单位。
答案: 函数
3、 下列关于C语言的说法错误的是( )。
答案: C语言不区分大小写
4、 以下叙述不正确的是( )。
答案: 在C程序中,注释说明只能位于一条语句的后面
5、 以下选项中非法的标示符的是( )。
答案: int
6、 下列说法中正确的是( )。
答案: C程序书写时,一个语句可分成几行书写
7、 C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符( )。
答案: 必须为字母或下划线
8、 以下叙述正确的是( )。
答案: C语言本身没有输入输出语句
9、 计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是( )。
答案: C语言程序仅可以编译执行
10、 以下叙述中错误的是( )。
答案: 在没有C语言编译器的计算机上不能运行C源程序生成的.exe文件
11、 能将C语言程序转换成目标语言程序的是( )。
答案: 编译程序
12、 可以在C语言中用做用户标识符的是( )。
答案: as_b3 _123 If
13、 在使用程序流程图来表示算法时,菱形用来表示( )。
答案: 判断分支
14、 在C语言中,不正确的int类型的常数是( )。
答案: 10101010
15、 以下说法中正确的是( )。
答案: c语言程序总是从main()函数开始执行
16、 结构化程序设计主要强调的是( )。
答案: 程序的易读性
17、 一个良好的算法由下面的基本结构组成,但不包括( )。
答案: 跳转结构
18、 以下叙述中正确的是( )。
答案: C语言以接近英语国家的自然语言和数学语言作为语言的表达形式
19、 程序流程图(PFD)中的箭头代表的是( )。
答案: 控制流
20、 以下叙述中正确的是( )。
答案: C源程序中,凡是行首以#标识的控制行都是预处理指令
21、 C语言中主函数的个数为( )个。
答案: 1
22、 以下关于C语言描述错误的是( )。
答案: 一个C程序可以包含多个main函数
23、 C 语言源程序文件后缀为( )。
答案: .c
24、 C 语言具有简洁明了的特点。
答案: 正确
25、 预处理命令的前面必须加一个“#”号。
答案: 正确
26、 标准格式输入函数scanf()可以从键盘上接收不同数据类型的数据项。
答案: 正确
27、 C 语言标准格式输入函数 scanf() 的参数表中要使用变量的地址值。
答案: 正确
28、 任何表达式语句都是表达式加分号组成的。
答案: 正确
29、 在C语言中,逗号既可以作为运算符,也可以作为分隔符。
答案: 正确
30、 C语言的书写格式不会影响程序的可读性。
答案: 错误
31、 C 语言程序中可以有多个函数 , 但只能有一个主函数。
答案: 正确
32、 C 语言程序实现与其他高级语言一样也要经过编辑、编译链接和运行这样的三步曲。
答案: 正确
33、 下划线是标识符中的合法字符。
答案: 正确
34、 C语言中语句结束的标志是_。
答案: (以下答案任选其一都对)分号;
;
35、 C程序的基本构成单位是______。
答案: 函数
36、 C程序源文件的后缀名是__。
答案: (以下答案任选其一都对).c;
.C
37、 若有定义:char c=‘\010’;则变量c中包含的字符个数为_____。
答案: 1
38、 结构化程序的三种基本结构是顺序结构、分支结构和_____结构。
答案: 循环
作业第2周—-数据性质的限定–数据类型 数据类型作业
1、 分析并写出以下程序的运行结果:#include <stdio.h>int main() { int a=10,b=4; float x=23.2,y=5.6; printf(“%.2f”,(float)(a*b)/2); printf(“%d”,(int)x%(int)y); return 0;}
评分规则: 给出正确结果:20.00 3给20分;只有一个正确,给10分;第一个数后小数位不是2位,按错处理。
2、 分析并写出下面程序的输出结果:#include <stdio.h>int main() { float x=123.456; printf(“%-5.2f”,x); return 0;}
评分规则: 给出正确结果:123.46,给20分其他结果按0分处理。
3、 下面程序在屏幕上的输出是__。int main(){printf(”ab\b\b c”);}A)ab\b\b c B)a c C)abc D)ab c
评分规则: 正确答案为B,选对给20分否则,按0分处理
4、 以下选项中合法的实型常数是__。A)5E2.0 B)E-3 C).2E0 D)1.3E
评分规则: 正确答案为C,选对给20分否则,给0分。
第2周—-数据性质的限定–数据类型 第二周测验
1、 下列四组选项中,均是不合法的用户标识符的选项是( )。
答案: x-2 int 3m
2、 下列四组选项中,均是合法转义字符的选项是( )。
答案: ‘\? ’‘\“’‘’
3、 下面不正确的字符常量是( )。
答案: ”A“
4、 有定义:char a; int b; float x; double y;则表达式a%b-y*x值的数据类型为( )。
答案: double
5、 下列变量定义中合法的是( )。
答案: long _x=12L;
6、 下列字符串中不能作为标识符使用的是( )。
答案: 9stars
7、 以下叙述中错误的是( )。
答案: 用户所定义的标识符允许使用关键字
8、 以下不合法的字符常量是( )。
答案: ‘\018’
9、 下列错误的十六进制型常量表示是( )。
答案: 0xg
10、 字符串”\t\1234\””转义字符有( )个。
答案: 3
11、 各种基本数据类型的存贮空间正确的长度排列为( )。
答案: char<int <float<double
12、 不是C语言提供的合法关键字是( )。
答案: this
13、 若已定义x和y为float类型,且x=1;则表达式y=x+3/2的值是( )。
答案: 2.000000
14、 C语言中双精度浮点型变量double在内存中占( )字节。
答案: 8
15、 以下选项中属于C语言的数据类型是( )。
答案: 双精度型
16、 以下每个选项都代表一个常量,其中正确的整型常量是( )。
答案: -20
17、 不合法的八进制数是( )。
答案: 018
18、 下列哪个标识符是C语言合法的标识符( )。
答案: ba2
19、 在C程序中,设一表达式中包含有int,long, unsigned和char类型的变量和数据,则表达式最后的运算结果类型是( )。
答案: long
20、 C语言中基本的数据类型不包括( )。
答案: 字符串型
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中的值为_____。
答案: D
40、 在C语言中,char型数据在内存中的存储形式是______码。
答案: (以下答案任选其一都对)ASCII;
ascii
41、 若x是int型变量,则执行表达式x=(a=4,6*2)后,x的值为______。
答案: 12
42、 getchar函数可以接收______个字符,输入数字也按字符处理。
答案: (以下答案任选其一都对)1;
单
43、 一般一个字符变量在内存中占_____个字节。
答案: (以下答案任选其一都对)1;
一
第3周 数据加工处理—-运算符及表达式 第三周单元测试
1、 设有定义 int k=3,m=6; float f=12;,则以下选项中错误的表达式是( )。
答案: m%int(f)
2、 有以下程序:#include <stdio.h>int main(){ char c1=’A’,c2=’a’;printf(“%c”,(c1,c2));return 0;}以下叙述中正确的是( )。
答案: 程序输出小写字母 a
3、 设有定义 int x=2,y=3,z=4;,则以下选项中值为 0 的表达式是( )。
答案: (!x==1)&&(!y==0)
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”,x); return 0;}则程序输出结果是( )。
答案: 1
5、 已知下列语句中的a和b都是int型变量,其中错误的语句是( )。
答案: (a+b)++;
6、 以下程序输出的结果是( )。#include <stdio.h>int main() { int x=13,y=24; printf(“%d%d”,x++,++y); printf(“%d%d”,x++,++y); return 0;}
答案: 13251426
7、 在C 语言中,逻辑值“真”用 表示( )。
答案: 非0 的数
8、 下列运算符中优先级最低的是( )。
答案: ?:
9、 以下能正确定义且赋初值的语句是( )。
答案: char c=32;
10、 设a为整型变量,不能正确表达数学关系:10<a<15的C语言表达式是( )。
答案: 10<a<15
11、 表达式“10!=9”的值是( )。
答案: 1
12、 设有单精度变量f,其值为13.8。执行语句“n=( (int)f )%3;”后,n的值是( )。
答案: 1
13、 若有代数式3ae/bc,则不正确的c语言表达式是( )。
答案: 3a*e/b/c
14、 设有变量说明:float x = 4.0 , y = 4.0,下面使x为10.0的表达式是( )。
答案: x += y+2
15、 执行语句”x=(a=3,b=a–)”后,x,a,b的值依次为( )。
答案: 3,2,3
16、 以下程序输出的结果是( )。#include <stdio.h>int main() { int a,b,c=30; a=c/5%9; b=a&&(-10); printf(“%d,%d”,a,b); return 0;}
答案: 6,1
17、 执行下列语句后,y的值是( )。int x=1,y=1;++x||++y;
答案: 1
18、 以下程序输出的结果是( )。#include <stdio.h>int main() { int x=2; x+=x-=x*x; printf(“%d”,x); return 0;}
答案: -4
19、 已知各变量的类型说明如下: int m=8,n, a, b; unsigned long w=10; double x=3.14, y=0.12; 则以下符合C语言语法的表达式是( )。
答案: a+=a-=(b=2)*(a=8)
20、 以下符合C语言语法的赋值表达式是( )。
答案: a=(9+b, c=d+9)
21、 在C语言中,要求运算数必须是整型的运算符是( )。
答案: %
22、 已知s是字符型变量,下面不正确的赋值语句是( )。
答案: s= ’u+v’;
23、 设x、y均为float型变量,则不正确的赋值语句是( )。
答案: y=(x%3)/10;
24、 以下程序输出的结果是( )。#include <stdio.h>int main() { int x=12345; printf(“%2d”,x); return 0;}
答案: 12345
25、 以下程序输出的结果是( )。#include <stdio.h>int main() { unsigned char x,y; x=7^3; y=~4&3; printf(“%d,%d”,x,y); return 0;}
答案: 4,3
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的值是______。
答案: 0
37、 若有以下定义,int m=5,y=2;则计算表达式y+=y-=m*=y后y的值是______。
答案: -16
38、 若a是int型变量,则表达式(a=45,a2),a+6的值为______。
答案: 26
39、 若a是int型变量,则计算表达式a=25/3%3后a的值为______。
答案: 2
40、 若x和n均是int型变量,且x和n的初值均为5,则计算表达式x+=n++后x的值为______。
答案: 10
41、 若有定义:int b=7;float a=2.5,c=4.7;则表达式a+(int)(b/3*(int)(a+c)/2)%4的值为______。
答案: 5.500000
42、 若有定义:char c=’\010′;则变量c中包含的字符个数为______个。
答案: (以下答案任选其一都对)1;
一
43、 若有定义:int a,b;表达式a=2,b=5,a++,b++,a+b的值为______。
答案: 9
44、 表达式8/4(int)2.5/(int)(1.25(3.7+2.3))值的数据类型为_____。
答案: (以下答案任选其一都对)int;
整型
45、 若a和b均为int型变量,则以下语句的功能是______。 a+=b;b=a-b;a-=b;
答案: 交换a和b的值
作业第3周 数据加工处理—-运算符及表达式 第三周作业
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”,m,x,y,z); return 0;}
评分规则: 本题正确答案:7,5,4,8如果没有逗号,则数据正确,给5分;如果数据有一个错,则扣2分;都正确给20分。
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
评分规则: 正确答案为:A选其他选项给0分。
3、 判断整型变量ch是否为数字的正确表达式是( )。A) ‘0’<=ch<=‘9’ B) (ch>=‘0’)&(ch<=‘9’)C) (ch>=‘0’)&&(ch<=‘9’) D) (‘0’<= ch)AND(‘9’>= ch)
评分规则: 正确答案为:C选择错给0分。
4、 设整型变量a为5,使b不为2的表达式是( )。A) b = a/2 B) b = 6-(–a) C) b=a%2 D) b=a>3?2:1
评分规则: 正确答案为:C选择错给0分。
5、 以下程序段的输出结果是( )。int x=10,y=10; printf(“%d %d”,x–,–y);A) 10 10 B) 9 9 C) 9 10 D) 10 9
评分规则: 正确答案为:D选择错给0分。
6、 下列语句不具有赋值功能的是( )。A)a*=b B)x=1 C)a+b D)a++
评分规则: 正确答案为:C选择错给0分。
7、 下列程序段输出结果是( )。int j=2 , i=1;j /= i*j;printf(“%d”,j);A)0 B)1 C)2 D)3
评分规则: 正确答案为:B。选错给0分。
8、 执行 x=(6*7%8+9)/5; 后,x的值为( )。A)1 B)2 C)3 D)4
评分规则: 正确答案为:B。选错给0分。
9、 若已定义x和y为double类型,则表达式x = 1,y = x+3/2的值是( )。A)1 B)2 C)2.0 D)2.5
评分规则: 本题正确答案为;C选错给0分。
10、 阅读以下程序,并给出程序的输出结果。#include <stdio.h>int main() { int a=43; int b = 148; printf(“%d”,a&b); return 0;}
评分规则: 正确答案为:0结果不正确给0分。
第4周 自上而下依次执行—-顺序程序设计 第四周测试
1、 设有如下定义: int x=11,y=3, z; 则语句printf(“%d”, z = x%y ); 的输出结果是( )。
答案: 2
2、 设整型变量x的值为3,执行语句”x += x;”后,x的值是( ).
答案: 6
3、 以下能正确定义且赋初值的语句是( ).
答案: char c=32;
4、 设有定义int k=1,m=2;float f=7;,则以下选项中错误的表达式是( ).
答案: k%int(f)
5、 以下选项中,当x为大于1的奇数时,值为0 的表达式是( ).
答案: x%2==0
6、 表达式3.6-5/2+1.2+5%2的值是( ).
答案: 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”,x+y+z); return 0; }
答案: 不确定值
8、 假设所用变量已经定义,以下不符合C语言语法的赋值语句是( ).
答案: j=j=5;
9、 设有说明语句:char a=‘\72’;则变量a( ).
答案: 包含1个字符
10、 以下程序的输出结果是( ).# include <stdio.h>int main(){ int i=010 , j = 10;printf(“%d,%d”,+ +i , j – -); return 0; }
答案: 9,10
11、 在C语言中,如果下面的变量都是int类型,则输出的结果是( ). sum=pa=5; pd=sum + + ,pd + + , + + pd; printf(“%d”,pa);
答案: 5
12、 假设a,b,i,k都已正确定义,请选出合法的C语言赋值语句( ).
答案: i++;
13、 设有如下定义: int x=10,y=3,z; 则语句printf(“%d”,z=(x%y,x/y)); 的输出结果是( ).
答案: 3
14、 设x和y均为int型变量,则以下语句:x+=y,y=x-y;x-=y;的功能是( ).
答案: 交换x和y中的值
15、 设x、y、z和k都是int型变量,则执行表达式:x=(y=4,z=16,k=32)后,x的值为( ).
答案: 32
16、 设有 int x=11; 则表达式 (x++ * 1/3) 的值是( ).
答案: 3
17、 若有以下说明语句,则该语句( ).char s=’\092′;
答案: 说明不合法,s 的值不确定
18、 以下叙述中正确的是( ).
答案: 在 C 语言中,预处理命令行都以”#”开头
19、 下列程序段的输出结果是( ).char c1,c2;c1=65;c2=65+32+1;printf(“%c,%c”,c1,c2);
答案: A,b
20、 下列程序段输出结果是( ).int j=2 , i=1;j /= i*j;printf(“%d”,j);
答案: 1
21、 设a,b为字符型变量,执行scanf(“a=%c,b=%c”,&a,&b)后使a为’A’,b为’B’,从键盘上的正确输入是( ).
答案: 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的值是______.
答案: 28
33、 若有char c1,c2,为使变量c1得到字符’A’,变量c2得到字符’B’,正确的sacnf输入形式是_;.
答案: scanf(“%c%c”,&c1,&c2)
34、 有一输入函数scanf(“%d”,k);则不能使float类型变量k得到正确数值的原因是______。
答案: 格式字符不正确, 缺少&符号
35、 执行下列语句后,y的值是_____。int x=1,y=1;++x||++y;
答案: 1
36、 执行 x=(6*7%8+9)/5; 后,x的值为_____.
答案: 2
作业第4周 自上而下依次执行—-顺序程序设计 第四周作业
1、 输入梯形的上底、下底以及高的值,编程输出其面积。给出程序以及程序运行的结果图。
评分规则: 根据程序的代码以及运行结果,给出相应的分值,结果输出正确,给25分。不正确,请根据具体代码给出相应的分值,最高不超过20分。
2、 编程从键盘输入5名同学的成绩(数据类型为整型),输出他们的平均值,保留2位小数。给出程序以及运行结果图。
评分规则: 根据程序运行结果,给分,如果结果正确,给25分;否则,酌情给分,最高不超过20分。
3、 欧阳俊最近学习了C语言,这门课程的总成绩计算办法是:总成绩=作业成绩5%+单元测试15%+讨论发帖5%+期中成绩15%+实验10%+期末成绩50%,请为他编写一个C程序,统计出其最后的总成绩。给出程序和程序运行结果。
评分规则: 根据程序运行的结果,给分,如果结果正确,给50分;否则,酌情给分,最高不超过40分。
作业第5周 约束限制合理执行—-分支程序设计 第五周作业
1、 某商场的客户分为白金卡会员、金卡会员、银卡会员和普通客户。为了回馈广大顾客,现推出以下优惠活动:(1)如果客户是白金卡会员,现在将享受7折优惠;(2)如果客户是金卡会员,现在将享受8折优惠;(3)如果客户是银卡会员,现在将享受9折优惠;(4)如果客户是普通客户,现在将享受9.5折优惠;现要求根据顾客的身份和购买商品的价格,输出应付的金额(保留2位小数)。
评分规则: 如果用switch语句实现并且结果正确给40分;若用if…else…实现且结果正确给35分;其他情况酌情给分。
2、 输入y和m的值,输出y年m月有多少天。比如输入:2019,3 则输出31输入:2000,2 则输出29
评分规则: 如果用switch语句实现并且结果正确给40分;若用if…else…实现且结果正确给35分;其他情况酌情给分。
3、 输入任意一个字符,判断是大写字母、小写字母还是数字,如果不是以上三种情况,则输出“other”。
评分规则: 用if…else…实现且结果正确给20分;其他情况酌情给分。
下方是付费阅读内容:本平台商品均为虚拟商品,无法用作二次销售,不支持退换货,请在购买前确认您需要购买的资料准确无误后再购买,望知悉!
完整答案需点击上方按钮支付5元购买,所有答案均为章节测试答案,购买后上方矩形框将出现已付费的隐藏内容。
,
第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”,d); return 0;}程序输出的结果应该为__.
答案: 20
2、 若有定义:float x=1.5;int a=1,b=3,c=2;则正确的switch语句是( ).
答案: switch(a+b); { case l:printf(““); case 2+1:printf(“*”);}
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);return 0;}程序运行后的输出结果是( ).
答案: 2
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”,a,b); return 0;}
答案: 1,2
5、 有以下程序段:int a;if (3&&2) a=1;else a=2;执行后a=( ).
答案: 1
6、 表达式:10!=9的值是( ).
答案: 1
7、 设int x=1,y=1;表达式(!x++ || y–)的值是( ).
答案: 1
8、 设整型变量a,b的值分别为1,2,那么表达式 a>b?a+b:a-b的结果是( ).
答案: -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; }输出结果是( ).
答案: Yes!
10、 设整型变量a,b的值分别为1,0,那么a= =b 的结果是( ).
答案: 0
11、 设整型变量a,b的值分别为1,0,那么!(a= =b) 的结果是( ).
答案: 1
12、 设整型变量a,b的值分别为1,2,那么!a && b的结果是( ).
答案: 0
13、 设x为非零,则下列描述错误的是( ).
答案: x>0
14、 设整型变量a,b的值分别为6,2,那么a%b != 0的结果是( ).
答案: 0
15、 设整型变量a,b的值分别为1,0,那么a || (++b)的结果是( ).
答案: 1
16、 执行下面程序中的输出语句后,输出结果是( ).#include<stdio.h>int main(){ int x; printf(“%d”,(x=31,x3,x+2)); return 0;}
答案: 5
17、 下面程序的输出是( ).#include<stdio.h>int main(){ char c1,c2; c1=’A’+’2′-‘5′; c2=’A’+’5’-‘3’; printf(“%d,%c”,c1,c2); return 0;}
答案: 62,C
18、 如果c为字符型变量,判断c是否为空格不能使用( ).(假设已知空格ASCII码为32)
答案: if(c= =’32’)
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”,i); return 0; }
答案: 3
20、 下列程序的执行结果是( ). #include <stdio.h> int main( ) { int x=0,y=2,z=1; if (x=z=y) x=3; printf(“%d,%d”,x,z); return 0; }
答案: 3,2
21、 运行下面程序时,从键盘输入字母I,则输出结果是( ). #include <stdio.h> int main( ) { switch(getchar( )) { case ‘I’:printf(“I love”); case ‘C’:printf(“Chnia!”); default:printf(“You are OK!”); } return 0; }
答案: 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”,a,b); return 0;}
答案: 1,2
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”,s); return 0;}
答案: 4
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;}运行结果______.
答案: 13
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; }
答案: (以下答案任选其一都对)leap;
leap==1
31、 以下程序段输出的结果是: int a=2,b=3; int n; n=a>b?a:b;printf(“%d”,n);
答案: 3
第6周 缠缠绵绵不离不弃—-循环程序设计 第6周测试
1、 #include <stdio.h>int main() { int x=3; do { x-=2; printf(“%d “,x); } while(!(–x));return 0;} 执行这个程序的输出结果是( ).
答案: 1 -2
2、 执行语句序列 int i=0;while(i<25) i+=3; printf(“%d”,i); 输出结果是( ).
答案: 27
3、 有如下语句序列: int k=0; do{ k+=5; putchar(‘$’); }while(k<10); while(k–>0) putchar(‘‘); 执行上面的语句序列输出字符$和的个数分别是( ).
答案: 2 10
4、 有如下程序段: int i=1; while (1) { i++; if(i==10) break; if(i%2==0) cout<<‘‘; } 执行这个程序段输出字符的个数是( ).
答案: 4
5、 以下语句段中,不是无限循环是( ).
答案: k=32764;do{ k++; k++;} while(k>0);
6、 在以下给出的表达式中,与while(E)中的(E)不等价的表达式是( ).
答案: (E==0)
7、 有以下程序:#include <stdio.h>int main(){ int y=10; while(y–); printf(“y=%d”,y); return 0;}程序执行后的输出结果是( ).
答案: y=-1
8、 有以下程序段:int n,t=1,s=0; scanf(“%d”,&n); do{ s=s+t; t=t-2; }while (t!=n); 为使此程序段不陷入死循环,从键盘输入的数据应该是( ).
答案: 任意负奇数
9、 对下边for循环,循环体体执行次数是( ). for ( i = 1; i <= 10; i = i + 2 );
答案: 5
10、 下边循环执行完后,x为( ). for ( x= 1;x< 6; x++ ) x = 2 * x;
答案: 7
11、 下边循环执行完后,n为( ). for ( x= 1; x< 5; x++ ) for ( y= n = 0; y< x; y++, n = n +x) ;
答案: 16
12、 下面程序段输出结果是( ).int i , a= 0;for ( i = 0; i < 10; i++ ) a++, i++;printf(“%d”, a);
答案: 5
13、 从循环体内某一层跳出,继续执行循环外的语句是( ).
答案: break语句
14、 循环语句 for (x=0,y=0; (y!=1)&&(x<4);x++)的循环执行次数为( ).
答案: 4次
15、 循环语句for (x=0,y=0; (y!=1)||(x<4);x++);的执行次数为( ).
答案: 无限次
16、 设i,j,k均为int型变量,k初值为0,执行完下面的for循环后,k的值为( ). for (i=0,j=10; i<=j; i++,j–) k=i+j;
答案: 10
17、 下边程序段循环执行的次数是( ). int x= 0, y = 10;for ( ; y > 3; y– ){ x++; if ( x> 3) break ;}
答案: 4
18、 以下for循环语句,循环体的执行次数是 ( ). for( i=5; i>1; i– ) ;
答案: 4
19、 以下for循环语句,循环体的执行次数是( ). for( i=1; i<=5; i+=2 ) ;
答案: 3
20、 定义变量int i=-1; 则以下不是无限循环的是( ).
答案: for ( ; i>-10; i–) ;
21、 定义变量int i=2; 则以下是无限循环的是 ( ).
答案: for ( ; i ; ++i ) ;
22、 do-while语句的循环体( ).
答案: 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; }
答案: 0000
31、 以下程序运行完后m的值是____. int main(){ int i, m=0 ; for(i=0; i<10; i++) i++; m++; printf(“%d”, m); return 0; }
答案: 1
32、 以下程序运行完后x的值是______. #include <stdio.h>int main(){ int i, x=0 ; for(i=0; i<4; i++) x++, i++; printf(“%d”, x); return 0; }
答案: 2
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”,s); return 0; }
答案: 1.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; }
答案: abab
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)(ii); printf(“%0.2f”,_____); return 0;}
答案: (以下答案任选其一都对)sqrt(6s);
sqrt(s*6)
作业第6周 缠缠绵绵不离不弃—-循环程序设计 第6周作业
1、 编程实现:输出两个整型输的最大公约数和最小公倍数。
评分规则: 使用循环程序设计实现并结果正确,给30分;其他情况酌情给分。
2、 编程实现:输出所有的“水仙花”数,所谓“水仙花”数是指一个3位数,其各位数字的立方和等于该数的本身。
评分规则: 结果为:153 370 372 407 结果正确给30分;其他结果最高不给超过20分。
3、 编程实现: 用循环程序实现输出如下图形: *
评分规则: 结果正确给40分,其他结果酌情给分。
第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”,j);}程序运行后的输出结果是( ).
答案: 45
2、 要定义一个具有5个元素的一维数组vect,并使其各元素的初值依次是30,50,-88,0和0,则下列定义语句中错误的是( ).
答案: int vect[ ]={30,50,-88};
3、 以下数组定义中错误的是( ).
答案: 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]);}程序执行后的输出结果是( ).
答案: 3 5 7
5、 以下叙述中错误的是( ).
答案: 当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息
6、 下列语句中,正确的是( ).
答案: charmyString=”Hello-World!”;
7、 以下能正确定义字符串的语句是( ).
答案: 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”,strlen(p),strlen(q));}以下叙述中正确的是( ).
答案: 由于 p 数组中没有字符串结束符,长度不能确定;但 q 数组中字符长度为 3
9、 已有定义:char a[]=”xyz”,b[]={‘x’,’y’,’z’};,以下叙述中正确的是( ).
答案: a 数组长度大于 b 数组长度
10、 有以下程序:#include <stdio.h>int main(){ char a[7]=”a0\0a0\0″; int i,j; i=sizeof(a); j=strlen(a); printf(“%d %d”,i,j);}程序运行后的输出结果是( ).
答案: 7 2
11、 已知有数组定义: char a[3][4];下列表达式中错误的是( ).
答案: a[2]=”WIN”
12、 以下程序段中的词句被执行后,数组s1的内容是( ). char s1[10]=”ABCD”,s2[20]=”EFGH”; strcpy(s1+2,s2);
答案: ABEFGH
13、 下列关于数组初始化的说法不正确的是( ).
答案: char s[10]={‘a’,’b’,’c’}”是不合法的,因为数组长度为10,而初始值仅有3个
14、 下列描述中不正确的是( ).
答案: 字符型数组中可能存放字符串。
15、 定义如下变量和数组: int i ; int x[6] ={1,2,3,4,5,6};则语句for(i=0;i<3;i++) printf(“%d? “,x [5-i]); 的输出结果是( ).
答案: 6 5 4
16、 不能把字符串:Hello!赋给数组b的语句是( ).
答案: char b[5] =”Hello!”;
17、 以下对二维数组 a的正确定义是( ).
答案: double a[2][4];
18、 设有定义:char s[12]="string";则printf ("%d",strlen(s));的输出是( ).
答案: 6
19、 函数调用strcat(strcpy(str1,str2),str3)的功能是( ).
答案: 将字符串str2复制到字符串str1中后再将字符串str3连接到字符串str1之后
20、 若有说明int a[3][4]={0};下列叙述正确的是( ).
答案: 数组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]);
答案: 9 5 1
22、 判断字符串a和b是否相等,应使用( ).
答案: if(strcmp(a,b)= =0)
23、 若有定义:int a[3][4],则对数组a中某元素的正确引用是( ).
答案: a[1][3]
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; }
答案: 6 5
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;}
答案: (以下答案任选其一都对)f[i-2] + f[i-1];
f[i-1] + f[i-2]
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;}
答案: strcmp(x,y)==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”,s);return 0;} 假设键盘上输入的9个数据为:1 2 3 4 5 6 7 8 9 ,上面程序的输出结果是____。
答案: 19
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];
答案: 2.7
作业第7周 数以类聚集约处理—-数组 第7周作业
1、 用选择法对10个整型数进行升序排序。
评分规则: 结果正确给30分,其他情况酌情给分。
2、 有一个已经排好的数组,要求输入一个数后,按原来排序的规律将它插入到数组中。
评分规则: 结果正确,给40分,否则酌情给分。
3、 将一个数组中的值按逆序重新存放。
评分规则: 结果正确给30分,否则酌情给分。
作业第7周 数以类聚集约处理—-数组 第7周新作业
1、 用选择法对10个整型数进行升序排序。
评分规则: 按情况,酌情给分,全对,30分。
2、 有一个已经排好的数组,要求输入一个数后,按原来排序的规律将它插入到数组中。
评分规则: 按情况给分,正确,40分。
3、 将一个数组中的值按逆序重新存放。
评分规则: 按情况给分,正确,30分。
第8周 模块处理独自成章—–函数 第八周测验
1、 以下不正确的说法是( ).
答案: 在某函数内定义的变量可在其余函数中通用
2、 以下正确的函数定义是( ).
答案: double fun(int x , int y) ;
3、 以下正确的函数定义是( ).
答案: fun (x,y) { int x, y ; double z ; z=x+y ; return z ; }
4、 若调用一个函数,且此函数中没有return语句,则正确的说法是( ).
答案: 返回一个不确定的值
5、 已知一个函数的定义如下: double fun(int x, double y) { …… }则该函数正确的函数原型声明为( ).
答案: double fun (int x ,double y );
6、 C语言规定,函数返回值的类型是由( )决定的.
答案: 在定义函数时所指定的函数返回类型
7、 若在某程序中定义了多个函数,则以下说法中正确的是( ).
答案: C语言程序总是从main()函数开始执行
8、 设有某函数fun,定义如下:int fun(int x, int y){ …….. } 以下fun函数的调用,正确的是( ).
答案: fun(3 , 4)
9、 已知函数FA调用FB,若要把这两个函数定义在同一个文件中,则( ).
答案: 若FB定义在FA之后,则FB的原型必须出现在FA的定义之前
10、 若有下面的函数调用: fun(a+b,3,max(n-1,b)) 则fun的实参个数是( ).
答案: 3
11、 下列关于C函数的叙述中,正确的是( ).
答案: 函数在被调用之前必须先声明
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中的值是( ).
答案: 5
13、 以下关于函数的叙述中正确的是( ).
答案: 每个函数都可以被单独编译
14、 有以下程序:#define N 20void 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;}程序运行后的输出结果是( ).
答案: 12334
15、 有以下程序:#include <stdio.h>#define P 3void F(int x){return(Pxx);}int main(){ printf(“%d”,F(3+5));return 0;}程序运行后的输出结果是( ).
答案: 编译出错
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被调用的次数是( ).
答案: 3
17、 有以下程序int fun(int n){ if(n==1) return 1;elsereturn(n+fun(n-1));}int main(){ int x;scanf(“%d”,&x);x=fun(x);printf(“%d”,x); return 0;}执行程序时,给变量x输入10,程序的输出结果是( ).
答案: 55
18、 在函数中,可以用auto、extern、register和static这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是( ).
答案: auto
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”,s);return 0;}程序执行后的输出结果是( ).
答案: 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”,s);return 0;}程序运行后的输出结果是( ).
答案: 29
21、 在不同函数中可以使用相同名字的变量。
答案: 正确
22、 全局变量的作用域是整个程序。
答案: 错误
23、 局部变量的作用域是整个程序。
答案: 错误
24、 函数在做调用时,实际参数必须与形式参数一致,包括数量和数据类型。
答案: 正确
25、 函数的返回值必须与函数定义时的返回类型一致。
答案: 正确
26、 以下程序输出的结果是:______
答案: 6,6
27、 以下程序运行结果是:___
答案: D
28、 下面程序执行过程中若输入23、45,运行结果是:_____
答案: 70
29、 #include <stdio.h>int main() {int a=12,b=12;printf(“%d,%d”,–a,++b); return 0;}程序执行后的输出结果是______.
答案: 11,13
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”,x,y,z);return 0;}程序执行后的输出结果是__.
答案: 3,2,-1
作业第8周 模块处理独自成章—–函数 第八周作业
1、 写两个函数,分别求出两个整数的最大公约数和最小公倍数,用主函数调用这个两个函数,并输出结果。两个整数由键盘输入。
评分规则: 结果正确,给40分;否则,酌情给分。
2、
评分规则: 结果正确,给30分;否则,酌情给分。
3、 写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。
评分规则: 结果正确,给30分;否则,酌情给分。
第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”,strlen(p[1])); return 0;}程序运行后的输出结果是( ).
答案: 4
2、 有以下函数:fun(char a,char b){ while((a!=’\0′)&&(b!=’\0′)&&(a==b)) { a++; b++; } return(a-b);}该函数的功能是( ).
答案: 比较a和b所指字符串的大小
3、 执行语句int a=20,p=&a;后,下列描述错误的是( ).
答案: p的值为20
4、 已知p是指针变量,则不能初始化指针的值是( ).
答案: 1
5、 下面能正确使用的语句是( ).
答案: intx;y=1;x=&y;
6、 语句intp=&k;定义了指针p,与这个语句等效的语句序列是( ).
答案: intp;p=&k;
7、 若有说明语句:double p,a;则能通过scanf语句正确给输入项读入数据的程序段是( ).
答案: p=&a; scanf(“%lf”,p);
8、 若有定义 int x=0,p=&x;,则语句 printf(“%d”,p);的输出结果是( ).
答案: 0
9、 设有定义 int n1=0,n2,p=&n2,q=&n1;,以下赋值语句中与 n2=n1;语句等价的是( ).
答案: 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”,p+q); return 0;}程序运行后的输出结果是( ).
答案: 10
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;}程序运行后的输出结果是( ).
答案: 345
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;}程序运行后的输出结果是( ).
答案: 1,2,3,4,5,6,7,8,9,0,
13、 下列选项中,变量pt是数组指针的是( ).
答案: int (*pt)[5]
14、 有如下定义:int a[5]={1,3,5,7,9},p=a;下列表达式中不能得到数值5的是( ).
答案: a[3]
15、 int p[4];的定义与 ( )中的定义等价.
答案: int *(p[4])
16、 若有语句 char line[5];,以下叙述中正确的是( ).
答案: 定义 line 是一个数组,每个数组元素是一个基类型为 char 的指针变量
17、 有以下程序:#include <stdio.h>#include <string.h>int main() { char s[]=”159″,p; p=s; printf(“%c”,p++); printf(“%c”,*p++); return 0;}程序运行后的输出结果是( ).
答案: 15
18、 程序中若有如下说明和定义语句char fun(char );int main(){char s=”one”,a[5]={0},(f1)()=fun,ch;……}以下选项中对函数 fun 的正确调用语句是( ).
答案: (f1)();
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”,a,b); return 0;}
答案: 10,20
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”,c); return 0;}
答案: 9
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”,c); return 0;}
答案: 14
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”,b); return 0;}
答案: 7.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”,a); return 0;}
答案: 4
作业第9周 程序利器所向披靡—-指针 第九周作业
1、 ·用指针实现一个函数,求出一个字符串的长度,并在main()函数中输入字符串,并输出其长度。
评分规则: 结果正确,给50分;否则,酌情给分。
2、 用指针方法实现在main()函数中输入一行文字,找出其中大写字母、小写字母、空格、数字以及其他字符各有多少个,并输出各自对应的值。
评分规则: 结果正确,给50分;否则,酌情给分。
第11周 群英荟萃各显神通—-高级数据类型 第十次单元测试
1、 某结构体变量定义如下,对此结构体变量中元素的引用,形式正确的是( )。struct k{int a;char c;}b,p;p=&b;
答案: (p).c
2、 有以下程序段struct st{int x;int y;}pt;int a[]={1,2},b[]={3,4}; struct st c[2]={10,a,20,b}; pt=c;以下选项中表达式的值为11的是( )。
答案: ++pt->x
3、 有以下程序:struct STU{ char name[10]; int num; float TotalScore; };void f(struct STU p){ struct STU s[2]={{“SunDan”,20044,550},{“Penghua”,20045,537}},q=s; ++p; ++q; p=q;}int main(){ struct STU s[3]={ {“YangSan”,20041,703},{“LiSiGuo”,20042,580}}; f(s); printf(“%s %d %3.0f”,s[1].name, s[1].num,s[1].TotalScore);return 0;}程序运行后的输出结果是( )。
答案: Penghua 20045 537
4、 有以下程序:#include <string.h>struct STU{ int num; float TotalScore;};void f(struct STU p){ struct STU s[2]={{20044,550},{20045,537}}; p.num=s[1].num; p.TotalScore=s[1].TotalScore;}int main(){ struct STU s[2]= {{20041,703},{20042,580}}; f(s[0]); printf(“%d %3.0f”,s[0].num,s[0].TotalScore); return 0;}程序运行后的输出结果是( )。
答案: 20041 703
5、 已知有如下共用体变量data,则data所占的字节数是( )。 union{ char a[4]; int b[3]; long c[2];}data;
答案: 8
6、 若有以下说明和定义union dt{ int a; char b; double c;}data;以下叙述中错误的是( )。
答案: 程序段 data.a=5;printf(“%f”,data.;输出结果为 5.000000
7、 执行下列语句后的结果为( )。 int x=3,y; int px=&x; y=px++;
答案: x=3,y=3
8、 对于基本类型相同的两个指针变量之间,不能进行的运算是( )。
答案: +
9、 定义以下结构体类型struct s{ int a; char b; float f;};则语句printf(“%d”,sizeof(struct s))的输出结果为( )。
答案: 7
10、 当定义一个结构体变量时,系统为它分配的内存空间是( )。
答案: 结构中各成员所需内存容量之和
11、 若程序中有以下的说明和定义:struct abc{ int x; char y; } struct abc s1,s2;则会发生的情况是( )。
答案: 编译时错
12、 有以下程序段#include<stdio.h>struct st{ int x; int y;}pt;int main(){ int x[]={1,2}; int y[]={3,4}; struct st c[2]={10,x,20,y}; pt=c; printf(“%d”,++pt->x); return 0; } 以下选项中表达式的值为11的是( )。
答案: ++pt->x
13、 以下叙述中错误的是( )。
答案: 可以通过typedef增加新的类型
14、 设有以下语句: struct st { int n; struct st next; }; static struct st a[3]={5,&a[1],7,&a[2],9,’\0′},p; p=&a[0];则表达式( )的值是6。
答案: ++p->n
15、 若已建立下面的链表结构,指针p、s分别指向图中所示的结点,则不能将s所指的结点插入到链表末尾的语句组是( )。
答案: p=p->next; s->next=p; p->next=s;
16、 程序执行时,一维数组的数组名表示的是数组中首个元素的地址。
答案: 正确
17、 在一个C源程序文件中,静态局部变量在该文件中的所有函数都能使用。
答案: 错误
18、 若主调函数为double型,被调函数定义中没有函数类型说明,而return语句中的表达式为double型,则被调函数返回值的类型是double型。
答案: 错误
19、 不能用变量定义数组的长度。
答案: 正确
20、 凡是函数中未指明存储类别的局部变量,其隐含的存储类别为自动(auto)。
答案: 正确
21、 以下程序用来输出结构体变量e所占存储单元的字节数,请填空。struct st{ char name[20]; double score; };int main(){ struct st e; printf(“ex size: %d”,sizeof( ______ )); return 0;}
答案: e
22、 以下程序的运行结果是____. # include <string.h>#include<stdio.h>typedef struct student{ char name[10]; long sno; float score; }STU;int main( ){ STU a={“Zs”,2019,95},b={“Sx”,2018,90},c={“Ah”,2017,95},d,*p=&d; d=a; if(strcmp(a.name,b.name)>0) d=b; if(strcmp(c.name,d.name)>0) d=c; printf(“%ld%s”,d.sno,p->name); return 0; }
答案: 2018Sx
23、 字符’0’的ASCII码的十进制数为48,且数组的第0个元素在低位,则以下程序的输出结果是_______。#include<stdio.h> int main( ){ union { int i[2]; long k; char c[4]; }r,*s=&r; s->i[0]=0x39; s->i[1]=0x38; printf(“%c”,s->c[0]); return 0; }
答案: 9
24、 已知字符0的ASCII码为十六进制的30,下面程序的输出是_____。int main(){ union { unsigned char c; unsigned int i[4]; } z; z.i[0]=0x39; z.i[1]=0x36; printf(“%c”,z.c);return 0;}
答案: 9
25、 设有如下枚举类型定义 enum language {C=3,Java=6,Python=10,PHP,LISP};枚举量PHP的值为______。
答案: 11
26、 定义以下结构体数组 struct { int num; char name[10]; }x[3]={1,”C”,2,”U”,3,”E”};语句printf(“%d,%s”,x[1].num,x[2].name)的输出结果为___。
答案: 2,E
点关注,不迷路,微信扫一扫下方二维码
关注我们的公众号:阿布查查 随时查看答案,网课轻松过
为了方便下次阅读,建议在浏览器添加书签收藏本网页
电脑浏览器添加/查看书签方法
1.按键盘的ctrl键+D键,收藏本页面
2.下次如何查看收藏的网页?
点击浏览器右上角-【工具】或者【收藏夹】查看收藏的网页
手机浏览器添加/查看书签方法
一、百度APP添加/查看书签方法
1.点击底部五角星收藏本网页
2.下次如何查看收藏的网页?
点击右上角【┇】-再点击【收藏中心】查看
二、其他手机浏览器添加/查看书签方法
1.点击【设置】-【添加书签】收藏本网页
2.下次如何查看收藏的网页?
点击【设置】-【书签/历史】查看收藏的网页