实践题1

【问题描述】编写具有如下原型的函数:bool f(long x);其功能为:若整数 x 仅由偶数字(0、2、4、6、8)组成时(如 x=26480),函数返回 true,否则返回 false(如当 x=22034 时)。并编制主函数对它进行调用。

【输入形式】只能是一个整数数字,中间不能有空格等其他字符;
【输出形式】只输出true或者false,后面不要换行。
【样例输入】26480
【样例输出】true
【样例说明】输入输出时不要带有其他说明文字或符号

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<iostream>
using namespace std;
bool f(long x)
{
while(x)
{
if(x%10%2!=0) return false;
x/=10;
}
return true;
}
int main()
{
long a;
cin >> a;
if(f(a)) cout << "true";
else cout << "false";
return 0;
}

实践题2

【问题描述】编写具有如下原型的函数:void find(int i, int n); 实现从 i 开始找起,连续找出 n 个素数并显示在屏幕上。如:实参为10 和 8 后,输出的 8 个素数应为:11,13,17,19,23,29,31,37。

【输入形式】输入两个整数,前一个是查找的起始数字,后一个是指定查找几个素数;
【输出形式】输出指定数量的素数,每个素数后面加一个空格作为分隔符,最后一个数字后面可以有一个空格,但不需要换行。
【样例输入】13 4
【样例输出】13 17 19 23
【样例说明】输出结果中除了题目中说明的空格,不要加其他文字和符号。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include<iostream>
#include<cmath>
using namespace std;
int is_prime(int n)
{
int j = 0;
for (j = 2; j <=sqrt (n); j++)
{
if (n%j == 0)
{
return 0;
}
}
return 1;
}
void find(int i,int n)
{
while(n)
{
if(is_prime(i))
{
cout << i << " ";
n--;
i++;
}
else i++;
}
}

int main()
{
int a,b;
cin >> a >> b;
find(a,b);
return 0;
}

实践题3

【问题描述】输入正整数start和end,找出从start到end这一区间段内哪一个数n的因子和最大,并将该n及其因子和maxSum作为结果输出。例如,当start=10,end=15时,所求的n应该为12,而maxSum应该为16。

要求:设计函数计算n的因子和,其中因子和为包括1但不包括n本身的所有因子之和。

【输入形式】两个整数,用来指定查找的起始数字和结束数字;
【输出形式】两个整数,中间用一个空格隔开,前一个是因子和最大的数字,后一个是因子和,最后一个数字后面不要有空格和换行。
【样例输入】10 15
【样例输出】12 16
【样例说明】输出不要有多余的空格和换行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include<iostream>
using namespace std;
int yin_sum(int n)
{
int sum=0;
for(int i=1;i<n;i++)
if(n%i==0)
sum+=i;
return sum;
}
int main()
{
int start,end,maxsum=-1,temp,aim=0;
cin >> start >> end;
for(int i=start;i<=end;i++)
{
temp=yin_sum(i);
if(temp > maxsum)
{
maxsum=temp;
aim=i;
}
}
cout << aim << " " << maxsum;
return 0;
}

实践题4

在这里插入图片描述

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include<iostream>
#include<cmath>
using namespace std;
bool is_hui(long n)
{
int copy=0;
int num=n;
while(num>0)
{
copy=copy*10+num%10;
num/=10;
}
return (n==copy?1:0);
}

int main()
{
int n;
cin >> n;
for(int i=1;i<=n;i++)
if(is_hui(i)&&is_hui(i*7)&&is_hui(i*i*3))cout << i << " ";

return 0;
}

实践题5

【问题描述】键盘输入正整数 n,求出n与其反序数x之和并输出。例如,输入2038,n+x = 2038 +8302 =10340,输出应为10340。要求:编写函数实现数据转换成反序数值。

【输入形式】输入一个整数;
【输出形式】输出一个整数;
【样例输入】2038
【样例输出】10340
【样例说明】不要任何输入输出的文字提示。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<iostream>
#include<cmath>
using namespace std;
int fun(int n)
{
int ans=0;
while(n>0)
{
ans=ans*10+n%10;
n/=10;
}
return ans;
}
int main()
{
int n;
cin >> n;
cout << fun(n)+n;
return 0;
}

 评论

载入天数...载入时分秒...