中国大学MOOC《计算机程序设计C++》第3周基础练习

第3周基础练习
基础练习供同学们自己练习,不计入课程成绩。但请注意截止时间。

依照学术诚信条款,我保证此作业是本人独立完成的。

温馨提示:

1.本次作业属于Online Judge题目,提交后由系统即时判分。

2.学生可以在作业截止时间之前不限次数提交答案,系统将取其中的最高分作为最终成绩。

1判断奇偶数(10分)
题目内容:

编写程序,输入正整数,判断是奇数还是偶数,是奇数显示“odd”,是偶数显示“even”,输入“1”显示“odd”。

输入:正整数

输出:“odd”或“even”

【提示】使用%运算符,除2的余数为0就是偶数。if…else…判断。

样例1输入:

3

样例1输出:

odd

样例2输入:

4

样例2输出:

even

时间限制:500ms内存限制:32000kb
C++

#include
using namespace std;
int main(){
int a;
cin>>a;
a%2?cout<<"odd"<<endl:cout<<"even"<<endl;
return 0;
}

用例测试结果 运行时间 占用内存 提示 得分
用例1通过 2ms 256kb
2
用例2通过 9ms 256kb
2
用例3通过 2ms 356kb
2
用例4通过 2ms 368kb
2
用例5通过 2ms 364kb
1
用例6通过 14ms 256kb
1
提交答案本次得分/总分:10.00/10.00分
2判断数的类型(10分)
题目内容:

编写程序,输入实数,判断输入的数据是正实数、负实数、正整数、负整数、还是零,分别显示“positive real”, “negative real”, “positive integer”, “negative integer”, “zero”,注意,两个单词的中间有一个空格。

输入:实数

输出:给定的单词或词组之一。

【提示】若int(a)==a结果为true,则可判断为整数。

样例1输入:

10.00

样例1输出:

positive integer

样例2输入:

-10.1

样例2输出:

negative real

时间限制:500ms内存限制:32000kb
C++

#include
using namespace std;
int main(){
	double a,esp=1e-7;
	cin>>a;
	if(a-int(a)>0)cout<<"positive real"<<endl;
	if(a-int(a)<0)cout<<"negative real"<<endl;
	if(!(a-0))cout<<"zero"<<endl;
	if(a>0&&!(a-int(a)))cout<<"positive integer"<<endl;
	if(a<0&&!(a-int(a)))cout<<"negative integer"<<endl;
	return 0;
}

用例测试结果 运行时间 占用内存 提示 得分
用例1通过 2ms 256kb
2
用例2通过 2ms 376kb
2
用例3通过 2ms 364kb
2
用例4通过 2ms 256kb
2
用例5通过 2ms 368kb
2
提交答案本次得分/总分:10.00/10.00分
3判断点的象限(10分)
题目内容:

编写程序,输入平面直角坐标的x,y值,判断点在哪个象限。不考虑在坐标轴上的情况。分别输出1、2、3或4。

输入:两个实数,用空格隔开

输出:1、2、3或4之一,分别表示第1、2、3、4象限。

样例1输入:

1 1

样例1输出:

1

样例2输入:

3 -4

样例2输出:

4

时间限制:500ms内存限制:32000kb
C++

#include
using namespace std;
int main(){
	double  x,y;
	cin>>x>>y;
	if(x>0&&y>0)cout<<1<<endl;
	if(x>0&&y<0)cout<<4<<endl;
	if(x<0&&y>0)cout<<2<<endl;
	if(x<0&&y<0)cout<<3<<endl;
	return 0;
}

用例测试结果 运行时间 占用内存 提示 得分
用例1通过 3ms 256kb
3
用例2通过 22ms 236kb
3
用例3通过 2ms 224kb
2
用例4通过 2ms 364kb
2
提交答案本次得分/总分:10.00/10.00分
4判断字符类型(10分)
题目内容:

编写程序,输入一个字符,判断其是数字、大写字母、小写字母还是其他,分别显示0,1,2或-1。

输入:一个ASCII字符

输出:数字-1,0,1或2

样例1输入:

3

样例1输出:

0

样例2输入:

样例2输出:

-1

样例3输入:

A

样例3输出:

1

【提示】可以直接比较字符,如c>=‘0’。

时间限制:500ms内存限制:32000kb
C++

#include
using namespace std;
int main(){
	char x;
	cin>>x;
	if(x>='0'&&x<='9')cout<<0<<endl;
	else if(x>='A'&&x<='Z')cout<<1<<endl;
	else if(x>='a'&&x<='z')cout<<2<<endl;
	else cout<<-1<<endl;
	return 0;
}

用例测试结果 运行时间 占用内存 提示 得分
用例1通过 2ms 256kb
1
用例2通过 2ms 256kb
1
用例3通过 2ms 376kb
1
用例4通过 2ms 368kb
1
用例5通过 2ms 256kb
1
用例6通过 14ms 256kb
1
用例7通过 2ms 256kb
1
用例8通过 2ms 368kb
1
用例9通过 2ms 256kb
1
用例10通过 2ms 364kb
1
提交答案本次得分/总分:10.00/10.00分
5百分制成绩转五分制成绩(10分)
题目内容:

编写程序,输入百分制的分数(非负整数),将其转换为5分制成绩,成绩对应关系如下:

90-100: 5

80-89: 4

70-79: 3

60-69: 2

10-59: 1

0-9: 0

输入:非负整数

输出:[0,5]之间的整数

样例1输入:

80

样例1输出:

4

注意:请自己分别使用if…else if…else…和switch实现。

时间限制:500ms内存限制:32000kb
C++

#include
using namespace std;
int main(){
	int  x;
	cin>>x;
	if(x>89)cout<<5<<endl;
	if(x>79&&x<90)cout<<4<<endl;
	if(x>69&&x<80)cout<<3<<endl;
	if(x>59&&x<70)cout<<2<<endl;
	if(x>9&&x<60)cout<<1<<endl;
	if(x<10)cout<<0<<endl;
	return 0;
}

用例测试结果 运行时间 占用内存 提示 得分
用例1通过 2ms 248kb
1
用例2通过 2ms 244kb
1
用例3通过 2ms 360kb
1
用例4通过 2ms 256kb
1
用例5通过 13ms 244kb
1
用例6通过 2ms 256kb
1
用例7通过 2ms 372kb
1
用例8通过 2ms 376kb
1
用例9通过 2ms 252kb
1
用例10通过 1ms 372kb
1
提交答案本次得分/总分:10.00/10.00分
6显示n个字符(10分)
题目内容:

编写程序,输如正整数n和字符c,在一行输出n个字符c。如输入:10 #,显示

##########

输入:一个正整数n和一个字符c,用空格隔开

输出:一行,n个字符c

样例1输入:

10 #

样例1输出:

##########

时间限制:500ms内存限制:32000kb
C++

#include
using namespace std;
int main(){
	int x;char y;
	cin>>x>>y;
	while(x--)cout<<y;
	cout<<endl;
	return 0;
}

用例测试结果 运行时间 占用内存 提示 得分
用例1通过 2ms 356kb
4
用例2通过 2ms 256kb
3
用例3通过 2ms 360kb
3
提交答案本次得分/总分:10.00/10.00分
7显示字符组成的矩形(10分)
题目内容:

编写程序,输入行数n、列数m和一个字符c,显示由字符c组成的n行m的矩形。

如输入:5 10 #,输出:

##########

##########

##########

##########

##########

输入:两个正整数和一个字符,用空格隔开

输出:由字符c组成的矩形

样例1输入:

5 10 #

样例1输出:

##########

##########

##########

##########

##########

时间限制:500ms内存限制:32000kb
C++

#include
using namespace std;
int main(){
	int x,z;char y;
	cin>>x>>z>>y;
	while(x--){
		int i=z;
		while(i--)cout<<y;
	cout<<endl;
	}
	return 0;
}

用例测试结果 运行时间 占用内存 提示 得分
用例1通过 2ms 368kb
2
用例2通过 14ms 372kb
2
用例3通过 2ms 368kb
2
用例4通过 2ms 368kb
2
用例5通过 14ms 376kb
2
提交答案本次得分/总分:10.00/10.00分
8用循环计算1+2+3+…+n(10分)
题目内容:

编写程序,输入非负整数n,计算s=1+2+3+…+n的值。要求使用循环,而不是使用公式。

输入:非负整数n

输出:和

注意,请自己分别使用for和while实现。

样例1输入:

10

样例1输出:

55

时间限制:500ms内存限制:32000kb
C++

#include
using namespace std;
int main(){
	int x,sum;
	cin>>x;
	sum=x;
	while(x--)sum+=x;	
	cout<<sum;
	cout<<endl;	
	return 0;
}

用例测试结果 运行时间 占用内存 提示 得分
用例1通过 2ms 220kb
3
用例2通过 2ms 348kb
3
用例3通过 2ms 220kb
2
用例4通过 2ms 376kb
2
提交答案本次得分/总分:10.00/10.00分
9计算1+1/2+1/3+…+1/n(10分)
题目内容:

编写程序,输入非负整数n,计算s=1+1/2+1/3+…+1/n的值。输入0时,输出0。

输入:非负整数n

输出:级数的前n项和。

【提示】1/n应写成1.0/n。和应为double型。请自己分别使用for和while实现。

样例1输入:

3

样例1输出:

1.83333

时间限制:500ms内存限制:32000kb
C++

#include
using namespace std;
int main(){
	int x;
	cin>>x;
	double sum=0;
	for(;x>0;x--)sum+=1.0/x;
	cout<<sum<<endl;	
	return 0;
}

用例测试结果 运行时间 占用内存 提示 得分
用例1通过 1ms 248kb
3
用例2通过 2ms 248kb
3
用例3通过 2ms 252kb
4
提交答案本次得分/总分:10.00/10.00分
10计算n!(10分)
题目内容:

编写程序,输入非负整数n,计算n!。0!=1。

输入:非负整数n

输出:n!

【提示】阶乘的初始值应设为1。请自己分别使用for和while循环实现。

样例1输入:

6

样例1输出:

720

时间限制:500ms内存限制:32000kb
C++

#include
using namespace std;
int main(){
	int fac=1,x;
	cin>>x;
	for(;x>0;--x)fac*=x;
	cout<<fac<<endl;	
	return 0;
}

用例测试结果 运行时间 占用内存 提示 得分
用例1通过 2ms 256kb
2
用例2通过 2ms 360kb
2
用例3通过 3ms 256kb
2
用例4通过 2ms 256kb
2
用例5通过 2ms 360kb
2
提交答案本次得分/总分:10.00/10.00分
11交替输出1和-1(10分)
题目内容:

编写程序,输入正整数n,从1开始交替输出n个1和-1。如输入3,输出 1 -1 1;

输入4,输出 1 -1 1 -1,数据间用一个空格隔开。

输入:一个正整数n。

输出:1,-1交替组成的序列,用空格隔开,末尾无空格。

【提示】 (1)k=1;将k=-k放在循环体中产生交替序列。

(2)末尾无空格的实现方法:

i=0;

cout<

i++;

while(i

{

cout<<" "<

i++;

}

cout<

样例1输入:

3

样例1输出:

1 -1 1

样例2输入:

4

样例2输出:

1 -1 1 -1

时间限制:500ms内存限制:32000kb
C++

#include 
using namespace std;
int main(){
	int x,i=1;
	cin>>x;
	cout<<i;
	while(--x){
		i=0-i;
		cout<<" "<<i;
	}
	cout<<endl;
	return 0;
}

用例测试结果 运行时间 占用内存 提示 得分
用例1通过 3ms 360kb
3
用例2通过 2ms 256kb
3
用例3通过 14ms 364kb
2
用例4通过 2ms 360kb
2
提交答案本次得分/总分:10.00/10.00分
12判断整数的位数(10分)
题目内容:

编写程序,输入非负整数,判断整数的位数。如输入:12,输出:2

输入:一个非负整数

输出:整数的位数

【提示】

样例1输入:

12

样例1输出:

2

样例2输入:

1234

样例2输出:

4

时间限制:500ms内存限制:32000kb
C++

#include 
using namespace std;
int main(){
	char x[15];
	cin>>x;
	int i=0;
	while(x[++i]);
	cout<<i<<endl;
	return 0;
} 

用例测试结果 运行时间 占用内存 提示 得分
用例1通过 2ms 372kb
1
用例2通过 2ms 240kb
1
用例3通过 2ms 256kb
1
用例4通过 17ms 368kb
1
用例5通过 2ms 376kb
1
用例6通过 1ms 376kb
1
用例7通过 2ms 256kb
1
用例8通过 2ms 256kb
1
用例9通过 2ms 256kb
1
用例10通过 2ms 244kb
1
提交答案本次得分/总分:10.00/10.00分
13求非负整数的各位数字的和(10分)
题目内容:

编写程序,输入非负整数,输出其各位数字的和,如输入:1234,输出10.

输入:一个非负整数

输出:整数

【提示】

样例1输入:

1234

样例1输出:

10

时间限制:500ms内存限制:32000kb
C++

#include 
using namespace std;
int main(){
	char x[15];
	int i=0;
	int sum=0;
	cin>>x;
	while(x[i])sum+=x[i++]-'0';
	cout<<sum<<endl;
	return 0;
} 

用例测试结果 运行时间 占用内存 提示 得分
用例1通过 2ms 364kb
1
用例2通过 3ms 256kb
1
用例3通过 2ms 368kb
1
用例4通过 2ms 256kb
1
用例5通过 2ms 364kb
1
用例6通过 2ms 256kb
1
用例7通过 2ms 368kb
1
用例8通过 2ms 368kb
1
用例9通过 2ms 256kb
1
用例10通过 2ms 368kb
1
提交答案本次得分/总分:10.00/10.00分
14九九乘法表(10分)
题目内容:

编写程序,显示如下的n行的九九乘法表。如输入5,,显示的乘法表如下:

1*1=1

21=2 22=4

31=3 32=6 3*3=9

41=4 42=8 43=12 44=16

51=5 52=10 53=15 54=20 5*5=25

输入:[1,9]之间的整数n

输出:n行的乘法表,一行的各项间用一个空格隔开。

【提示】

样例1输入:

5

样例1输出:

1*1=1

21=2 22=4

31=3 32=6 3*3=9

41=4 42=8 43=12 44=16

51=5 52=10 53=15 54=20 5*5=25

时间限制:500ms内存限制:32000kb
C++

#include 
using namespace std;
int main(){
	int n;
	cin>>n;
	if(n>9)n=9;
	if(n<0)n=0;
	for(int i=1;i<=n;++i){
		for(int j=1;j<=i;++j){
			cout<<i<<"*"<<j<<"="<<j*i;
			if(j!=i)cout<<" ";
			else cout<<endl;
		}
	}
	return 0;
} 

用例测试结果 运行时间 占用内存 提示 得分
用例1通过 2ms 368kb
3
用例2通过 2ms 372kb
3
用例3通过 2ms 256kb
4
提交答案本次得分/总分:10.00/10.00分
15不一样的九九乘法表(10分)
题目内容:

编写程序,显示如下的n行的九九乘法表。如输入5,,显示的乘法表如下:

51=5 52=10 53=15 54=20 5*5=25

41=4 42=8 43=12 44=16

31=3 32=6 3*3=9

21=2 22=4

1*1=1

输入:[1,9]之间的整数n

输出:n行的乘法表,一行的各项间用一个空格隔开。

样例1输入:

5

样例1输出:

51=5 52=10 53=15 54=20 5*5=25

41=4 42=8 43=12 44=16

31=3 32=6 3*3=9

21=2 22=4

1*1=1

时间限制:500ms内存限制:32000kb
C++

#include 
using namespace std;
int main(){
	int n;
	cin>>n;
	if(n>9)n=9;
	if(n<0)n=0;
	for(int i=n;i>0;--i){
		for(int j=1;j<=i;++j){
			cout<<i<<"*"<<j<<"="<<j*i;
			if(j!=i)cout<<" ";
			else cout<<endl;
		}
	}
	return 0;
} 

用例测试结果 运行时间 占用内存 提示 得分
用例1通过 2ms 244kb
2
用例2通过 2ms 256kb
2
用例3通过 2ms 244kb
3
用例4通过 2ms 244kb
3
提交答案本次得分/总分:10.00/10.00分
16Fibonacci序列(10分)
题目内容:

编写程序,显示Fibonaci序列的前n项(从0开始)。

F(0)=0

F(1)=1

F(n)=F(n-1)+F(n-2)

输入:非负整数n

输出:n+1个整数,数据间有一个空格,末尾无空格。

【提示】

样例1输入:

10

样例1输出:

0 1 1 2 3 5 8 13 21 34 55

时间限制:500ms内存限制:32000kb
C++

#include 
using namespace std;
int main(){
	int n,fib[999]={0,1};
	cin>>n;
	for(int i=0;i<=n;++i){
		fib[i+2]=fib[i]+fib[i+1];
		if(i!=n)cout<<fib[i]<<" ";
		else cout<<fib[i]<<endl;
	}
	return 0;
} 

用例测试结果 运行时间 占用内存 提示 得分
用例1通过 2ms 372kb
2
用例2通过 2ms 372kb
2
用例3通过 2ms 256kb
2
用例4通过 2ms 368kb
2
用例5通过 2ms 256kb
2
提交答案本次得分/总分:10.00/10.00分

你可能感兴趣的:(C++学习笔记)