0.1085

五煦查题

快速找到你需要的那道考题与答案

中国大学C语言程序设计_75期末答案(慕课2023课后作业答案)

57 min read

中国大学C语言程序设计_75期末答案(慕课2023课后作业答案)

第1章 C语言程序设计概述

第1章 测试题

1、中国以下叙述正确的大学是 。
A、语言程业答C语言实现输入输出功能需要调用库函数
B、序设C程序中的计期每一条语句必须单独写在一行上
C、一个C语言程序中的末答main函数可以没有,但最多只能有一个
D、案慕案C程序在编译时可将注释中的课课错误反馈给用户

2、以下叙述不正确的后作是 。
A、中国C语言中的大学main函数可以在程序的任意位置
B、在C程序中,语言程业答注释说明只能位于一条语句的序设后面
C、C语言是计期结构化的程序设计语言,其基本组成单位是末答函数
D、一个C源程序有且仅有一个main函数

3、一个C源程序
A、C语言程序由一个主程序和若干个子程序组成
B、C语言程序由若干个主函数组成
C、C语言程序若干个子函数组成
D、C语言程序若干子程序组成

4、一个C程序的执行是从 。
A、从第一个函数开始,到最后一个函数结束
B、从main函数开始到main函数结束
C、从第一个函数开始,到main函数结束
D、从main函数开始,到最后一个函数结束

5、以下叙述正确的是 。
A、函数是C语言的基本组成单位
B、可以在一个函数中定义另外一个函数
C、一个程序只能有一个函数
D、一个函数只能在一个程序中调用

6、构成C语言程序的基本单位是 。
A、函数
B、文件
C、语句
D、字符

7、以下叙述正确的是 。
A、C语言源程序可以直接运行
B、C语言程序编译后产生源程序,后缀名为.c
C、C语言程序中的函数可以单独编译
D、C语言源程序编译后产生目标程序

8、以下叙述正确的是 。
A、函数的函数体必须用“{ }”括起来
B、函数的函数体如果只有一条语句,则“{ }”可以省略
C、C语言中函数必须用预处理#include将其包含进来
D、函数体可以放在程序的任意位置

9、以下叙述正确的是 。
A、C语言在编译时既检查语法错误,也检查逻辑错误
B、C语言编译时若有语法错误,也会编译成功
C、C语言编译时若有语法错误,则会给用户反馈错误信息
D、C语言程序必须在没有语法错误和逻辑错误的情况下,才能编译成功

10、以下叙述正确的是 。
A、C语言程序每次执行前都要进行编译
B、C语言是解释执行的语言
C、C语言是编译执行的语言
D、C语言程序在链接后进行编译,如果有语法错误,将会给用户报错

11、以下叙述正确的是 。
A、程序是指由二进制0和1构成的代码
B、程序是人和计算机之间交流的工具
C、程序设计语言从机器语言、汇编语言向高级语言发展
D、程序设计语言从高级语言、汇编语言向机器语言发展

12、以下叙述正确的是 。
A、高级语言更符合人们的语言习惯
B、汇编语言是由二进制0和1表示的
C、机器语言晦涩难懂,执行速度也很慢
D、高级语言可以被计算机直接执行,所以它是高级的

13、以下叙述错误的是 。
A、C语言程序是面向对象的程序设计语言
B、C语言数据类型丰富
C、C语言是高级程序设计语言
D、C语言可以直接访问物理地址

14、C语言从 开始执行。
A、函数
B、头文件
C、主函数
D、定义变量的语句

15、以下叙述正确的是 。
A、C语言程序执行效率高,但可移植性差
B、C语言程序可以包含多个预处理命令
C、连接程序只是把源程序连接成目标程序
D、C语言的源程序经过连接可直接执行

16、计算机能够直接执行的程序是 。
A、机器语言编写的程序
B、高级语言编写的程序
C、机器语言编写的函数
D、汇编语言编写的程序

17、计算机能够直接执行的是 。
A、源程序
B、目标程序
C、汇编程序
D、可执行程序

18、以下叙述正确的是 。
A、C语言在编译时检查语法错误
B、C语言在编译时检查语法错误
C、C语言在编译时检查程序的完整性
D、C语言在编译时检查程序的完整性

19、C语言源程序要正确的执行,则必须要有 。
A、#include函数
B、main函数
C、用户自定义函数
D、输入、输出语句

20、以下叙述正确的是 。
A、C语言经过编译生成0和1组成的二进制代码
B、机器语言经过编译可以生成高级语言指令
C、机器语言虽然可移植性好,但执行速度比较慢
D、机器语言不能被计算机直接识别,所以不能用机器语言编写操作系统

21、关于C语言以下叙述正确的是 。
A、C语言是汇编语言
B、C语言是机器语言
C、C语言是高级语言
D、C语言是低级语言

22、以下叙述正确的是 。
A、C语言程序中的每条语句都用一个分号作为结束符
B、C语言程序中的每个函数都用一个分号作为结束符
C、C语言中的每条命令都用一个分号作为结束符
D、C语言中的语句末尾可以使用分号,也可以不使用分号

23、一个C语言程序是由 。
A、一个主函数和若干个库函数组成
B、一个主函数和若干个子函数组成
C、一个主过程和若干个子过程组成
D、一个主函数和若干个函数体组成

24、在计算机中,一个字节所包含二进制位的个数是 。
A、2
B、4
C、8
D、16

25、下列叙述中正确的是 。
A、C语言是低级语言,因为可以直接访问物理地址
B、C语言可以不用编译就能被计算机识别执行
C、C语言可以直接访问物理地址,但它是高级语言
D、C语言是高级语言,不能被编译成二进制

26、下列说法正确的是 。
A、C程序中的每一行必须书写一条语句,不能出现空行
B、C程序的每一条语句都必须书写在一行上,不能跨行
C、C程序的一行中可以书写多条语句
D、C程序的一行只能书写一条语句

27、在 C 语言中,每个语句必须以 结束。
A、回车符
B、冒号
C、逗号
D、分号

28、C语言程序的开发顺序是 。
A、编辑、编译、连接、运行
B、编译、编辑、连接、运行
C、编辑、连接、编译、运行
D、连接、编译、编辑、运行

29、以下叙述中正确的是 。
A、C程序中注释部分可以出现在程序中任意合适的地方
B、C程序中若用//表示注释,则注释可以跨行
C、C程序中若用/*和*/表示注释,则注释只能有一行
D、花括号"{ "和"}"可以用来表示注释

30、用C语言编写的源文件经过编译,若没有产生编译错误,则系统将 。
A、生成目标文件
B、输出运行结果
C、生成可执行目标文件
D、生成源文件

第1章 作业题

1、C语言是一种什么样的语言?为什么既可以用来开发系统软件又可以编写应用程序?

2、简述C语言源程序的基本结构。

3、C语言有哪些优点?

4、在计算机上执行C语言程序需要经过哪些步骤?

第2章 C语言的数据类型

第2章 测试题

1、下列关于C语言用户标识符的叙述中正确的是
A、可以出现数字、字母和其它符号
B、可以出现下划线,但必须在起始位置
C、可以有字母,但字母没有大小写之分
D、可以出现数字,但数字不能放在起始位置

2、以下不是合法的标识符的选项是 。
A、WHILE
B、_0_
C、_C
D、if

3、C语言提供的合法的数据类型关键字是( )。
A、double
B、Float
C、INT
D、Main

4、下列字符串可作为合法标识符的是 。
A、double
B、9_hello
C、_if
D、_!123

5、下列可用作C语言程序中的标识符的是 。
A、print _do xy_z
B、wa:1 scanf_1 ty-1
C、.obj name_1 while
D、int _student a_1

6、以下选项中,均是不合法的用户标识符的选项是 。
A、A sky_0 do
B、float yy_21 _A
C、a-b continue double
D、_123 printf INT

7、下列运算符中优先级最低的运算符是______。
A、<=
B、=
C、%
D、!

8、下列运算符中,要求操作数必须是整型的运算符是______。
A、%
B、/
C、&&
D、!

9、______是合法的C语言字符常量。
A、′x"
B、e3
C、<#>
D、〞c program〞

10、已定义c是字符型变量,则下列不合法的赋值语句是 。
A、c=′a+b′;
B、c=′\047′;
C、c=′7′;
D、c=′!′;

11、下列不合法的C语言转义字符的项目是______。
A、′\t′
B、′\0xg′
C、′\” ′
D、′\012′

12、转义字符 ‘\101’表示的是 。
A、字符a
B、字符A
C、字符e
D、非法的常量

13、以下符合C语言语法规则的实型常量是______。
A、1.5E-0.5
B、3.14159E10
C、E-5
D、-E2

14、下面不正确的字符串常量是 。
A、'hello c'
B、"34\80"
C、"1.345"
D、"V"

15、如果int a=5,b=7;则条件表达式"a<b? a-b:b-a"的值是______。
A、5
B、7
C、-2
D、2

16、设a 为整型变量,不能正确表达数学关系:5<a<10的C语言表达式是 。
A、a>5 && a<10
B、a= =6|| a= =7 || a= =8 || a= =9
C、5<a<10
D、!(a<=5) && !(a>=10)

17、表达式15%6*sqrt(9.0)/3值的数据类型是______。
A、int
B、float
C、double
D、不确定

18、设有以下变量定义,并已赋确定的值 char c; int a; float x; double m;则表达式:c*a+m-x所求得的数据类型为______。
A、char
B、int
C、float
D、double

19、如果i=7,则k=(++i)+(i++)+(i++)执行过后k的值为 ,i的值为 。
A、21,7
B、22,8
C、24,8
D、24,10

20、以下选项中非法的表达式是______。
A、i>-10&&i<10
B、(i+1)++
C、(char)(65+32)
D、i=i+=i*i

21、下列关于自增运算符++、自减运算符--的叙述中正确的是______。
A、它们的运算对象可以是任何变量、常量和表达式。
B、它们的运算对象可以是char型变量和int型变量,但不能是float型变量。
C、它们的操作数可以是一个,也可以是两个。
D、它们的运算对象可以是char型变量、int型变量和float型变量。

22、以下选项中,与k=i++完全等价的表达式是______。
A、i=i+1,k=i
B、k=i,i=i+1
C、k=++i,i=i+1
D、k+=i+1

23、设 int x=0,y=1; 表达式(--x||y--)的值是______。
A、-1
B、0
C、1
D、2

24、设有语句int a=0,b=1,c=2;则下面表达式中,值为0的表达式是______。
A、a||b
B、a<=b
C、a||b+c&&b-c
D、!((c>b>a&&!c||1)

25、若有以下定义,则能使值为0的表达式是 。 int a=9,b=2;
A、a%=(a/b)
B、a%=(a/=b)
C、a=(b-a%=b)
D、b*=(b=a%b)

26、float a=2.5,b=3.5,则表达式(int)a+b/b的值是______。
A、3.500000
B、3.000000
C、2.000000
D、3

27、已有定义:int x=3,y=4,z=5;,则表达式!x-y||(y-z)-1的值是______。
A、-1
B、0
C、1
D、2

28、已有定义: int x=3,y=4,z=5; 则表达式!(x-y)&&y-z-1的值是_________。
A、-1
B、0
C、1
D、2

29、已知a,b,c都是已定义的整型变量,则符合C语言语法规定的表达式是 。
A、(a+1)=a-=b-=0
B、!a=a*3*c=2
C、a=a-(b-c)!
D、a=a-c*!(b+a)

30、若a为int类型,且其值为6,则执行完表达式a+=a-=a*a后,a的值是______。
A、-60
B、0
C、1
D、60

第2章 作业题

1、C语言中数据类型转换的方式有几种?各有什么特点?转换的规则是什么?

2、定义符号常量计圆的面积,设半径为4.25,π的取值设为3.1415926,输出结果保留两位小数。

3、将“China”译成密码。译码规律:用原来字母后面的第4个字母代替原来的字母。例如,字母“A”后面第4个字母是“E”,用“E”代替“A”。

第3章 顺序结构程序设计

第3章 测试题

1、关于算法的描述,下列正确的是 。
A、一个算法可以没有输入,但必须有输出
B、一个算法必须要有输入,但可以没有输出
C、一个算法有几个输入就必须有几个输出
D、一个算法如果没有输入,则此算法是错误的

2、算法的每一个步骤都应是确切定义的,不能有二义性,相同的输入应该得到相同的输出,这是算法的 。
A、可行性
B、确定性
C、正当性
D、有穷性

3、以下程序片段: int x=2,y=3; printf(); 的运行结果是 。
A、输出为:x=2,y=3
B、什么都不输出
C、输出为:y=3
D、输出为:x=2

4、已知a,b,c为int型变量,若从键盘输入:2,3,4<回车>,使a的值为2,b的值为3,c的值为4,以下选项中合法的输入语句是 。
A、scanf(“%2d%3d%4d”,a,b,c);
B、scanf(“%d,%d,%d”,&a,&b,&c);
C、scanf(“%dV%dV%d”,&a,&b,&c);
D、scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);

5、若int a,b; double x; 以下不合法的scanf函数调用语句是 。
A、scanf(“%d%o%f”, &a,&b,&x);
B、scanf(“%3d%*3d%lf”,&a,&b,&x);
C、scanf(“%o%f%lo”,&a,&b);
D、scanf(“%ld%lo%o”,&a,&b,&x);

6、有输入语句:scanf(“a=%db=%dc=%d”,&a,&b,&c);为使变量 a的值为1,b的值为3,c的值为5,则正确的数据输入方式是 。
A、135↙
B、1,3,5↙
C、a=1 b=3 c=5↙
D、a=1b=3c=5↙

7、putchar ( )函数可以向终端输出一个 。
A、整型变量表达式值
B、字符或字符型变量值
C、字符串
D、实型变量值

8、getchar()函数的参数个数是 。
A、0
B、1
C、2
D、3

9、printf函数中用到格式符 %8s,其中数字8表示输出的字符占用8列。如果字符串长度等于5,则输出按方式 。
A、右对齐输出该字符串,左补空格
B、从左起输出该字符串,右补空格
C、当字符串长度小于格式中规定的长度时,格式中的规定被忽略
D、输出错误信息

10、以下说法正确的是 。
A、scanf()函数的输入项可以是整型、实型、字符型等变量
B、若省略了scanf()函数中的格式控制字符,则用户在输入终端输入数据时类型不受限制
C、scanf()函数输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf("% 4.2f ",&f);
D、scanf()函数输入数据时,必须指明变量的地址

11、若有以下定义和语句: int a=010 ,b=0x10 ,c=10 ; printf("%d ,%d ,%d\n" ,a ,b ,c) ; 则输出结果是: 。
A、10 ,10 ,10
B、8 ,8 ,10
C、8 ,10 ,10
D、8 ,16 ,10

12、以下程序的输出结果是 。 main( ) { int a=10; printf("%d,%o,%x \n",a,a,a); }
A、10,12,a
B、10,o10,x10
C、d10,o10,x10,
D、10,2,x10

13、下列程序执行后的输出结果是 。 void main() { printf(“\’s1=%7s\’”,”hello”);
A、s1=”hello”
B、s1=7hello
C、’s1= hello’
D、\’s1=”hello”\’

14、printf()函数中格式控制符%5s,其中数字5表示 。
A、输出项的个数为5
B、表示输出的字符串占用5列
C、表示输出的实型数据保留5位小数
D、输出错误

15、有以下程序段: int a,b,c; a=10;b=20;c=30; a=b;b=c;c=a; printf(“a=%d,b=%d,c=%d\n”,a,b,c);
A、a=10,b=20,c=30;
B、a=20,b=30,c=20;
C、a=20 b=30 c=10;
D、20,30,10

16、有以下程序段: main() { char c; c=getchar();},若在键盘上输入hello,则c获得的数据为 。
A、hello
B、h
C、(hello)
D、无数据

17、以下程序段的输出结果是 int a=1234; printf("a=%2d\n",a);
A、a=12
B、a=34
C、a=1234
D、提示出错、无结果

18、下列关于printf()函数说法错误的是 。
A、printf()函数必须与scanf()函数配合使用
B、printf()函数是格式化输出函数,格式控制字符控制了输出项的形式
C、printf()函数是库函数,必须使用#include命令将其包含进来
D、printf()函数可以输出一个对象,也可以输出多个对象

19、设有定义:long x=-654321L;,则以下能够正确输出变量x值的语句是 。
A、printf(“x=%d\n”,x);
B、printf(“x=%1d\n”,x);
C、printf(“x=%8dL\n”,x);
D、printf(“x=%LD\n”,x);

20、根据定义和数据的输入方式,输入语句的正确形式为 。 已有定义:float f1,f2; 数据的输入方式:4.52 3.5
A、scanf("%f,%f",&f1,&f2);
B、scanf("%f%f",&f1,&f2);
C、scanf("%3.2f %2.1f",&f1,&f2);
D、scanf("%3.2f%2.1f",&f1,&f2);

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

22、下列程序的运行结果是 。 void main() { int a; a=-2L; printf("%d\n",a); }
A、赋值不合法
B、输出值为-2
C、输出为不确定的值
D、输出值为2

23、有如下程序: main() { int x=3 ,y=3,z=1 ; printf(" %d %d\n",(++x ,y++),z+2); } 运行该程序的输出结果是 。
A、3 4
B、4 2
C、4 3
D、33

24、下列程序的输出结果是 。 main() { double d=3.2; int x ,y ; x=1.2 ; y=(x+3.8)/5.0; printf("%d \n", 7.3);}
A、3
B、3.2
C、0
D、3.07

25、以下程序的输出结果是 。 main( ) { int a=4,b=5,c=0,d; d=!a&&!b||!c; printf("%d\n",d); }
A、1
B、0
C、非0的数
D、-1

26、若有以下程序 main( ) { int k=2,i=2,m; m=(k+=i*=k); printf(“%d,%d\n”,m,i); } 执行后的结果是 。
A、8,6
B、8,3
C、6,4
D、7,4

27、设a为int型变量,a=8567,则语句printf(“|%-06d|\n”,a);输出的结果为 。 main() { int k=8567; printf("|%-06d|\n",k); }
A、无输出
B、输出为|08567|
C、|8567 |
D、|-08567|

28、)下面程序段的输出结果是 。 main() { char c1='a',c2='f'; printf("%d,%c\n",c2-c1,c2-'a'+'B'); }
A、2,M
B、5,!
C、2,E
D、5,G

29、下面的程序: main() { char a,b,c,d; a='\'; b='\xbc'; c='\0xbc'; d='\0127'; printf("%c\n%c\n%c\n%c\n",a,b,c,d); } 编译时出现错误,则该错误有可能是 。
A、a='\';
B、b='\xbc';
C、c='\0xbc';
D、d='\0127';

30、下面的程序运行时,如果输入18,18,则b的值为 。 main() { int a,b; scanf("%d,%x",&a,&b); b+=a; printf("%d",b); }
A、36
B、42
C、输入有误,b无值
D、18

第3章 作业题

1、什么是算法?如何评价算法?

2、“鸡兔同笼问题”。鸡有2只脚,兔有4只脚,如果已经鸡和兔的总头数为h,总脚数为f。问笼中各有多少只鸡和兔。执行时输入总头数10和总脚数32。

3、输入长方体的长宽高:l,w,h,输出长方体的体积。

4、用顺序结构编写程序打印下面的图形。 慕课答案大全

* ** ** ** ** 慕课答案大全

*

第4章 选择结构程序设计

第4章 测试题

1、下列条件语句中,功能与其他语句不同的是 。
A、if(a) printf("%d\n",x); else prinf("%d\n",y);
B、if(a==0) prinff("%d\n",y); else printf("%d\n",x);
C、if(a!=0) printf("%d\n",x); else printf("%d\n",y);
D、if(a==0) printf("%d\n",x); else printf("%d\n",y);

2、假定所有变量均已正确说明,下列程序段运行后x的值是______。 a=b=c=0;x=12; if(!a)x--; else x=5; if(c) x=3; else x=4;
A、11
B、4
C、12
D、3

3、下列叙述中正确的是 。
A、break语句只能用于switch语句
B、在switch语句中必须使用default
C、break语句必须与switch语句中的case配对使用
D、在switch语句中,不一定使用break语句

4、假定所有变量均已正确说明,以下程序段运行后的输出结果是 。 int a=1,b=3,c=5; if(c=a+b) printf("yes\n"); else printf("no\n");
A、2
B、3
C、5
D、1

5、当把以下4个表达式用作if语句的控制表达式时,有一个选项与其他3个选项含义不同,这个选项是 。
A、k%2
B、k%2==1
C、(k%2)!=0
D、!k%2==1

6、假定所有变量均已正确说明,以下程序段运行后的输出结果是 。 int n=0,m=l,x=2; if(!n) x-=l; if(!m) x-=2; if(!x) x-=3; printf (" %d\n",x);
A、2
B、1
C、3
D、6

7、假定所有变量均已正确说明,以下程序段运行后的输出结果是 。 int a=3,b=5,c=7; if(a>b) a=b; c=a; if(c!=a) c=b; printf("%d,%d,%d\n",a,b,c);
A、程序段有语法错
B、3,5,3
C、3,5,5
D、3,5,7

8、假定所有变量均已正确说明,执行以下程序段时,从键盘上输入1和2,则结果是 。 int a,b,s; scanf("%d%d",&a,&b); s=a; if(a<b) s=b; s=s*s; printf("%d\n",s);
A、1
B、4
C、2
D、9

9、有定义语句:int a=1,b=2,c=3,x;,则以下选项中各程序段执行后,x的值不等于3的是 。
A、if(c<3)x=1; else if(b<2)x=2; else x=3;
B、if(a<2)x=3; else if(a<1)x=2; else x=1;
C、if(a<3)x=3; if(a<2)x=2; if(a<1)x=1;
D、if(a<2)x=b; if(b<3)x=c; if(c<1)x=a;

10、下面选项if语句形式不正确的是 。
A、if (x>y&&x!=y);
B、if (x==y) x+=y,
C、if(x!=y) scanf("%d",&x); else scanf("%d",&y);
D、if(x<y) { x++;y++;}

11、为了避免在嵌套的条件语句if-else中产生二义性,C语言规定:else子句总是与 配对。
A、缩排位置相同的if
B、其之前最近的没有else配对的if
C、其之后最近的if
D、同一行上的if

12、在下面的条件语句中,只有一个在功能上与其它三个语句不等价,它是 。
A、if (a) 语句1 else 语句2
B、if (a==0) 语句2 else 语句1
C、if (a!=0) 语句1 else 语句2
D、if (a==0) 语句1 else 语句2

13、在C语言语句中,用来决定分支流程的表达式是 。
A、可用任意表达式
B、只能用逻辑表达式或关系表达式
C、只能用逻辑表达式
D、只能用关系表达式

14、假定所有变量均已正确说明,以下程序段运行后的输出结果是 。 int k; k=-3; if(k<=0) printf(“####”); else printf(“&&&&”);
A、####
B、&&&&
C、####&&&& 
D、有语法错误,无输出结果

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

16、假定所有变量均已正确说明,以下程序段运行后的输出结果是 。 int a=1,b=5,c=3; if(a>b) a=b; b=c; c=a; printf("a=%d b=%d c=%d\n",a,b,c);
A、a=1 b=5 c=1
B、a=1 b=3 c=1
C、a=5 b=3 c=1
D、a=5 b=3 c=5

17、有以下程序 #include <stdio.h> 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、2
B、3
C、4
D、编译时有错,无结果

18、对下述程序, 是正确的判断。 #include <stdio.h> main ( ) { int x,y; scanf(“%d,%d”,&x,&y); if (x>y) x=y;y=x; else x++;y++; printf(“%d,%d”,x,y); }
A、有语法错误,不能通过编译
B、若输入3和4,则输出4和5
C、若输入4和3,则输出3和4
D、若输入4和3,则输出4和5

19、下述程序的输出结果是 。 #include <stdio.h> main ( ) { int a=0,b=0,c=0; if (++a>0 | | ++b>0) ++c; printf(“%d,%d,%d”,a,b,c); }
A、0,0,0
B、1,1,1
C、1,0,1
D、0,1,1

20、在C语言中,多分支选择结构语句为: switch(c) { case 常量表达式1:语句1; …… case 常量表达式n-1:语句n-1; default 语句n;} 其中括号内表达式c的类型: 。
A、可以是任意类型
B、只能为整型
C、可以是整型或字符型
D、可以为整型或实型

21、若有以下定义:float x; int a,b; 则正确的switch语句是 。
A、switch(x) { case 1.0: printf("*\n"); case 2.0: printf("**\n"); }
B、switch(x) { case 1,2: printf("*\n"); case 3: printf("**\n"); }
C、switch(a+b) { case 1: printf("*\n"); case 1+2: printf("**\n"); }
D、switch(a+b); { case 1: printf("*\n"); case 2: printf("**\n"); }

22、以下程序中与语句k=a>b? (b>c?1:0):0功能等价的是 。
A、if((a>b)&&(b>c)) k=1; else k=0;
B、if((a>b)||(b>c)) k=1; else k=0;
C、if (a<=b) k=0; else if (b<=c) k=1; else if (b<c) k=1; else k=0;
D、if(a>b) k=1;

23、若欲表示在if后a不等于0的关系,则能够正确表示这一关系的表达式为 。
A、a<>0
B、!a
C、a=0
D、a

24、下列各语句序列中,能够将变量a和b中的较大值赋值到变量t中的是 。
A、if(a>b) t=a ; t=b;
B、t=b; if(a>b) t=a;
C、t=b; if(a>b) else t=a;
D、t=a ; if(a>b) t=b;

25、有以下程序 #include <stdio.h> main() { int x; scanf("%d",&x); if(x<=3) ; else if(x!=10) printf("%d\n",x); } 程序运行时,输入的值在______范围才会有输出结果。
A、不等于10的整数
B、大于3且不等10的整数
C、大于3或等于10的整数
D、小于3的整数

26、以下4个选项中,不能看作一条语句的是______。
A、{ ;}
B、a=0,b=0,c=0;
C、if(a>0);
D、if(b==0)m=1;n=2;

27、有以下程序 #include <stdio.h> main() { int a=0,b=4,c=0,d=10,x; if(a) d=d-10; else if(!b) if(!c) x=15; else x=25; printf("%d\n",d); } 程序运行后的输出结果是______。
A、5
B、3
C、20
D、10

28、若变量已正确定义,有以下程序段 int a=3,b=5,c=7; if(a>b)a=b; c=a; if(c!=a)c=b; printf("%d,%d,%d\n",a,b,c); 其输出结果是______。
A、程序段有语法错
B、3,5,3
C、3,5,5
D、3,5,7

29、有定义语句:int a=1,b=2,c=3,x;,则以下选项中各程序段执行后,x的值不为3的是______。
A、if (c<a) x=1;   else if (b<a) x=2;    else x=3;
B、if (a<3) x=3;   else if (b<a) x=2;    else x=1;
C、if (a<3) x=3;    if (a<2) x=2;   if (a<1) x=1;
D、if (a<b) x=b;   if (b<c) x=c;   if (c<a) x=a;

30、当a=1,b=3,c=5,d=4时,执行下面一段程序后,x的值为______。 if(a<b) if(c<d) x=1; else if(a<c) if(b<d) x=2; elsex=3; elsex=6; elsex=7;
A、1
B、2
C、3
D、6

第4章 作业题

1、用switch结构设计有两个操作数的数学运算。

2、2.请编制程序,要求输入正整数a,若a既是5又是7的整数倍,则输出yes,否则输出no。

3、3.编程实现以下功能:输入年份year,判断该年是否为闰年。其中判别闰年的条件是:year能被4整除但不能被100整除,或者能被400整除。

4、4.编程实现以下功能:输入一个大写字母进行循环后移5个位置后输出。如'A'变成'F'输出,'Z'变成'E'输出。

5、5.有一函数:当x<1时,y=x;当x>=1且x<10时,y=2x-1;当x>=10时,y=3x-11,写一程序,输入x,输出y值

第5章 循环结构程序设计

第5章 测试题

1、设变量已正确定义,则以下能正确计算n!的程序段是 。
A、f=0; for(i=1; i<=n; i++)f*=i;
B、f=1; for(i=1; i<n; i++)f*=i;
C、f=1; for(i=n; i>1; i++)f*=i;
D、f=1; for(i=n; i>=2; i--)f*=i;

2、假定所有变量均已正确说明,以下程序段运行后的输出结果是 。 x=0,y=5,z=31; while(z-->0&&++x<5)y=y-1; printf("%d,%d,%d\n",x,y,z);
A、3,2,0
B、3,2,-1
C、4,3,-1
D、5,-2,-5

3、假定所有变量均已正确说明,以下程序段运行后的输出结果是 。 int i,s=0; for(i=1;i<l0;i+=2) s+=i+1; printf("%d\n",s);
A、自然数1~9的累加和
B、自然数1~10的累加和
C、自然数1~9中奇数之和
D、自然数1~10中偶数之和

4、设有以下程序段 int x=0,s=0; while(!x!=0) s+=++x; printf("%d",s); 则 。
A、运行程序段后输出0
B、运行程序段后输出1
C、程序段中的控制表达式是非法的
D、程序段执行无限次

5、假定所有变量均已正确说明,以下程序段运行后的输出结果是 。 int t,a=1,b=5,c=-2; while(a>b>c) { t=a; a=b; b=t; c++;} printf("%d, %d, %d", a,b,c);
A、1, 5, 0
B、1, 5, -2
C、5, 1, -1
D、5, 1, -2

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

7、假定所有变量均已正确说明,以下程序段运行后的输出结果是 。 int k=5; while(--k) printf("%d", k-=3); printf("\n");
A、1
B、2
C、4
D、死循环

8、设有以下程序段 int x=0,s=0; while(!x!=0) s+=++x; printf("%d",s); 则下面描述中正确的是 。
A、运行程序段后输出0
B、运行程序段后输出1
C、循环的控制表达式不正确
D、程序段执行无限次

9、语句while(!x);中的!x等价于 。
A、x= =0
B、x!=1
C、x!=0
D、x= =1

10、以下描述中正确的是 。
A、由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句。
B、do-while循环由do开始,用while结束,在while(表达式)后面不能写分号。
C、在do-while循环体中,一定要有能使while后面表达式的值变为零("假")的操作。
D、do-while循环中,根据情况可以省略while。

11、下面有关for循环的正确描述是 。
A、for循环只能用于循环次数已经确定的情况
B、for循环是先执行循环体语句,后判断表达式
C、在for循环中,不能用break语句跳出循环体
D、for循环的循环体可以包括多条语句,但必须用花括号括起来

12、对for(表达式1; ;表达式3)可理解为 。
A、for (表达式1;0;表达式3)
B、for (表达式1;1;表达式3)
C、for (表达式1;null;表达式3)
D、缺少一个表达式

13、以下是有限循环的语句为 。
A、for(y=0,x=1;x>++y;x=i++) i=x;
B、for(;;x++=i);
C、while(1){ x++;}
D、for(i=10;;i--) sum+=i;

14、执行语句for(i=1;i++<4;);后变量的值为 。
A、3
B、4
C、5
D、不定

15、以下正确的描述是 。
A、continue语句的作用是结束整个循环的执行。
B、只能在循环体内和switch语句体内使用break语句。
C、在循环体内使用break语句或continue语句的作用相同。
D、从多层循环嵌套中退出时,只能使用goto语句。

16、以下描述正确的是 。
A、goto语句只能用于退出多层循环。
B、switch语句中不能出现continue语句。
C、只能用continue语句来中止本次循环。
D、在循环中break语句不能独立出现。

17、在do-while循环中,循环由do开始,用while结束;必须注意的是:在while表达式后面的 不能丢,它表示do-while语句的结束。
A、0
B、1
C、;
D、,

18、for语句中的表达式可以部分或全部省略,但两个 不可省略。但当三个表达式均省略后,因缺少条件判断,循环会无限制地执行下去,形成死循环。
A、0
B、1
C、;
D、,

19、以下for语句,循环体执行的次数是 。 for(a=0,b=0;(b!=1)&&(a<=4); a++) ;
A、无限循环
B、循环次数不定
C、执行4次
D、执行5次

20、在C语言的循环语句for,while,do-while中,用于直接中断最内层循环的语句是 。
A、swich
B、continue
C、break
D、if

21、循环语句中的for语句,其一般形式如下: for(表达式1;表达式2;表达式3) 语句 其中表示循环条件的是 。
A、表达式1
B、表达式2
C、表达式3
D、语句

22、以下能正确计算1×2×3×…×10的程序段是 。
A、do { i=1;s=1; s=s*i; i++;} while(i<=10);
B、do { i=1;s=0; s=s*i; i++;} while(i<=10);
C、i=1;s=1; do { s=s*i; i++;} while(i<=10);
D、i=1;s=0; do { s=s*i; i++;} while(i<=10);

23、break语句不能出现在 语句中。
A、switch
B、for
C、while
D、if

24、下列循环语句中有语法错误的是 。
A、while(x=y) 5;
B、while(0);
C、do 2 while(x= =b);
D、do x++; while(x= =10);

25、假定所有变量均已正确说明,以下程序段运行后的输出结果是 。 int x=0; do { x= -1*x; }while(!x);
A、是死循环
B、循环执行一次
C、循环执行二次
D、有语法错误

26、下述程序段中, 与其他程序段的作用不同。
A、k=1; while (1) { s+=k ; k=k+1 ; if (k>100) break ; } printf(“\n%d”,s) ;
B、k=1; Repeat : s+=k ; if (++k<=100) goto Repeat printf(“\n%d”,s) ;
C、int k,s=0; for (k=1;k<=100;s+=++k); printf(“\n%d”,s) ;
D、k=1; do s+=k; while (++k<=100) ; printf(“\n%d”,s) ;

27、以下程序段的循环次数是 。 for (i=2; i==0; ) printf(“%d” , i--) ;
A、无限次
B、0
C、1
D、2

28、以下不是死循环的程序段是 。
A、int i=100; while (1) { i=i%100+1 ; if (i>100) break ; }
B、for ( ; ; ) ;
C、int k=0; do { ++k; } while (k>=0);
D、int s=36; while (s) ; --s ;

29、下述语句执行后,变量k的值是 。 int k=1; while (k++<10);
A、10
B、11
C、9
D、无限循环,值不定

30、以下程序段中的变量已正确定义 for(i=0;i<4;i++,i++) for(k=1;k<3;k++); printf("*") 程序段的输出结果是 。
A、慕课答案大全

**
B、****
C、**
D、*

第5章 作业题

1、1.编程实现以下功能:输出100以内能被3整除且个位数为6的所有整数。

2、2.编程实现以下功能:计算1至10之间的奇数之和和偶数之和。

3、3.编程实现以下功能:统计从键盘输入的字符中数字字符的个数,当输入换行符时结束循环。

4、4.编程求解天数:有1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个。

5、5.编程输出如下图等腰三角形。 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

第6章 函数与编译预处理

第6章 测试题

1、以下叙述正确的是 。
A、C语言中除了main函数,其他函数不可作为单独文件形式存在
B、C语言程序是由过程和函数组成的
C、C语言函数不可以单独编译
D、C语言函数可以嵌套调用

2、以下关于C语言程序中函数的说法正确的是 。
A、函数的定义和点用都可以嵌套。
B、函数的定义不可以嵌套,但函数的调用可以嵌套;
C、函数的定义可以嵌套,但函数的调用不可以嵌套;
D、函数的定义不可以嵌套,但函数的调用可以嵌套;

3、若已定义的函数有返回值,则以关于该函数调用的叙述中错误的是
A、调用可以作为独立的语句存在
B、调用可以作为一个函数的实参
C、调用可以作为一个函数的形参
D、调用可以出现在表达式中

4、以下关于return语句的叙述中正确的是
A、一个自定义函数中必须有一条return语句
B、没有return语句的自定义函数在执行结束时不能返同到调用处
C、一个自定义函数中可以根据不同情况设置多条return语句
D、定义成void类型的函数中可以有带返回值的return语句

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

6、函数调用可以(),以下错误的描述是
A、作为一个函数的实参
B、出现在一个表达式中
C、作为一个函数的形参
D、出现在执行语句中

7、以下说法不正确的是
A、实参可以是任意类型
B、形参应与其对应的实参类型一致
C、实参可以是常量、变量或表达式
D、形参可以是常量、变量或表达式

8、C语言规定,简单变量作实参,它与对应形参之间的数据传递方式是
A、地址传递
B、单向值传递
C、由用户指定传递方式
D、双向值传递

9、当调用函数时,实参是一个数组名,则向函数传送的是
A、数组的首地址
B、数组的长度
C、数组每个元素中的值
D、数组每一个元素的地址

10、如果在一个函数中的复合语句中定义了一个变量,则该变量
A、为非法变量
B、只在该复合语句中有效
C、在本程序范围内有效
D、只在该复合语句中有效

11、以下不正确的说法为
A、形式参数是局部变量
B、在函数内的复合语句中定义的变量在本函数范围内有效
C、在不同函数中可以使用相同名字的变量
D、在函数内定义的变量只在本函数范围内有效

12、以下正确的说法是( )
A、用户可以重新定义标准函数,若如此,该函数将失去原有含义
B、用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调
C、系统不允许用户重新定义标准库函数,但可以使用标准库函数名定义用户自定义函数
D、系统根本不允许用户重新定义标准库函数

13、在C语言中,以下正确的说法是( )
A、只有当实参和与其对应的形参同名时才共占用存储单元
B、实参和与其对应的形参共占用一个存储单元
C、实参和与其对应的形参各占用独立的存储单元
D、形参是虚拟的,不占用存储单元

14、C语言允许函数值类型缺省定义,此时该函数值隐含的类型是( )
A、long 型
B、double 型
C、int 型
D、float型

15、在C语言中,函数的隐含存储类别是( )
A、无存储类别
B、static
C、auto
D、局部存储

16、以下只有在使用时才为该类型变量分配内存的存储类说明是( )
A、register和 static
B、auto和 register
C、auto和 static
D、extern和 register

17、以下函数定义正确的是( )
A、double fun(int x , y)
B、double fun(int x; y)
C、double fun(int x, int y)
D、double fun(int x; int y)

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

19、有如下函数调用语句 func(rec1,rec2+rec3,(rec4,rec5)); 该函数调用语句中,含有的实参个数是______。
A、5
B、有语法错
C、4
D、3

20、在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是( )
A、由实参传给形参,再由形参传回实参
B、单向值传递
C、地址传递
D、传递方式由用户指定

21、以下叙述中正确的是( )
A、函数的形参都属于全局变量
B、未在定义语句中赋初值的auto变量和static变量的初值都是随机值
C、全局变量的作用域一定比局部变量的作用域范围大
D、静态(static)类别变量的生存期贯穿于整个程序的运行期间

22、有如下程序 int runc(int a,int b) { return(a+b);} main( ) { int x=2,y=5,z=8,r; r=func(func(x,y),z); printf(“%\d\n”,r); } 该程序的输出的结果是( )
A、14
B、12
C、13
D、15

23、有如下程序 long fib(int n) { if(n>2) return(fib(n-1)+fib(n-2)); else return(2); } main() { printf("%d\n",fib(3)); } 该程序的输出结果是( )
A、8
B、6
C、4
D、2

24、有以下程序 voidf(int x,int y) { int t; if(x<y){ t=x; x=y; y=t; } } main() { int a=4,b=3,c=5; f(a,b); f(a,c); f(b,c); printf("%d,%d,%d\n",a,b,c); } 执行后输出的结果是( )
A、3,4,5
B、4,3,5
C、5,4,3
D、5,3,4

25、程序段: int x=12; doub1e y=3.141593; printf("%d%8.6f"x,y); 的输出结果是( )
A、123.1415931
B、123,1415930
C、12,3.141593
D、123.141593

第7章 数组

第7章 测试题

1、以下对一维整型数组a的正确说明是 。
A、#define SIZE 10 …… int a[SIZE];
B、int a(10);
C、int n; scanf(“%d”,&n); int a[n];
D、int n=10,a[n];

2、以下能对一维数组a进行正确初始化的语句是 。
A、int a[10]=(0,0,0,0,0);
B、int a[ ]=;
C、int a[10]={ };
D、int a[10]={ 10*1};

3、不是给数组的第一个元素赋值的语句是 。
A、a[1]=1;
B、int a[2]={ 1};
C、int a[2];scanf (“%d”,a);
D、int a[2]={ 1};

4、下面程序的运行结果是 。 main() { int a[6],i; for(i=1;i<6;i++) { a[i]=6*(i-2+4*(i>3))%5; printf("%2d",a[i]); } }
A、-1 0 1 1 2
B、-1 0 4 0 3
C、-1 0 1 4 3
D、-1 0 1 4 2

5、下列定义正确的是 。
A、int 4e[4]
B、int b[3]={ 2,5}
C、int a(10)
D、static int a[2]={ 1,2,3,4,5}

6、设有char str[10],下列语句正确的是 。
A、printf("%s",str);
B、printf("%c",str);
C、scanf("%s",&str);
D、printf("%s",str[0]);

7、下列说法正确的是 。
A、在C语言中,数组元素的数据类型可以不一致
B、在C语言中,可以使用动态内存分配技术定义元素个数可变的数组
C、在C语言中,数组元素的个数可以不确定,允许随机变动
D、在C语言中,定义了一个数组后,就确定了它所容纳的具有相同数据类型元素的个数

8、假设array是一个有10个元素的整型数组,则下列写法中正确的是
A、array[0]=10
B、array[-1]=0
C、array[0]=0
D、array[10]=0

9、有一数组如下定义:int a[6]={ 1,2,3,4,5}; 执行for (i=0; i<6;i++) printf ("%d ",a[i]);后输出的结果是___________。
A、1 2 3 4 5 5
B、1 2 3 4 5 6
C、1 2 3 4 5 随机值
D、1 2 3 4 5 0

10、有一数组int a[][4]={ 1,12,13,14,15,16,17,9,8,7,6,5},执行语句scanf("%d", &a[2][3])后,数组中的值应为:_______(键盘输入10)
A、1,12,13,14,0,0,0,0,0,0,0,0
B、1,12,13,14,15,16, 17,0,8,7,6,5
C、1,12,13,14,15,16, 17,9,8,7,6,10
D、1,12,13,14,15,16, 17,9,8,7,6,5

11、下列程序的输出结果是________。 main() { int k=3, a[2]; a[0]=k ; k=a[1]*10; printf("%d\n",k); }
A、不定值
B、10
C、33
D、30

12、若有以下说明和语句,则输出结果是__________。 char s[12 ]="a book! "; printf ("%.4s", s );
A、a book!
B、a bo
C、a book!□□□(□代表空格)
D、因格式描述不正确,没有确定的输出

13、若有声明语句“char C[10]={ 'c','x','e'},N[3][10]={ "see","good","369852"};”,则以下的操作中,可能出现越界访问的是___________。
A、printf("%s", C);
B、printf("%c", N[10]);
C、printf("%s", N[0]);
D、printf("%s", N);

14、若有以下说明和语句,则输出结果是__________。 char str[ ]="\"c:\\abc.dat\""; printf("%s",str);
A、\"c:\\abc.dat\"
B、"c:\\abc.dat
C、\"c:\\abc.dat\"
D、符串中有非法字符

15、以下数组定义中不正确的是___________。
A、int a[2][3];
B、int d[3][]={ { 1,2},{ 1,2,3},{ 1,2,3,4}};
C、int b[][3]={ 0,1,2,3};
D、int b[][3]={ 0,1,2,3};

16、以下对一维数组a的正确说明是: 。
A、char a(10);
B、char a[3]={ ‘a’,’b’,’c’};
C、char a(10)
D、int k=5,a[k];

17、以下能对一维数组a进行初始化的语句是 。
A、int a(5)={ }
B、int a{ 5}={ 10*1}
C、int a[5]=(0,1,2,3,4,)
D、int a[3]={ 0,1,2}

18、已知:int a[10]; 则对a数组元素的正确引用是 。
A、a[0]
B、a[10]
C、a[3.5]
D、a(5)

19、执行下面的程序段后,变量k中的值为 。 int k=3, s[2]; s[0]=k; k=s[0]*10;
A、33
B、不定值
C、10
D、30

20、若有以下数组说明,则数值最大的和最小的元素下标分别是 。 int a[12]={ 1,2,3,4,5,6,7,8,9,10,11,12};
A、1,12
B、1,11
C、0,12
D、0,11

21、若有以下数组说明,则i=10;a[a[i]]元素数值是 。 int a[12]={ 1,4,7,10,2,5,8,11,3,6,9,12};
A、5
B、9
C、10
D、6

22、若有说明:int a[][3]={ { 1,2,3},{ 4,5},{ 6,7}}; 则数组a的第一维的大小为 。
A、无确定值
B、2
C、3
D、4

23、下面程序段的输出结果是 。 int i; int 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、1 4 7
B、1 5 9
C、3 6 9
D、3 5 7

24、对二维数组的正确定义是 。
A、int a[2,3]={ 1,2,3,4,5,6};
B、int a[2 ] [ ]={ 1,2,3,4,5,6};
C、int a[ ] [ ]={ 1,2,3,4,5,6};
D、int a[ ] [3]={ 1,2,3,4,5,6};

25、已知int a[3][4];则对数组元素引用正确的是 。
A、a(2)(1)
B、a[1,3]
C、a[2][4]
D、a[2][0]

26、下列字符串赋值语句中,不能正确把字符串C program赋给数组的语句是: 。
A、char a[]={ ‘C’,‘ ’,‘p’,‘r’,‘o’,‘g’,‘r’,‘a’,‘m’ ,‘’};
B、char a[10]={ “C program”};
C、char a[10]; a= “C program”;
D、char a[]={ ‘C’,‘ ’,‘p’,‘r’,‘o’,‘g’,‘r’,‘a’,‘m’ ,‘’};

27、若有如下定义和语句: char s[12]= “a□book!”; printf(“%d”,strlen(s) ); 则输出结果是: 。
A、12
B、6
C、10
D、7

28、若有说明:int a[3][4] = ;则下面正确的叙述是: 。
A、只有元素a[0][0]可以得到初值0
B、数组a每个元素均可得到初值,但值不一定为0
C、此说明语句不正确
D、数组a中每个元素均可得到初值0

29、执行下列程序时输入:123<空格>456<空格>789<回车>,输出结果是 main() { char s[100]; int c, i; scanf("%c",&c); scanf("%d",&i); scanf("%s",s); printf("%c,%d,%s \n",c,i,s);}
A、123,456,789
B、1,23,456,789
C、123,45,6,789
D、1,23,456

30、若有如下定义: int a[3][3]={ 1,2,3,4,5,6,7,8,9},i ; 则下列语句的输出结果是: 。 for (i=0;i<=2;i++) printf(“%d”,a[i][2-i]);
A、1 5 9
B、3 5 7
C、1 4 7
D、3 6 9

第8章 指针

第8章 测试题

1、变量的指针,其含义是指该变量的______。
A、地址
B、名
C、一个标志
D、值

2、若存在:int i,j=2,*p=&i;,则能完成i=j赋值功能的语句是______。
A、*p=*&j;
B、i=**p;
C、i=&j;
D、i=*p;

3、*p=*&j;
A、&a[6]
B、a+6
C、&a[50 ]++
D、&a[0]+6

4、若存在:int a=0,*p=&a;下面均代表地址的一组选项是______。
A、a,p,*&a
B、*&p,*p,&a
C、&a,&*p,p
D、*&a,&a,*p

5、若存在:int *p,a=5,b;则以下正确的程序段是 。
A、p=&b; scanf("%d",*p);
B、p=&b; scanf("%d",&p);
C、p=&b; *p=a;
D、p=&b; scanf("%d",*p);

6、若存在变量定义和函数调用语句:int a=1;test_value(&a);则下面函数输出的正确结果是 。 void test_value(int *x) { printf("%d\n",*x--); }
A、0
B、1
C、2
D、3

7、下面程序段中,for循环的执行次数是 。 char *s="\tt\101gxq"; for( ;*s!='\0';s++);
A、9
B、5
C、6
D、7

8、下面程序段中,for循环的执行次数是 。 char *s="\tt\518gxq"; for( ;*s!='\0';s++);
A、7
B、9
C、5
D、6

9、下面能正确进行字符串赋值操作的是 。
A、char *s;scanf("%s",s);
B、char s[5]={ "ABCDE"};
C、char s[5]={ 'A','B','C','D','E'};
D、char *s;s="ABCDE";

10、下面程序段的运行结果是 。 char *s="abcde"; s+=2; printf("%d",s);
A、ced
B、字符'b'的地址
C、字符'c'
D、字符'c'的地址

11、以下与库函数strcmp(char *s,char *t)的功能相等的程序段是 。
A、strcmp4(char *s,char *t) { for (;*s= =*t;s++,t++) if (!*s) return 0; return (*t-*s); }
B、strcmp2(char *s,char *t) { for (;*s++= =*t++;) if (!*s) return 0; return (*s-*t); }
C、strcmp3(char *s,char *t) { for (;*t= =*s;) { if (!*t) return 0; t++; s++; } return (*s-*t); }
D、strcmp1(char *s,char *t) { for (;*s++= =*t++;) if (*s= ='\0') return 0; return (*s-*t); }

12、下面能正确进行字符串赋值操作的是 。
A、char s[5]={ “abcde”};
B、char s[5]={ ‘a’’b’’c’’d’’e’};
C、char s[5]={ ‘a’,’b’,’c’,’d’,’e’};
D、char *s;scanf(“%s”,s);

13、下面的程序段叙述正确的是 。 Char s[]=”tarim”,char *p=s;
A、s和p完全相同
B、数组s长度和p所指向的字符串长度相等
C、下面的程序段叙述正确的是 。 Char s[]=”tarim”,char *p=s;
D、数组s中的内容和指针变量p中的内容相等

14、以下程序段运行结果是 。 char s[] = "mrgaotai",*p = s; printf("%d\n",strlen(strcpy(p,"tarim")));
A、2
B、3
C、5
D、4

15、下面程序段在vc++ 6.0下的运行结果是________。 char *s1="computer"; char *s2="comPuter"; s1+=3; s2+=3; printf("%d\n",strcmp(s1,s2));
A、1
B、-1
C、不确定的值
D、0

16、若有定义:int (*p)[9];则标识符p 。
A、是一个指向整型变量的指针
B、定义不合法
C、是一个指针数组名
D、是一个指针变量,它指向一个含有九个整型元素的数组

17、下面程序段的运行结果是 。 char *p="%d,a=%d,b=%d\n"; int a=111,b=10,c; c=a%b; printf(p,c,a,b);
A、1,a=111,b=10
B、a=111,b=10
C、a=1,b=111
D、以上结果都不对

18、下面程序段的运行结果是 。 char *p="%d,a=%d,b=%d\n"; int a=111,b=10,c; c=a%b; p+=3; printf(p,c,a,b);
A、1,a=111,b=10
B、a=1,b=111
C、a=111,b=10
D、以上结果都不对

19、以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误的原因是 。 int *p,*q,a,b; p=&a; scanf("%d",*p);
A、*p只能用来说明p是一个指针变量
B、*p表示的是指针变量p的值
C、*p表示的是变量a的值,而不是变量a的地址
D、*p表示的是指针变量p的地址

20、以下程序段执行后的结果为 。 int a[ ][4]={ 2,4,6,8,10,11,13,15,17,19,21}; int (*p)[4], i=1,j=1; p=a; printf("%d\n", *(*(p+i)+j));
A、8
B、13
C、11
D、10

21、以下程序执行后的结果为 。 #include "stdio.h" #include <string.h> void fun(char *s) { char a[10]; strcpy(a,"string"); s=a; } main() { char *p="gao"; fun(p); printf("%s\n",p); }
A、gao
B、结果不确定
C、str
D、string

22、已有函数max(a,b),为了让函数指针变量p指向函数max,正确的赋值方法是 。
A、p=max(a,b);
B、*p=max(a,b);
C、p=max;
D、*p=max;

23、已有定义int (*p) ();指针p可以 。
A、表示函数返回值的类型
B、表示函数的类型
C、指向函数的入口地址
D、代表函数的返回值

24、若有定义:int a[3][4];下列哪项不能表示数组元素a[1][1] 。
A、(*(a+1)[1])
B、*(a[1]+1)
C、*(a[1]+1)
D、*(a+5)

25、与int *p[5];定义等价的是
A、int (*p)[5];
B、int p[4];
C、int *(p[5]);
D、int *p;

26、若存在以下程序段,执行后结果是 。 int **k,*a,b=100; a=&b;k=&a; printf("%d\n",**k);
A、运行出错
B、100
C、a的地址
D、b的地址

27、若存在以下程序段,执行后结果是 。 int k= 2,m=4,n=6; int *pk=&k,*pm=&m,*p; *(p=&n)=*pk*(*pm); printf("%d\n",n);
A、8
B、6
C、4
D、2

28、若存在以下定义:char a[l0],*p=a;不能给a数组输入字符串的语句是 ______。
A、gets(a[0]);
B、gets(a);
C、gets(p);
D、gets(a[]);

29、若存在以下语句且0<=k<6,则能正确表示数组元素地址的语句是 ______。 static int a[]={ 2,4,6,8,10,12},*p=x,k;
A、a++
B、&p[k]
C、&p
D、&(x+1)

30、设有以下语句,则______不是对a数组元素的正确引用,其中0≤i<10。 int a[10]={ 0,1,2,3,4,5,6,7,8,9}, *p=a;
A、*(*(a+i))
B、p[i]
C、*(&a[i])
D、a[p-a]

第9章 结构体数据类型与链表

第9章 测试题

1、有以下程序段: typedef struct NODE { int num; struct NODE *next; } OLD; 以下叙述中正确的是______。
A、NODE是一个结构体类型
B、OLD是一个结构体类型
C、以上的说明形式非法
D、NODE是一个结构体变量

2、若有以下说明语句: Union data { int a; Float b; } a; 以下叙述中正确的是______。
A、以上的说明形式非法
B、a是一个共用体类型
C、data是一个结构体类型
D、data是一个共用体类型

3、有以下程序: # include ”stdio.h” struct STU { char name[10]; int num; }; void f(char *name, int num) { struct STU s[2]={ { "SunDan",20044},{ "Penghua",20045}}; num = s[0].num; strcpy(name, s[0].name); } main() { struct STU s[2]={ { "YangSan",20041},{ "LiSiGuo",20042}},*p; p=&s[1]; f(p->name, p->num); printf("%s %d\n", p->name, p->num); } 程序运行后的输出结果是______。
A、SunDan 20044
B、LiSiGuo 20042
C、YangSan 20041
D、SunDan 20042

4、以下程序运行的结果是_______。 #include”stdio.h main() { struct date { int year , month , day ; } today ; printf(“%d\n”,sizeof(struct date)); }
A、6
B、10
C、12
D、8

5、若有以下说明和定义 union dt { int a; char b; double c; }data; 以下叙述中错误的是 ______。
A、data的每个成员起始地址都相同
B、程序段:data.a=5;printf("%f\n",data.c);输出结果为5.000000
C、data可以作为函数的实参
D、变量data所占内存字节数与成员c所占字节数相等

6、设有如下说明 typedef struct ST { long a; int b; char c[2]; } NEW; 则下面叙述中正确的是______ 。
A、ST是一个结构体类型
B、NEW是一个结构体类型
C、以上的说明形式非法
D、NEW是一个结构体变量

7、若已有以下结构体定义和初始化,则值为2的表达式是 。 struct cmplx { int x ; int y; } c[ ]={ 1,2,3,4};
A、c[0].y
B、c.y[1]
C、y
D、c.y[0]

8、变量a所占内存字节数是______。 union U { char st[4]; int I ; long l ; } ; struct A { int c; union U u ; } a ;
A、6
B、2
C、4
D、8

9、以下选项中不能正确把c1定义成结构体变量的是______。
A、typedef struct { int red; int green; int blue; } COLOR; COLOR cl;
B、struct color { int red; int green; int blue; } c l;
C、struct color cl { int red; int green; int blue; };
D、struct { int red; int green; int blue; } c l;

10、若有以下说明和定义: struct test { int m1; char m2; float m3; union uu { char u1[5]; int u2[2]; }ua; }myaa; 则sizeof(struct test)的值是______。
A、14
B、9
C、12
D、16

11、有以下程序: struct stu { char[10]; float score[3]; }; main( ) { struct stu s[3]={ { "20021",90,95,85}, { "20022",95,80,75}, { "20023",100,95,90}}, *p=s; int i; float sum=0; for(i=0;i<3;i++) sum=sum+p->score[i]; printf("%6.2f\n",sum); } 程序运行后的输出结果是______。
A、280.00
B、270.00
C、285.00
D、260.00

12、有以下程序 #include <stdlib.h> struct node { int num; struct node *next; }; main() { struct node *p,*q,*r; p=(struct node *)malloc(sizeof(struct node)); q=(struct node *)malloc(sizeof(struct node)); r=(struct node *)malloc(sizeof(struct node)); p->num=10; q->num=20; r->num=30; p->next=q; q->next=r; printf("%d\n",p->num+p->next->num); } 程序运行后的输出结果是______。
A、40
B、10
C、20
D、30

13、下述程序的执行结果是______。 #include <stdio.h> union un { int i; char c[2]; }; void main( ) { union un x; x.c[0]=10; x.c[1]=1; printf("\n%d",x.i); }
A、11
B、265
C、138
D、266

14、若有下面的说明和定义: struct test { int ml; char m2; float m3; union uu { char ul[5]; int u2[2];} ua; } myaa; 则sizeof(struct test )的值是______。
A、16
B、12
C、14
D、9

15、设有以下说明语句 typedef struct { int n; char ch[8]; }PER; 则下面叙述中正确的是______。
A、PER 是结构体变量名
B、PER是结构体类型名
C、typedef struct 是结构体类型
D、struct 是结构体类型名

16、若已经定义struct stu { int a, b; } student ; 则下列输入语句中正确的是 。
A、scanf("%d",&a);
B、scanf("%d",&student);
C、scanf("%d",&stu.a);
D、scanf("%d",&student.a);

17、有如下程序段,则vu.a 的值为 。 union u { int a; int b; float c; } vu; vu.a=1; vu.b=2; vu.c=3;
A、1
B、2
C、3
D、A、B、C都不是

18、设已经定义union u{ char a; int b;} vu; 在VC中存储char 型数据需要1个字节,存储int型数据需要4个字节,则存储变量vu需要______个字节。
A、8
B、4
C、5
D、1

19、设已经定义union u{ int a; int b; } vu={ 1,2}; 则 。
A、该定义错误
B、共用体成员a和b的值都是1
C、共用体成员a和b的值都是2
D、共用体成员a的值是1,b的值都是2

20、若已经定义typedef struct stu { int a, b; } student ; 则下列叙述中正确的是 。
A、student 是结构体类型
B、stu 是结构体变量
C、a和b是结构型体变量
D、student 是结构体变量

21、设有如下程序段,则a[1].c 的值为 。 Struct u { int a; int b; float c; } a[2]={ 1,2,3,4,5,6};
A、3
B、6
C、1
D、4

22、下列定义方式中,不正确的是 。
A、union { int a ;,int b} ;
B、union { int a ; int b} ;
C、typedef int interger
D、struct { int a ; int b} a;

期末在线考试

期末在线考试

1、下列不符合常量的正确表示形式的是( )。
A、3
B、0.03
C、C 01769
D、D 0x3657

2、下列符合语法规则的字符型数据是( )。
A、’char’
B、’.c’
C、’\101’
D、”c”

3、下列选项中不合法的标识符是( )。
A、&a
B、FOR
C、print
D、_00

4、若有以下类型说明语句: char c; int i; float x; double u; 则表达式 i-c+u*x 的结果为( )类型。
A、float
B、char
C、int
D、double

5、设有定义:int x=2;以下表达式中,值不为6的是( )。
A、2*x,x+=2
B、x++,2*x
C、x*=(1+x)
D、x*=x+1

6、下列表达式中,( )可以正确表示x<=0或x>=1的关系。
A、(x>=1)||(x<=0)
B、x>1||x<0
C、x>=1or x<=0
D、x>=1||x>=0

7、若变量均已正确定义并赋值,以下合法的C语言赋值语句是( )。
A、x=y==5;
B、x=n%2.5;
C、x+n=i;
D、x=5=4+1;

8、以下4个选项中不能看作是一条语句的是 ( )。
A、{ ;}
B、a=0,b=0,c=0;
C、if(a>0);
D、if(b==0)m=1;n=2;

9、已知字母A的ASCII码值为十进制数65,且c2为字符型,则执行语句“c2=’A’+’6’-‘3’;” 后,c2的值为( )。
A、D
B、69
C、不确定的值
D、C

10、若变量num、sum均是整型,且num=sum=7,则执行表达式“sum=num++,sum++,++num”后sum的值为( )。
A、7
B、8
C、9
D、10

11、如果int a=5,b=7;则条件表达式"a<b?a-b:b-a"的值是( )。
A、5
B、-2
C、7
D、2

12、设a=10,b=4;则表达式: a+b,18+(b=4)*3,(a/b,a%b) 的值为( )。
A、14
B、30
C、2
D、0

13、设若变量均已正确定义,若要通过scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2);语句为变量a1和a2赋值10和20,为变量c1和c2赋值字符X和Y。以下所示的输入形式正确的是(注:代表空格字符)( )。
A、10X20Y
B、10X20Y
C、10X ?20Y
D、10X ?20Y

14、以下程序的输出结果是( )。 #include<stdio.h> main() { int a=2,b=5; printf("a=%%d,b=%%d",a,b); }
A、a=%2,b=%5
B、a=2,b=5
C、a=%%d,b=%%d
D、a=%d,b=%d

15、为了避免在嵌套的条件语句if-else中产生二义性,C语言规定:else子句总是与( )配对。
A、缩排位置相同的if
B、其之前最近的没有else配对的if
C、其之后最近的if
D、同一行上的if

16、已知“int x=10,y=20,z=30;”,则执行 if(x>y) z=x;x=y;y=z; 语句后,x,y,z的值是( )。
A、x=10,y=20,z=30
B、x=20,y=30,z=30
C、x=20,y=30,z=10
D、x=20,y=30,z=20

17、以下叙述正确的是 ( )。
A、用do-while语句构成的循环不能用其它语句构成的循环来代替。
B、用do-while语句构成的循环只能用break语句退出。
C、用do-while语句构成的循环,在while后的表达式为非零时结束循环。
D、用do-while语句构成的循环,在while后的表达式为零时结束循环。

18、若m和n均为int型变量,则以下for语句的正确判断是( )。 for(n=15,m=15;m!=15;++m,n++) printf(“ok!\n”);
A、循环体一次也不执行
B、输出ok!
C、循环体只执行一次
D、死循环

19、若n为int型变量,则循环语句“for(n=0;n<20;n++);”控制循环体执行( )次。
A、19
B、21
C、22
D、20

20、在循环语句循环体中执行continue语句,其作用是( )。
A、立即终止循环
B、继续执行contiune语句之后的循环体各语句
C、结束本次循环
D、结束本次循环,跳出循环过程

21、下面对C语言函数的描述中,正确的是( )。
A、C程序由一个或一个以上的函数组成
B、函数既可以嵌套定义又可以递归调用
C、函数必须有返回值,否则不能使用函数
D、C程序中调用关系的所有函数必须放在同

学习通C语言程序设计_75

学习通C语言程序设计_75是一门由中国大学MOOC(慕课)平台提供的在线课程,旨在帮助学习者快速掌握C语言的基本语法和程序设计方法,为后续的编程学习打下基础。

该课程共分为7个单元,涵盖了C语言程序设计的基础知识、条件语句、循环语句、数组、指针、函数和文件操作等内容,同时配合了丰富的实例演示和练习题,让学习者在实践中掌握知识。

课程特点

  • 课程内容全面、系统,涵盖了C语言基础知识的所有方面;
  • 配合实例演示和练习题,让学习者掌握知识的同时具备实际操作能力;
  • 采用在线课程形式,学习者可以在任何时间、任何地点进行学习,灵活方便;
  • 提供专业的教学团队,让学习者在学习过程中得到有针对性的指导和帮助。

学习建议

  • 提前了解C语言的基本概念和语法知识,为学习该课程打下基础;
  • 认真跟随课程进度,完成每个单元的学习和练习;
  • 多动手编写程序,不断练习和实践,掌握C语言的编程思想;
  • 结合网上的相关资源,扩展自身的知识面,不断提升编程能力。

总之,学习通C语言程序设计_75是一门很好的C语言学习入门课程,对于初学者来说,是快速掌握C语言的基础知识和编程思想的绝佳选择。相信通过认真学习和不断练习,学习者一定可以掌握C语言编程的精髓,为以后的编程学习打下坚实的基础。