第1讲 C/C++程序设计入门
第1讲单元测验
1、以下________是C/C++合法的标识符。
A、char2
B、@x
C、int
D、7Bw
2、下面的程序,对于输入:2 9 15,输出的结果是________。 #include "iostream" using namespace std; int main() { int a; int b; cout<>a>>b; cout<
A、输入的数据超过要求的数据,程序运行出现错误
B、11
C、26
D、24
3、在VS C++中,要在原有程序中修改程序代码应打开扩展名为________的文件。
A、obj
B、sln
C、exe
D、cpp
4、有关C语言和C++语言以下正确的说法是________。
A、C语言和C++语言都是结构化程序设计语言
B、C语言和C++语言都是面向对象的程序设计语言
C、C语言是结构化语言,C++语言是面向对象的语言
D、C++语言是结构化语言,C语言是面向对象的语言
5、程序设计语言的发展通常被划分为三个阶段,其中不包括________。
A、高级语言
B、汇编语言
C、机器语言
D、数据库语言
6、通过cin语句为多个变量输入数据时,不能用______分隔多个数据。
A、空格
B、回车
C、制表符
D、逗号
7、C和C++语言中不区分大小写字母。
8、C语言最初是为开发UNIX系统而编写设计的。
9、在C和C++语言中,注释语句是可执行语句。
10、C和C++语言(C++11之前的标准)中,用户自定义的标识符中不能包含汉字。
11、C和C++语言源程序中如果存在语法错误,程序仍可以运行,但结果不正确。
12、cin后的提取运算符“>>”之后只能跟变量。
13、C++源程序的扩展名为________。
14、在C语言中,无论一个程序中有多少个函数,总是从_______函数开始执行。
15、C和C++语言中,________是语句结束的标志。
实验1 C/C++概述
1、以下程序的功能是借助一个变量交换两个已知数据的值,程序中存在一些错误,修改这些错误并调试程序。 #include "iostream" using namespace std; int main( ) { int x,y; t=x; x=y; t=y; cin>>x>>y>>endl; cout<
2、编写一个计算梯形面积的程序。要求梯形的上底、下底和高在定义变量时直接赋值。
3、编写计算一个学生三门课平均成绩的程序,要求学生成绩从键盘输入。
第2讲 数据类型、运算符和表达式
第2讲单元测验
1、下列不是C语言基本数据类型的是 ( )。
A、字符型
B、整型
C、浮点型
D、结构体
2、若有x=1,y=2,z=3,则表达式(x
A、1
B、2
C、3
D、0
3、已知x,y为整型,z为实型,ch为字符型,下列表达式合法的是( )。
A、z=(y+x)++
B、x+y=z
C、y=ch+x
D、y=z%x
4、设整型变量a为5,使b不为2的表达式是( )。
A、b = a/2
B、b = 6-(--a)
C、b=a%2
D、b=a>3?2:1
5、下列语句不具有赋值功能的是( )
A、a*=b
B、x=1
C、a+b
D、a++
6、在C语言中,要求参加运算的数必须是整数的运算符是( )。
A、/
B、*
C、%
D、=
7、执行 x=(6*7%8+9)/5; 后,x的值为( )
A、1
B、2
C、3
D、4
8、以下能正确定义整型变量a、b、c并为其赋初值5的语句是( )
A、int a=b=c=5;
B、int a,b, c=5;
C、int a=5,b=5,c=5;
D、a=b=c=5;
9、在C语言中,所有算术运算符的优先级都相同。
10、'b'和"b"是不同的两种常量。
11、一般情况下,目数越多,优先级越高。
12、表达式 a*b>0 可以表示“a和b同时为正或同时为负”
13、若已定义x和y为double类型,且x=1;则表达式y=x+3/2的值是( )。
14、表达式10!=9 的值是( )。
15、若已定义int x=1,y=1; 则表达式x--&&y--的值是( )
16、字符串常量"123"在内存中的字节数是( )。
17、已有定义int x=3 ; 则表达式x=x+1.78的值是( )
18、当a=3,b=2,c=1时,表达式f=a>b>c的值是( )
实验2 顺序结构
1、输入直角坐标系中点P的坐标(x,y),若P点落在图中的阴影区域内,输出阴影部分面积,否则输出数据0。
2、任意输入3个整数数据,输出它们中最小的一个数。
3、将"fly"译成密码"iob"。编码规律:将字母a变成字母d,即变成其后的第3个字母,x变成a,y变成b, z变成c。
第3讲 选择结构
第3讲 单元测验
1、若给定条件表达式(M)?(a++):(a--),则其中表达式M( )。
A、和(M==0)等价
B、和(M==1)等价
C、和(M!=0)等价
D、和(M!=1)等价
2、C语言中用于结构化程序设计的3种基本结构是( )
A、顺序结构、选择结构、循环结构
B、if,switch,break
C、for,while,do-while
D、if,for,continue
3、假设有定义 int x=1,y=0,a=0,b=0; 则执行以下程序段后,a、b的值为( )。 switch(x) { case 1: switch(y) { case 0:a++;break; case 1:b++;break; } //注意后面没有break case 2: a++;b++;break; case 3: a++;b++; }
A、a=l,b=0
B、a=2,b=1
C、a=1,b=l
D、a=2,b=2
4、假设有定义 int i=0,j=0,a=6;则执行以下语句后,各变量的值依次为( ) if((++i>0)||(++j>0))a++;
A、i=0,j=0,a=6
B、i=l;j=1;a=7
C、i=1,j=0,a=7
D、i=0;j=1,a=7
5、关于switch语句描述正确的是( )。
A、switch语句中default子句可能没有,也可能有一个
B、switch语句的每个语句序列中必须有break语句
C、switch语句中的case后面可以是一个关系表达式
D、switch语句中switch后面的表达式可以是实型
6、已知int x=10,y=20,z=30;以下语句执行后x,y,z的值是( )。 if(x>y) z=x; x=y; 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
7、以下if语句语法正确的是( )。
A、if(x>0) cout<
B、if(x>0) { x=x+y; cout<
C、if(x>0) { x=x+y; cout<
D、if(x>0) { x=x+y; cout<
8、当a=1,b=2,c=4,d=3时,执行完下面一段程序后x的值是( )。 if(a
A、1
B、2
C、3
D、4
9、一个switch语句必须包含一个default语句。( )
10、在C程序中,if语句中不能嵌套switch语句。 ( )
11、空语句是合法的C语句。
12、C语言中规定,if语句的嵌套结构中,else总是无条件地和最近的if配对。
13、C语言中规定,if表达式后面的语句可以是复合语句。
14、假设有定义int a=2,b=-1,c=2; 则执行以下程序段后c的值为( )。 if(a
15、假设有定义int m=5; 则执行以下程序段的输出结果是( ) if(m++>5) cout<
16、假设有定义int year,flag; ,其中year代表年份,flag代表是否为闰年的判断,取1代表闰年,取0代表非闰年,则以下关于闰年判断程序段中的空白处应为( ) if(year%400==0) flag=1; else if(____________________) flag=1; else flag=0;
实验3 选择控制结构
1、以下程序的功能是求两个非0整数相除的商和余数。程序有几处错误,试找出它们加以修改,并上机验证修改结果。 #include "iostream" using namespace std; int main() {int x,y,r1,r2; cin>>x>>y; if(x=0||y=0) cout<y) r1=x/y; r2=x%y; else r1=y/x; r2=y%x; } cout<
2、某商场购物时,若所选商品价值x在下述范围内,则实付金额y按如下折扣支付: 用switch语句实现已知x求y
3、编一模拟袖珍计算器的完整程序,运行结果见图。要求:输入两个操作数和一个操作符,根据操作符决定所做的运算。
提示:根据存放操作符的字符变量,利用switch语句实现。
第4讲 循环结构
第4讲 单元测验
1、若k为整型,以下while循环体中的语句执行( )。 k=2; while(k=0) { cout<
A、无限次
B、0次
C、1次
D、2次
2、假设有定义 int i,j,k=0,m=0;则执行以下程序段后k和m的值分别为( ) for(i=0;i<2;i++) { for(j=0;j<3;j++) k++; k-=j; } m=i+j;
A、k=0,m=3
B、k=0,m=5
C、k=l,m=3
D、k=l,m=5
3、下列关于break语句描述错误的是( )。
A、break语句可用于循环体内,它将退出该重循环
B、break语句可用于switch语句中,它将退出switch语句
C、break语句可用于if体内,它将退出if语句
D、break语句只能用于循环语句和switch语句中
4、若i,j已定义为int类型,则以下程序段中内循环体的总的执行次数是 for (i=5;i;i--) for (j=0;j<4;j++){...}
A、20
B、25
C、24
D、30
5、语句while(!e);中的条件 !e 等价于( )。
A、e==0
B、e!=1
C、e!=0
D、~e
6、以下程序段( )。 int x=-1; do { x=x*x; } while (!x);
A、是死循环
B、循环执行二次
C、循环执行一次
D、有语法错误
7、下面有关for循环的正确描述是( )。
A、for循环只能用于循环次数已经确定的情况
B、for循环是先执行循环体语句,后判定表达式
C、在for循环中,不能用break语句跳出循环体
D、for循环体语句中,可以包含多条语句,但要用花括号括起来
8、continue语句的作用是结束整个循环的执行
9、假设有定义 int i=100; 则以下循环是死循环。 while (1) { i=i%100+1; if (i>100) break; }
10、do-while的循环体至少无条件执行一次
11、do-while 的循环体不能是复合语句
12、只能在循环体内和switch语句体内使用break语句
13、假设有定义 int s=0,i=1; 则退出以下循环后i的值为( )。 while (s<=10) { s=s+i*i; i++; }
14、执行以下程序段后,i的值为( ) int i=1,s=3; do { s+=i++; if (s%7==0) continue; else ++i; } while (s<15);
15、假设有定义int n=0; 则退出以下循环后n的值为( )。 while(n++<3);
实验4 循环控制结构
1、以下程序求20以内的奇数和。程序有几处错误,试找出它们加以修改,并上机验证修改结果。#include "iostream" using namespace std; int main() { int n,sum; for(n=1; ;n+=2); sum=sum+n; if(n==20) break; cout<
2、编写程序将一个十进制整数按倒序形式输出。即若输入156,则输出651。
3、编一程序,显示出所有的水仙花数。所谓水仙花数,是指一个3位数,其各位数字立方和等于该数字本身。
4、
第5讲 一维数组
第5讲 单元测验
1、执行下面的程序段后,变量k中的值为( )。 int k=3, s[2]; s[0]=k; k=s[1]*10;
A、不定值
B、33
C、30
D、1
2、对以下说明语句的正确理解是( )。 int a[10]={6,7,8,9,10};
A、将5个初值依次赋给a[1]至a[5]
B、将5个初值依次赋给a[0]至a[4]
C、将5个初值依次赋给a[6]至a[10]
D、因为数组长度与初值的个数不相同,所以此语句不正确
3、假定int类型变量占用4个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是( )
A、3
B、12
C、10
D、40
4、以下定义语句中,错误的是( )。
A、int a[]={1,2};
B、int a[5]={1,2};
C、int n=2, a[n]={1,2};
D、int a[2]={1,2};
5、以下对一维数组a进行正确初始化的是( )。
A、int a[5]=(0,0,0,0,0);
B、int a[5]=1,2,3,4,5;
C、int a[5]={0};
D、int a[5]={1,2,3,4,5,6};
6、假设有定义int i,x[9]={9,8,7,6,5,4,3,2,1};则执行以下程序段后输出( )。 for(i=0;i<4;i+=2) cout<
A、5 2
B、5 1
C、5 3
D、9 7
7、如有定义语句int a[ ]={1,8,2,8,3,8,4,8,5,8}; , 则数组a的大小是( )。
A、10
B、11
C、不确定
D、有语法错误
8、有如下说明: int a[10]={0,1,2,3,4,5,6,7,8,9}; 则数值不为9的表达式是( )。
A、a[10-1]
B、a[8]
C、a[9]
D、a[9]-a[0]
9、使用数值型数组时,不可以一次引用整个数组,只能逐个引用元素。
10、数组的起始下标是从1开始的。
11、可以通过赋值运算符“=”给两个数组间整体赋值。
12、C语言中,数组名是一个常量,是数组首元素的内存地址,可以重新赋值。
13、C语言中,数组元素在内存中是顺序存放的,它们的地址是连续的。
14、在C语言中,引用数组元素时,其数组下标的数据类型是( )
15、假设有定义 int a[10]={1,3,5,7}; ,则7是元素( )的值。
16、数组名是一个地址( ),由系统自动为其分配,不能人为修改,代表了数组在内存中存放的首地址。(提示:填“常量”或“变量”)
第5讲 单元作业
1、随机产生10个30~100(包括30,100)的正整数,求它们的最大值、最小值、平均值,并显示整个数组的值和结果。
2、随机产生20个学生的计算机课程的成绩(0~100),按照从大到小的顺序排序,分别显示排序前和排序后的结果。
3、随机产生10个数,输入1~10之间的正整数m,使数组元素右移m位,移出的元素再从左移入。如,假设原来的数组元素依次为:1 2 3 4 5 6 7 8 9 10,假设m为2,则右移2位后的数组元素依次为:9 10 1 2 3 4 5 6 7 8
4、按由大到小的顺序输入10个int类型的数据将其存放在一个一维数组中,再输入一个整数到变量x,用二分法查找x是否是数组中的元素,若是,输出其在数组中的位置,否则输出不在数组中的提示。
第6讲 二维数组、字符数组
第6讲 单元测验
1、若有说明 int a[3][4];则a数组元素的非法引用是( )。
A、a[0][2*1]
B、a[4-2][0]
C、a[4-2][0]
D、a[0][4]
2、假设有定义:int k,a[3][3]={9,8,7,6,5,4,3,2,1};则下面语句的输出结果是 for(k=0;k<3;k++) cout<
A、753
B、951
C、963
D、741
3、已知:char a[15],b[15]={"I love china"};则能将字符串I love china赋给数组a的正确语句是( )
A、a="I love china";
B、strcpy(b,a);
C、a=b;
D、strcpy(a,b);
4、以下不正确的定义语句是( )。
A、double x[5]={2.0,4.0,6.0,8.0,10.0};
B、int y[5]={0,1,3,5,7,9};
C、char c1[ ]={′1′,′2′,′3′,′4′,′5′};
D、char c2[ ]={ "12345"};
5、以下能对二维数组c进行正确的初始化的语句是( )。
A、int c[3][ ]={{3},{3},{4}};
B、int c[ ][3]={{3},{3},{4}};
C、int c[3][2]={{3},{3},{4},{5}};
D、int c[ ][3]={{3},{0,1,1,2},{3}};
6、下述对C语言字符数组的描述中错误的是( )。
A、字符数组的下标从0开始
B、字符数组中的字符串可以进行整体输入/输出
C、可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值
D、字符数组可以存放字符串
7、有如下定义语句:int aa[ ][3]={12,23,34,4,5,6,78,89,45};,则45在数组aa中的行列坐标各为( )。
A、3,2
B、3,1
C、2,2
D、2,1
8、若有定义char a[ ]="toyou", b[ ]={′t′,′o′,′y′,′o′,′u′};则正确的描述是 ( )。
A、a数组和b数组的长度相同
B、a数组长度小于b数组长度
C、a数组长度大于b数组长度
D、a数组等价于b数组
9、如对数组的初始化为:int s[2][2]={1};,则数组s每个元素的值均为1
10、二维数组中元素存放顺序是:先存放第一行的元素,再存放第二行的元素,依次类推。
11、若有定义char str[20]="\tGood\t",则strlen(str)的值为7。
12、假设有定义char str1[20]="abcde",t[20];,则可以通过语句t=s;将字符串s的内容复制到字符串t。
13、若二维数组a有m列,则计算任一元素a[i][j]在数组中的序号为( )。 (假设a[0][0]的序号为0)
14、已知char a[20]= "abc",b[20]= "defghi";则执行cout<
15、设有数组定义 char array[]="China"; 则数组 array所占的空间为( )个字节。
第6讲 单元作业
1、输入一个小于10的正整数n,显示具有如下形式的n行杨辉三角形。图中n=6。
提示:解该题有两个关键: ① 形成满足杨辉三角形各项值的数组。首先定义二维数组a[10][10],杨辉三角形的形成特点是第1列(下标为0)和主对角线均为1,其余各项有如下关系: a[i][j]= a[i-1][j-1]+ a[i-1][j] i=2,3…,n-1 j=1,2…,i-1 ②在输出每一行元素前,利用如下语句确定每行的起始位: cout<
2、编写程序,将某一指定字符从一个已知的字符串中删除。假设已知字符串为“aaaasdfga”,将其中出现的'a'字母删除,删除后的字符串为“sdfg”。
3、编一个程序,输入一个字符串,将其倒序存放后输出。例如,假设原数组a的内容为“VISUAL C++PROGRAM”,倒序后数组a中的内容为“MAGORP++C LASUIV”。 要求:不能借助另外一个数组实现倒序存放。
第7讲 指针和数组
第7讲 单元测验
1、若已定义: int a[]={0,1,2,3,4,5,6,7,8,9},*p=a,i; 假设0≤i≤9,则对a数组元素不正确的引用是( )
A、a[p-a]
B、*(&a[i])
C、p[i]
D、a[10]
2、假设有定义 int a=3,b=5,*pa=&a,*pb=&b;则执行如下语句后,a,b的值分别为( ) *pa=a+b; *pb=a+b;
A、a=13,b=13
B、a=8,b=8
C、a=8,b=13
D、出错
3、有说明 int a[10]=[1,2,3,4,5,6,7,8,9,10},*p=a;,则数值为9的表达式是( )。
A、*(p+9)
B、*(p+8)
C、*p+=9
D、*p+=9
4、若有说明语句"int a[10],*p=a;",对数组元素的正确引用是( )
A、a[p]
B、p[a]
C、*(p+2)
D、p+2
5、下列各语句行中,能正确进行赋字符串操作的语句是( )
A、char s[5]={"ABCDE"};
B、char s[5]={'A' ,'B','C','D','E'};
C、char *s; s="ABCDE";
D、char *s; *s="ABCDE";
6、执行char a[10]={"abcd"},*p=a;后,*(p+4)的值是( )
A、"abcd"
B、'd'
C、'\0'
D、不能确定
7、若有char *a="ABCD";,则执行cout<