1.判断奇偶数(10分)
题目内容:
编写程序,输入正整数,判断是奇数还是偶数,是奇数显示“odd”,是偶数显示“even”,输入“1”显示“odd”。
输入:
正整数
输出:
“odd”或“even”
【提示】使用%运算符,除2的余数为0就是偶数。if…else…判断。
样例1输入:
3
样例1输出:
odd
样例2输入:
4
样例2输出:
even
时间限制:500ms内存限制:32000kb
#include <iostream>
using namespace std;
int main()
{
int x;
cin>>x;
if(x%2==0)
cout<<"even"<<endl;
else
cout<<"odd"<<endl;
return 0;
}
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
#include <iostream>
using namespace std;
int main()
{
double x;
cin>>x;
if(x==0)
cout<<"zero"<<endl;
else if((int)x==x)
{
if(x>0)
cout<<"positive integer"<<endl;
else
cout<<"negative integer"<<endl;
}else{
if(x>0)
cout<<"positive real"<<endl;
else
cout<<"negative real"<<endl;
}
return 0;
}
//if-else的级联
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
#include <iostream>
using namespace std;
int main()
{
double x, y;
cin>>x>>y;
if(x>0&&y>0)
cout<<"1"<<endl;
else if(x<0&&y>0)
cout<<"2"<<endl;
else if(x<0&&y<0)
cout<<"3"<<endl;
else
cout<<"4"<<endl;
return 0;
}
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
#include <iostream>
using namespace std;
int main()
{
char c;
cin>>c;
if(c>='0'&&c<='9')
cout<<"0"<<endl;
else if(c>='A'&&c<='Z')
cout<<"1"<<endl;
else if(c>='a'&&c<='z')
cout<<"2"<<endl;
else
cout<<"-1"<<endl;
return 0;
}
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
#include <iostream>
using namespace std;
int main()
{
int score;
cin>>score;
if(score>=90&&score<=100)
cout<<"5"<<endl;
else if(score>=80&&score<=89)
cout<<"4"<<endl;
else if(score>=70&&score<=79)
cout<<"3"<<endl;
else if(score>=60&&score<=69)
cout<<"2"<<endl;
else if(score>=0&&score<=9)
cout<<"0"<<endl;
else
cout<<"1"<<endl;
return 0;
}
6.显示n个字符(10分)
题目内容:
编写程序,输如正整数n和字符c,在一行输出n个字符c。如输入:10 #,显示
##########
输入:
一个正整数n和一个字符c,用空格隔开
输出:
一行,n个字符c
样例1输入:
10 #
样例1输出:
##########
时间限制:500ms内存限制:32000kb
#include <iostream>
using namespace std;
int main()
{
int n;
char c;
cin>>n>>c;
for(int i=0; i<n; i++)
cout<<c;
cout<<endl;
return 0;
}
7.显示字符组成的矩形(10分)
题目内容:
编写程序,输入行数n、列数m和一个字符c,显示由字符c组成的n行m的矩形。
如输入:5 10 #,输出:
##########
##########
##########
##########
##########
输入:
两个正整数和一个字符,用空格隔开
输出:
由字符c组成的矩形
样例1输入:
5 10 #
样例1输出:
##########
##########
##########
##########
##########
时间限制:500ms内存限制:32000kb
#include <iostream>
using namespace std;
int main()
{
int r, c;
char ch;
cin>>r>>c>>ch;
for(int i=0; i<r; i++)
{
for(int j=0; j<c; j++)
cout<<ch;
cout<<endl;
}
return 0;
}
8.用循环计算1+2+3+…+n(10分)
题目内容:
编写程序,输入非负整数n,计算s=1+2+3+…+n的值。要求使用循环,而不是使用公式。
输入:
非负整数n
输出:和
注意,请自己分别使用for和while实现。
样例1输入:
10
样例1输出:
55
时间限制:500ms内存限制:32000kb
#include <iostream>
using namespace std;
int main()
{
int n;
int sum=0;
cin>>n;
for(int i=1; i<=n; i++)
sum+=i;
cout<<sum<<endl;
return 0;
}
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
#include <iostream>
using namespace std;
int main()
{
double sum=0.0;
int n;
cin>>n;
if(n==0)
cout<<"0"<<endl;
else{
for(int i=1; i<=n; i++)
sum+=1.0/i;
cout<<sum<<endl;
}
return 0;
}
10.计算n!(10分)
题目内容:
编写程序,输入非负整数n,计算n!。0!=1。
输入:非负整数n
输出:n!
【提示】阶乘的初始值应设为1。请自己分别使用for和while循环实现。
样例1输入:
6
样例1输出:
720
时间限制:500ms内存限制:32000kb
#include <iostream>
using namespace std;
int f(int n)
{
if(n==1||n==0)
return 1;
return n*f(n-1);
}
int main()
{
int n;
cin>>n;
cout<<f(n)<<endl;
return 0;
}
//用了递归
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<<a;
i++;
while(i<n)
{
cout<<" "<<a;
i++;
}
cout<<endl;
样例1输入:
3
样例1输出:
1 -1 1
样例2输入:
4
样例2输出:
1 -1 1 -1
时间限制:500ms内存限制:32000kb
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int sign=1;
cout<<sign;
for(int i=2; i<=n; i++)
{
sign*=-1;
cout<<" "<<sign;
}
cout<<endl;
return 0;
}
//方法不够好,可以直接用if解决
12.判断整数的位数(10分)
题目内容:
编写程序,输入非负整数,判断整数的位数。如输入:12,输出:2
输入:一个非负整数
输出:整数的位数
【提示】
样例1输入:
12
样例1输出:
2
样例2输入:
1234
样例2输出:
4
时间限制:500ms内存限制:32000kb
#include <iostream>
using namespace std;
int main()
{
int x;
cin>>x;
int cnt=0;
do
{
x/=10;
cnt++;
}while(x);
cout<<cnt<<endl;
return 0;
}
//比较经典
13.求非负整数的各位数字的和(10分)
题目内容:
编写程序,输入非负整数,输出其各位数字的和,如输入:1234,输出10.
输入:一个非负整数
输出:整数
【提示】
样例1输入:
1234
样例1输出:
10
时间限制:500ms内存限制:32000kb
#include <iostream>
using namespace std;
int main()
{
int x;
cin>>x;
int sum=0;
do
{
sum+=x%10;
x/=10;
}while(x);
cout<<sum<<endl;
return 0;
}
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
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;
for(int i=1; i<=n; i++)
{
for(int j=1; j<=i; j++)
{
if(j!=i)
cout<<i<<"*"<<j<<"="<<i*j<<" ";
else
cout<<i<<"*"<<j<<"="<<i*j;
}
cout<<endl;
}
return 0;
}
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
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;
for(int i=n; i>=1; i--)
{
for(int j=1; j<=i; j++)
{
if(j!=i)
cout<<i<<"*"<<j<<"="<<i*j<<" ";
else
cout<<i<<"*"<<j<<"="<<i*j;
}
cout<<endl;
}
return 0;
}
16.Fibonacci序列(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
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int a[10000]={0,1};
cout<<"0";
for(int i=1; i<=n; i++)
{
a[i+1]=a[i]+a[i-1];
cout<<" "<<a[i];
}
cout<<endl;
return 0;
}
//不能用递归