第1章 C语言概述
第1讲 C语言概述随堂测验
1、程序 #include void main() { printf("Hello, world!\n"); } 经过编译运行会在显示器上输出 Hello, world! 如果希望输出:Nice to meet you. 则应使用Nice to meet you.替换( )。
A、void
B、main
C、printf
D、Hello, world!
第2讲 C语言基本语法成分随堂测验
1、if 属于
A、关键字
B、用户标识符
C、预定义标识符
D、以上均不对
作业
1、下列属于C语言关键字的是( )。
A、Int
B、typedef
C、ENUM
D、unien
2、下列叙述中,不正确的是( )。
A、分号是C语句的必要组成部分
B、C语句的注释可以写在语句的后面
C、函数是C程序的基本单位
D、主函数的名字不一定用main表示
3、构成C语言源程序的基本单位是( )。
A、过程
B、函数
C、子程序
D、命令
4、一个C程序的执行是从( )。
A、main函数开始,直到main函数结束
B、main函数开始,直到最后一个函数结束
C、第一个函数开始,直到最后一个函数结束
D、第一条语句开始,直到最后一条语句结束
5、下列属于C语言中合法标识符的是( )。
A、ex-1
B、if
C、_cook
D、951a
6、以下叙述不正确的是( )。
A、在C程序中,注释说明只能位于一条语句的后面
B、注释说明被计算机编译系统忽略
C、注释说明必须跟在“//”之后不能换行或者括在“/*”和“*/”之间且注释符必须配对使用
D、注释符“/”和“*”之间不能有空格
7、下面四组选项中,均是C语言关键字的选项是( )。
A、auto enum include
B、switch typedef continue
C、signed union scanf
D、if struct type
8、在C程序中,main函数的位置( )。
A、必须作为第一个函数
B、必须作为最后一个函数
C、可以任意
D、必须放在它所调用的函数之后
9、C程序是由( )构成的。
A、一个主程序与若干子程序
B、一个或多个函数
C、若干过程
D、若干子程序
10、C语言属于( )。
A、机器语言
B、汇编语言
C、高级语言
D、低级语言
11、C语言的源程序通常的扩展名是( )。。
A、.cpp
B、.c
C、.obj
D、.exe
12、下列选项中,( )属于多行注释。
A、//
B、/**/
C、\\
D、/*
13、下列可用作C语言用户标识符的是( )
A、x-y
B、mπ
C、student
D、for
14、以下不是C语言关键字的是( )
A、do
B、Goto
C、break
D、return
15、C语言允许直接访问内存地址。
16、C语言本身没有输入输出语句。
17、while、If、double均是C语言的关键字。
18、101a是合法标识符。
19、在C语言中,合法标识符的第一个字符必须是字母。
第2章 基本数据类型和运算符
第1讲 整型常量与浮点型常量随堂测验
1、实型数据可以表示为小数形式或指数形式。
第2讲 符号常量与字符型常量随堂测验
1、有符号常量定义 #define PI 3.14159 在程序运行中,PI相当于( )。
A、3.14159
B、3.14
C、3.
D、3
第3讲 变量随堂测验
1、变量是可以变的量,所以可以将字符型变量a的值改变为( )。
A、32767
B、256
C、‘a’
D、25.6
第4讲 算术运算符与算术表达式随堂测验
1、表达式2+8%5的结果为( )。
A、2
B、8
C、5
D、0
第5讲 赋值运算符与赋值表达式随堂测验
1、如有定义 int a,b=2; 则执行表达式a=b++;后,a的值为( )。
A、2
B、3
C、0
D、随机
第6讲 关系运算符与关系运算符随堂测验
1、表达式3>5的值为( )。
A、1
B、0
C、表达式错误
D、3
第7讲 逻辑运算符与逻辑运算符随堂测验
1、如有定义int a=2,b=3; 则执行语句 a++||b++后,变量b的值为( )。
A、2
B、3
C、4
D、以上均不对
第8讲 条件运算符与逗号运算符随堂测验
1、若有语句x>y?z=x:z=y; 已知x为8,y为10,则执行上述语句后z的值为( )。
A、8
B、10
C、0
D、以上答案均不对
第9讲 类型转换随堂测验
1、将实型数3.14赋给整型变量a后,a的值为3。
第2章 单元测验
1、下列不合法的字符常量是( )。
A、'2'
B、'\101'
C、'ab'
D、'\n'
2、下列合法的转义字符是( )。
A、'\"'
B、'\018'
C、'\ee'
D、'xab'
3、以下选项中不合法的实型常量是( )。
A、E3
B、.123
C、-6.2e4
D、5.
4、若已定义x和y为double型变量,则表达式x=1,y=x+3/2的值是( )。
A、1
B、2
C、2.0
D、2.5
5、执行语句“x=(a=5,b=a--)”后,x,a,b的值分别是( )。
A、5,5,4
B、5,4,4
C、5,4,5
D、4,5,4
6、已知int x=5,y=5,z=5;则执行语句x%=y+z;后,x的值是( )。
A、0
B、1
C、5
D、6
7、表达式(k=3*2,k+4),k*3的值是( )。
A、14
B、10
C、30
D、18
8、下面程序的输出结果是( )。 #include void main() { int x=10,y=3,z; printf("%d\n",z=(x%y,x/y)); }
A、0
B、1
C、3
D、4
9、经过下述赋值后,变量x的数据类型是( )。 float x=21.0; int y; y=(int)x;
A、int
B、float
C、double
D、char
10、执行以下程序后,输出结果为 #include void main() { int x; float y; y=3.6; x=(int)y+10; printf("x=%d,y=%f",x,y); }
A、x=13.5,y=3.600000
B、x=13,y=3.600000
C、x=13,y=3
D、x=13,y=3.6
11、下列浮点数的形式表示错误的是( )。
A、10.6
B、.5
C、1e5
D、12E2.0
12、printf("%d",5<=4>1);的结果是( )。
A、0
B、1
C、2
D、3
13、假设a=1,b=2,c=3,d=4,则表达式a>b?a:b
A、4
B、3
C、2
D、1
14、若x为int类型,则表达式x=1,x+5,x++的值是1。
15、8E2是不合法的整型常量。
16、-6.2e4是不合法的实型常量。
17、执行语句“printf("%x",-1);”屏幕显示-ffff。
18、若有int x=8,y=5,z;则执行语句“z=x/y+0.4”后,z的值为1。
第3章 顺序和选择结构程序设计
第1讲 算法及结构化程序设计方法随堂测验
1、有些算法没有输入或者输出。
第2讲 程序基本结构随堂测验
1、所有的程序都可以用顺序、分支和循环三种基本结构表示出来。
第3讲 数据输入与输出(上)随堂测验
1、如有定义int a=128; 则输出语句printf(“%o”,a);的输出结果为( )。
A、200
B、128
C、100
D、格式描述符使用错误
第4讲 数据输入与输出(下)随堂测验
1、C语言中,输入输出的功能是使用库函数实现的。
第5讲 二路分支1随堂测验
1、条件表达式x=0?z=10:z=-10的作用相当于分支语句 if(!x) z=10; else z=-10
第6讲 二路分支2随堂测验
1、else会和离它最近的if配对。
第7讲 多路分支随堂测验
1、以下选项中,()不属于switch语句的关键字。
A、for
B、case
C、default
D、break
第4章 循环结构程序设计
第1讲 循环控制语句随堂测验
1、C语言提供的循环控制语句有while、do-while、for三种。
第2讲 循环嵌套随堂测验
1、外重循环每执行一次,内重循环要执行完整的一遍。
第3讲 循环典型应用--累加累乘问题随堂测验
1、求解1!+2!+3!+ ... + n!的问题,可以使用一重循环完成,也可以使用两重循环完成。
第4讲 循环典型应用--迭代问题随堂测验
1、迭代问题的求解关键要素:确定迭代变量;确定迭代关系式;确定迭代次数。
第5讲 循环典型应用问题--猴子吃桃随堂测验
1、猴子吃桃问题使用迭代递推方法实现时有2个迭代变量。
第4章 单元测验
1、以下说法正确的是( )。
A、do-while语句构成的循环不能用其他语句构成的循环来代替。
B、do-while语句构成的循环只能用break语句退出。
C、用do-while语句构成的循环,在while后的表达式为非0时结束循环。
D、用do-while语句构成的循环,在while后的表达式为0时结束循环
2、以下程序运行时从键盘输入3.6,2.4,输出结果是( )。 #include void main() { float x,y,z; scanf("%f,%f",&x,&y); z=x/y; while(1) { if(fabs(z)>1.0) { x=y; y=x; z=x/y; } else break; } printf("%f",y); }
A、1.500000
B、1.600000
C、2.000000
D、2.400000
3、如果c是大于1的正整数,与以下程序段功能相等的赋值语句是( )。 s=a; for(b=1;b<=c;b++) s=s+1;
A、s=a+b;
B、s=a+c;
C、s=s+c;
D、s=b+c;
4、有一条长阶梯,若每步跨2阶,则最后剩余1阶,若每步跨3阶,则最后剩余2阶,若每步跨5阶,则最后剩余4阶,若每步跨6阶,则最后剩余5阶,若每步跨7阶,最后才正好一阶不剩。请问,这条阶梯共有多少阶。 请补充while语句后的判断条件。 #include void main() { int i=1; while( ) ++i; printf("阶梯共有%d阶.\n",i); }
A、!((i%2==1)&&(i%3==2)&&(i%5==4)&&(i%6==5)&&(i%7==0))
B、(i%2==1)&&(i%3==2)&&(i%5==4)&&(i%6==5)&&(i%7==0)
C、!((i%2==0)&&(i%3==2)&&(i%5==4)&&(i%6==5)&&(i%7==0))
D、!((i%2==1)&&(i%3==2)&&(i%5==4)&&(i%6==5)&&(i%7==1))
5、以下程序段的输出结果是( )。 #include void main() { int a=3; do { printf("%d",a--); }while(!a); }
A、321
B、3
C、不输出任何内容
D、32
6、若定义int i; 则以下for语句的执行结果是( )。 for(i=1;i<10;i++) { if(i%3) i++; ++i; printf("%d",i); }
A、35811
B、369
C、258
D、2468
7、以下程序段的输出结果是( )。 int n=10; while(n>7) { printf("%d,",n); n--; }
A、10,9,8,
B、10,9,8,7,
C、9,8,7,6,
D、9,8,7,
8、以下程序的输出结果是( )。 #include void main() { int i=5; for(;i<15;) { i++; if(i%4==0) printf("%2d",i); else continue; } }
A、81216
B、812
C、1216
D、8
9、以下关于for语句的说法不正确的是( )。
A、for循环只能用于循环次数已经确定的情况
B、for循环是先判断表达式,后执行循环体语句
C、for循环中,可以用break语句跳出循环体
D、for循环体语句中,可以包含多条语句,但要用花括号括起来。
10、C语言中,while语句和do-while语句的主要区别是( )。
A、do-while的循环体不能是复合语句
B、do-while的循环体至少无条件执行一次
C、while的循环控制条件比do-while的循环控制条件严格
D、do-while允许从外部转到循环体内
11、若定义int i;则以下循环语句的循环执行次数是( )。 for(i=2;i==0;) printf("%d",i--);
A、0
B、1
C、2
D、无限次
12、下面程序段的输出结果是__________。 #include void main() { int n=4; while(n) printf("%d",--n); }
A、3210
B、4321
C、321
D、43210
13、在while(x)语句中的x与下面条件表达式等价的是__________。
A、x!=0
B、x==0
C、x!=1
D、x==1
14、语句while(!y)中的!y等价于y!=0。
15、下面程序段循环一次也不执行。 int x=10; while(x=0) x=x-1;
16、for语句中的表达式可以部分或全部省略,但是两个分号不能省略。
17、用于直接中断最内层循环的语句是break。
18、以下程序的输出结果是n=4 #include void main() { int i,n=0; for(i=2;i<5;i++) { do { if(i%3) continue; n++; } while(!i); n++; } printf("n=%d",n); }
19、while语句与do-while语句功能相同。
20、for语句只能实现循环次数确定的循环。
第5章 数组
第1讲 一维数组的概念随堂测验
1、静态数组的大小必须是提前固定的。
第2讲 一维数组的应用(上)随堂测验
1、数组具有随机存取的特点。
第3讲 一维数组的应用(下)随堂测验
1、冒泡排序的核心思想是相邻的元素如果是逆序就进行交换。
第4讲 二维数组的概念随堂测验
1、二维数组可以看成是由多个一维数组构成的一维数组。
第5讲 二维数组的应用(上)随堂测验
1、矩阵的运算可以借助二维数组来实现。
第6讲 二维数组的应用(下)随堂测验
1、在C语言中,二维数组是按照行序为主序进行存储的。
第7讲 字符数组的概念随堂测验
1、字符数组可以用来处理字符串问题。
第8讲 字符串处理函数随堂测验
1、strcopy函数多用来进行字符串的赋初值。
第9讲 字符串的应用随堂测验
1、二维字符数组可以处理多个字符串的应用问题。
第10讲 指针和一维数组随堂测验
1、数组名是该数组首元素的起始地址,是一个地址常量。
第11讲 折半查找随堂测验
1、折半查找要求是待查记录是有序排列的。
第12讲 冒泡排序随堂测验
1、冒泡排序是稳定性排序方法。
第5章单元测验
1、若定义以下变量和数组: int i; int a[3][3]={1,2,3,4,5,6,7,8,9}; 则下列语句的输出结果是( )。 for(i=0;i<3;i++) printf("%d ",a[i][2-i]);
A、1 5 9
B、1 4 7
C、3 5 7
D、3 6 9
2、以下程序执行后的输出结果是( )。 #include void main() { int i,j,s=0; int a[4][4]={1,2,3,4,0,2,4,6,3,6,9,12,3,2,1,0}; for(j=0;j<4;j++) { i=j; if(i>2) i=3-j; s+=a[i][j]; } printf("%d\n",s); }
A、12
B、11
C、18
D、16
3、设有定义语句int a[2][4];则以下叙述不正确的是( )。
A、a数组可以看成是由a[0]、a[1]两个元素组成的一维数组
B、a[0]代表一个地址常量
C、元素a[0]是由4个整型元素组成的一维数组
D、可以用a[0]=5;的形式给数组元素赋值
4、假设a、b均为字符数组,则以下正确的输入语句是( )。
A、gets(a,b);
B、scanf("%s %s",a,b);
C、scanf("%s %s",&a,&b);
D、gets("a");gets("b");
5、下列描述正确的是( )。
A、两个字符串所包含的字符个数相同时,才能比较字符串
B、字符个数多的字符串比字符个数少的字符串大
C、字符串"That"小于字符串"The"
D、字符串 "STOP " 与 "STOP" 相等
6、以下能对二维数组a进行正确初始化的是( )。
A、int a[][3]={{1,2,3},{4,5,6}};
B、int a[2][4]={1,2,3},{{4,5},{6}};
C、int a[2][]={{1,0,1},{5,2,3}};
D、int a[][3]={{1,0,1},{},{1,1}};
7、以下合法的数组定义是( )。
A、int a[]="Language";
B、int a[5]={0,1,2,3,4,5};
C、char a="C Program";
D、char a[]="C Program Language.";
8、在C语言中引用数组元素时,其数组下标的数据类型允许是( )。
A、整型常量
B、整型表达式
C、整型常量或整型表达式
D、任何类型的表达式
9、以下程序的输出结果是( )。 #include #include void main() { char str[10]="Ch\nina"; printf("%d",strlen(str)); }
A、5
B、6
C、7
D、10
10、已知int a[3][2]={3,2,1};则表达式“a[0][0]/a[0][1]/a[1][0]”的值是( )。
A、0
B、1
C、0.16667
D、错误的表达式
11、下列说法错误的是( )。
A、C语言中的二维数组在内存中是按列优先存储的。
B、C语言中数组的下标都是从0开始的。
C、C语言中不带下标的数组名代表数组的首地址。
D、C语言中,静态数组的大小不能使用变量进行定义。
12、若int A[5]={1,2,3};则A[2]的值是( )。
A、1
B、2
C、3
D、0
13、判断字符串S1是否大于字符串S2,应当使用( )。
A、if(S1>S2)
B、if(strcmp(S1,S2))
C、if(strcmp(S1,S2)>0)
D、if(strcmp(S2,S1)>0)
14、调用strlen("abcd\0ed\0g")的返回值为4。
15、当接受用户输入的含空格的字符串时,应使用getc函数。
16、数组名实际是该数组首元素的起始地址。
17、一个字符数组就是一个字符串。
18、指向数组元素的指针只能指向数组的首元素。
19、在C语言中,只有一维数组和二维数组( )。
20、int A[]={1,2,3,4};这种赋值方式是错误的。
第5章编程题目
1、最大值
2、数组排序。
第6章 函数和模块设计
第1讲 函数概念、定义及调用随堂测验
1、一个C源程序可以由多个函数组成。
第2讲 函数参数传递随堂测验
1、当被调函数需要使用主调函数中的数据时,可以将主调函数中的这些数据作为参数传递给被调函数。
第3讲 函数嵌套调用随堂测验
1、C语言中,函数允许嵌套调用但是不允许嵌套定义。
第4讲 函数递归调用随堂测验
1、函数的递归调用比非递归实现系统代价要大。
第5讲 变量的作用域随堂测验
1、全局变量如果未初始化,系统会自动赋初值为0
第6章单元测验
1、以下说法正确的是( )。
A、实参和与其对应的形参各占用独立的存储单元
B、实参和与其对应的形参共享一个存储单元
C、只有当形参和与其对用的实参同名时才共享存储单元
D、形参是虚拟的,不占用存储单元
2、C语言中,函数的数据类型是指( )。
A、函数返回值的数据类型
B、函数形参的数据类型
C、调用该函数时的实参的数据类型
D、任意指定的数据类型
3、以下叙述正确的是( )。
A、全局变量的作用域一定比局部变量的作用域范围大
B、静态类型变量的生存期贯穿于整个程序的运行期间
C、函数的形参都属于全局变量
D、未在定义语句中赋值的auto变量和static变量的初值都是随机值
4、以下说法不正确的是( )。
A、在不同的函数中可以有相同名字的变量
B、在一个函数内定义的变量只能在本函数内有效
C、函数的形式参数是局部变量
D、在一个函数内的复合语句中定义的变量在本函数内有效
5、下列程序的输出结果是( )。 #include void f(int x,int y,int z) { z=x+y; } void main() { int a; f(5,6,a); printf("%d\n",a); }
A、1
B、11
C、12
D、不确定的值
6、以下程序的输出结果是( )。 #include int func(int a,int b) { return(a+b); } void main() { int x=6,y=7,z=8,r; r=func(func(x,y),z--); printf("%d\n",r); }
A、15
B、20
C、21
D、31
7、以下程序的输出结果是( )。 #include double f(int n) { int i; double s=0; for(i=1;i<=n;i++) s+=1/i; return s; } void main() { int i,m=3; float a=0.0; for(i=0;i<=m;i++) a=a+f(i); printf("%f\n",a); }
A、5.5000000
B、3.000000
C、4.000000
D、8.25
8、以下程序的输出结果是( )。 #include int f(int a) { int b=0; static int c=3; a=c++,b++; return a; } void main() { int a,i,t; a=3; for(i=0;i<3;i++) t=f(a++); printf("%d\n",t); }
A、3
B、4
C、5
D、6
9、以下程序的执行结果是( )。 #include long ff(int n) { if (n>3) return (ff(n-1)+ff(n-2)); else return(3); } void main() { printf("%d\n",ff(4)); }
A、5
B、6
C、7
D、8
10、以下程序的执行结果是( )。 #include int k=1; void fun(int m) { m+=k; k+=m; { char k='B'; printf("%d,",k-'A'); } printf("%d,%d",m,k); } void main() { int i=4; fun(i); printf("%d,%d",i,k); }
A、1,5,64,6
B、2,5,64,6
C、1,6,64,6
D、1,5,63,6
11、下列函数调用语句中含有5个实参。 fun((a1,a2),(a3,a4,a5));
12、为提高程序的运行速度,在函数中对于自动变量和形参可用register型的变量。
13、凡在函数中未指定存储类别的变量,其隐含的存储类别是void类型。
14、C语言中的函数可以嵌套调用,但不可以嵌套定义。
15、若调用一个函数,且此函数中没有return语句,则该函数没有返回值 。
第7章 指针基础
第1讲 指针基础(上)随堂测验
1、指针实质就是地址。
第2讲 指针基础(下)随堂测验
1、指针提供了间接访问变量的作用。
第3讲 指针与数组随堂测验
1、数组名是该数组首元素的起始地址,是一个地址常量。
第7章 单元测验
1、以下程序的运行结果是( )。 #include void main() { int k=1,j=2,*p,*q,*t; p=&k; q=&j; t=p; p=q; q=t; printf("%d,%d",*p,*q); }
A、2,1
B、1,2
C、1,1
D、2,2
2、关于指针变量,以下描述不正确的是( )。
A、在没有对指针变量赋值时,指针变量的值是不确定的
B、基类型相同的指针变量可以进行相减运算
C、在使用没有赋值的指针变量时,不会出现问题
D、可以通过指针变量来取得它指向的变量值
3、下列关于指针说法正确的是 ( )。
A、指针是用来存储变量值的类型
B、指针类型只有一种
C、指针变量可以与整数进行相加或相减运算
D、指针变量的存储空间与其基类型有关
4、下列运算中,不属于指针变量p的常用运算的是( )。
A、p++
B、p*1
C、p--
D、p+2
5、下列选项中,()是取值运算符。
A、*
B、&
C、#
D、!
6、指针变量所占用的内存空间和其基类型无关。
7、指针变量用来存储某一个变量的地址。
8、指针变量和指针所指向的变量是一样的。
9、指针变量有间接访问另外一个变量的作用。
10、指针变量的基类型可以是任何一种基本数据类型。
c语言注释说明被计算机编译系统忽略 C语言程序设计(陈艳 --2)-中国大学mooc-题库零氪...