<
2、编写一个计算梯形面积的程序。要求梯形的上底、下底和高在定义变量时直接赋值。
3、编写一个计算一个学生三门课平均成绩的程序,要求学生成绩从键盘输入。
4、编写一个计算和估计地球重量的程序。地球的半径为6356.91千米,平均密度为每立方米5.52吨。要求地球半径从键盘输入,地球密度直接赋值。 地球体积的计算公式为:v=4πr3/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、输入直角三角形的两条直角边长,调用平方根库函数sqrt求斜边的长度。
2、输入直角坐标系中点P的坐标(x,y),若P点落在图中的阴影区域内,输出阴影部分面积,否则输出数据0。
3、任意输入3个数据,输出它们的平均值和最小的一个数。
4、将"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<
2、
3、某商场购物时,若所选商品价值x在下述范围内,则实付金额y按如下折扣支付: 用switch语句实现已知x求y
4、输入x,y,z三个数,按从小到大的次序显示。显示形式:××
5、编一模拟袖珍计算器的完整程序,运行结果见图。要求:输入两个操作数和一个操作符,根据操作符决定所做的运算。
提示:根据存放操作符的字符变量,利用switch语句实现。
6、
前三章综合
1、计算两间的坐标 输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离。 Input 输入数据由4个实数组成,分别表示x1,y1,x2,y2,数据之间用空格隔开。 Output 输出一行,结果保留两位小数。 Sample Input 1 0 0 0 1 Sample Output 1 1.00 Sample Input 2 0 1 1 0 Sample Output 2 1.41
2、成绩转换 输入一个百分制的成绩t,将其转换成对应的等级,具体转换规则如下: 90~100为A; 80~89为B; 70~79为C; 60~69为D; 0~59为E; Input 输入数据占一行,由一个整数组成。 Output 输出一行。如果输入数据不在0~100范围内,请输出一行:“Score is error!”。 Sample Input 1 56 Sample Output 1 E Sample Input 2 67 Sample Output 2 D Sample Input 3 100 Sample Output 3 A Sample Input 4 123 Sample Output 4 Score is error!
3、确定闰年 输入一个年份判断它是否是闰年 是的话输出yes 不是输出no
第4讲 循环结构
4.4 辅助控制语句随堂测验
1、while语句和do-while语句等价吗
第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、
要求计算到n=1000时为止。
6、
7、
第8讲 函数
第8讲单元测验
1、以下说法中正确的是________。
A、C/C++程序总是从源文件中第一个定义的函数开始执行
B、在C/C++程序中,函数的定义必须写在调用该函数的语句之前
C、C/C++程序总是从main()函数开始执行
D、C/C++程序中的main()函数必须放在程序的开始部分
2、在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递 方式是________。
A、地址传递
B、单向值传递
C、由实参传给形参,再由形参传回实参
D、传递方式由用户指定
3、若有以下调用语句,则正确的fun函数首部是_______________。 main() { ∶ ∶ int a;float x; ∶ ∶ fun(x,a); ∶ ∶ }
A、int fun(int m,float x)
B、void fun(float a,int x)
C、void fun(int m,float x[])
D、int fun(int x,float a)
4、若有以下函数调用语句:fun(a+b,(x,y),fun(n+k,d,(a,b)));在此函数调用语句中实参的个数是__________。
A、3
B、4
C、5
D、6
5、若程序中定义函数 float myadd(float a, float b) { return a+b;} 并将其放在调用语句之后,则在调用之前应对该函数进行说明。以下说明中错误的是____________。
A、float myadd( float a,b);
B、float myadd(float b, float a);
C、float myadd(float, float);
D、float myadd(float a, float b);
6、下面函数的功能是______________________。 sss(s,t) char s[ ],t[ ]; { int i=0; while( t[i]) { s[i]=t[i]; i++ ; } s[i]= '\0'; }
A、求字符串的长度
B、比较两个字符串的大小
C、将字符串s复制到字符串t中
D、将字符串t复制到字符串s中
7、下面程序的输出结果是________________。 int func(int a,int b) { return(a+b); } main() { int x=2,y=5,z=9,r; r=func((x-y),z); cout< < A、10
B、12
C、6
D、16
8、对以下程序,正确的说法是________。 #include "iostream" using namespace std; int sub (char x,char y) { int z; z=x%y; return z; } int main( ) { int g=5,h=3,k; k=sub(g,h); cout< < A、实参与其对应的形参类型不一致,程序不能运行
B、被调函数缺少数据类型说明,程序不能运行
C、主函数中缺少对被调函数的说明语句,程序不能运行
D、程序中没有错误,可以正常运行
9、C/C++程序中的函数,既可以嵌套定义,也可以嵌套调用。
10、函数调用时,实参将数据传递给形参后,立即释放原先占用的存储单元
11、定义一个void型函数意味着调用该函数时,函数没有返回值
12、数组作为函数的参数时,系统为形参数组和实参数组分配不同的存储单元。
13、C/C++程序中,若函数的定义写在调用函数的语句之后,需要在调用前对函数进行说明。
14、.以下函数的功能是:求x的y次方,程序中划线处应填入________ #include "iostream" using namespace std; void fun(double x,int y,double *z) {int i; for(i=1,*z=x;i
15、以下程序可计算10名学生1门课成绩的平均分。划线处应填入______。 #include "iostream" using namespace std; void average(float array[],int n) { int i=1; while(i >score[i]; ____________; cout<
16、以下函数my_cmp( )的功能是比较字符串s和t的大小,当s等于t时返回0,否则返回s和t的第一个不同字符的ASCII码差值,即s>t时返回正值,s
单元作业8
1、编一判断m是否为素数的函数,并在主函数中利用它输出十对最小的孪生素数。所谓孪生素数是指两个相差为2的素数,如3和5,11和13。程序运行结果见下图。 函数形式为: bool isprime(int m)
2、编一函数,功能为构造正整数x的逆序数。再编一主函数,输出10个大于10000的最小的回文数。回文数是指顺读和倒读都相同的数,如5、151、3553等。 函数形式为:int reverse (int x) 调用算法库函数0分
3、编写函数,判断子串sub是不是字符串s的子串,若是,返回s中第一次出现sub的位置,否则,返回-1。函数形式为: int subindex(char *s, char *sub); 或者 int subindex(string s, string sub); 不要使用string类中的查找函数 互评时为了避免部分同学看不懂,ACM的同学请不要使用KMP算法
4、编一函数,功能为判断一字符串是否为回文,如果是回文则返回1,否则返回0。回文是指顺读和倒读都一样的字符串,如“deed”和“level”是回文。在主函数中对输入的字符串加以调用。 函数形式为:int huiwen(char s[]) 或者int huiwen(string s) 调用算法库函数0分
5、函数的功能是将学生成绩从高分到低分排序,并统计优秀与不及格的人数。用下面两种方法实现: (1)函数形式为:int fun1(int s[],int n,int *x) 要求优秀人数通过return返回,不及格人数通过指针参数返回结果。 (2)函数形式为:void fun2(int s[],int n,int &x,int &y) 要求优秀与不及格的人数通过引用参数返回结果。 分别编二个函数,学生人数从键盘输入。 排序请在函数内注释使用什么排序算法,比如说冒泡排序,选择排序等等 不能使用算法库排序函数
6、编一函数,功能为统计字符串中各个字母(不区分大、小写)出现的频率,同时找出频率出现最高的字母及次数。函数形式为: void freq(char s[],int p[],char &chmax,int &_max) 或者void freq(string s,int p[],char &chmax,int &_max) s为字符串或字符数组 p数组为各个字母出现的次数 chmax为出现频率最高的字母 _max为出现评率最高的字母的出现次数 程序运行结果如下:
第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<