C++ 实验三

编程题1

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

输入
只能是一个整数数字,中间不能有空格等其他字符

输出
只输出true或者false,后面不要换行

样例输入
26480
样例输出
true
#include <iostream>
using namespace std;
void find(int x){
	int a[1000];
	int n = 0;
	while(x>0){
		a[n++] = x%10;
		x = x/10;	
	}
	bool t =  true;
	for(int i = 0;i<n;i++){
		if(a[i]%2!=0){
			t = false;
			break;
		}
	}
	if(t)cout<<"true";
	else
	cout<<"false";
}
int main(){
	int x;
	cin>>x;
	find(x);
	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
#include <iostream>
using namespace std;
void print(int x,int y){
	int n = 0;
	int i,j;
	for(i = x;;i++){
		for( j = 2;j*j<=i;j++){
			if(i%j == 0)
			break;
		}
		if(j*j>i){
		cout<<i<<" ";
		n++;
		if(n == y)
		break;
		}
	}
}

int main(){
	int m,n;
	cin>>m>>n;
	print(m,n);
	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
#include <iostream>
using namespace std;
int sum[1000];
int a[1000];
void print(int x,int y){
	int i,j;
	int maxsum;
	int n = 0;
	for(i = x;i<=y;i++){
		for(j = 1;j<i;j++){
			if(i%j == 0){
			sum[n] += j;
			a[n] = i;
			}
		}
		n++;
	}
	int q;
	maxsum = sum[0];
	for(int p = 0;p<n;p++){
		if(sum[p]>maxsum){
			maxsum = sum[p];
			q = p;
		}
	}
	cout<<a[q]<<" "<<maxsum;
} 
int main(){
	int m,n;
	cin>>m>>n;
	print(m,n);
	return 0;
}

编程题4

题目描述
编写具有如下原型的函数symm:bool symm(long n); 用来判断正整数n是否为“回文数”(正读与反读为大小相同的数),若是返回true,否则返false。并编写主函数,通过调用symm,求出n以内所有满足下述特征的m:m和7m以及3mm都是“回文数”,如1,11,88,…(因为m=1,7m=7,3mm=3;m=11,7m=77,3mm=363;m=88,7m=616,3mm=23232;…)

输入
搜索范围

输出
输出整数,每个整数后面有一个空格用于分隔,最后一个整数后可以有一个空格,但不要换行

样例输入
1000
样例输出
1 11 88 ……(这里省略了其他数据,不是输出省略号)
#include <iostream> 
using namespace std;
int a[1000];
bool symm(long int n){
	int p = 0;
	bool s = true;
	while(n>0){
		a[p++] = n%10;
		n = n/10;
	}
	for(int i = 0;i<=p/2;i++){
		if(a[i] != a[p-i-1])
		s = false;
	}
	return s;
}
int main(){
	int m;
	cin>>m;
	for(int i = 1;i<=m;i++){
		if(symm(i)&&symm(7*i)&&symm(3*i*i))
		cout<<i<<" ";
	}
	return 0;
}

编程题5

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

输入
输入一个整数

输出
输出一个整数

样例输入
2038
样例输出
10340
#include <iostream>
#include <cmath>
using namespace std;
int reverse(int n){
	int m = 0;
	int t = n;
	while(n>0){
		m*=10;
		m+=n%10;
		n = n/10;
	}
	return m+t;
}
int main(){
	int n;
	cin>>n;
	cout<<reverse(n);
	return 0;
}

编程题6

题目描述
定义包含10个整型数的一维数组,从键盘输入10个整数,然后再输入一个待查找的整数x,判断如果能在数组中找到x,则输出x“ is found at ”、下标,否则输出x“ is not found”。
说明:如果数组中找到多个与x相同的数,则只输出找到的首个元素。

输入
输入:第1行输入10个整数
第2行输入1个待查找的整数

输出
输出:x “ is found at”、下标(数据之间空1格)
或者:输出 x“ is not found”

样例输入
23 14 45 26 90 85 67 48 62 65
85
样例输出
85 is found at 5
#include <iostream>
using namespace std;
int main(){
	int a[10];
	int x,n;
	bool s = false;
	for(int i = 0;i<10;i++){
		cin>>a[i];
	}
	cin>>x;
	for(int i = 0;i<10;i++){
		if(a[i] == x){
			n = i;
			s = true;
			break;
		}
	}
	if(s){
		cout<<x<<" is found at "<<n;
	}
	else
	cout<<x<<" is not found";
	return 0;
}

编程题7

题目描述
读入一个3×4的矩阵,求出矩阵中的最大值,并输出最大值所在的行号和列号。

输入
共有3行,每行有4个用空格隔开的整数,表示矩阵的具体内容。

输出
在一行内输出三个用空格隔开的整数,分别表示矩阵中的最大值、最大值所在的行号和最大值所在的列号。行号和列号均从0开始排列。
请注意行尾输出换行。

样例输入
1 2 3 4
9 8 7 6
-10 10 -5 2
样例输出
10 2 1
#include <iostream>
using namespace std;
int main(){
	int a[3][4];
	for(int i = 0;i<3;i++){
		for(int j = 0;j<4;j++){
			cin>>a[i][j];
		}
	}
	int max = a[0][0];
	int row,lin;
	for(int i = 0;i<3;i++){
		for(int j = 0;j<4;j++){
			if(a[i][j]>max){
				max = a[i][j];
				row = i;
				lin = j;
			}
		}
	}
	cout<<max<<" "<<row<<" "<<lin;
	return 0;
} 

编程题8

题目描述
设A、B、C为2行4列矩阵(每个元素为double型)。设计矩阵加法程序,实现C=A+B。先从键盘输入矩阵A,然后输入矩阵B,最后输出矩阵C。

输入
输入:先输入矩阵A的2行元素,再输入矩阵B的2行元素。

输出
输出:矩阵C的2行元素(数据之间用1个空格分开)

样例输入
1 3 5 7
2 4 6 8
10 30 50 70
20 40 60 80
样例输出
11 33 55 77
22 44 66 88
#include <iostream>
using namespace std;
int main(){
	double a[2][4];
	double b[2][4];
	double c[2][4];
	for(int i = 0;i<2;i++){
		for(int j = 0;j<4;j++){
			cin>>a[i][j];
		}
	}
	for(int i = 0;i<2;i++){
		for(int j = 0;j<4;j++){
			cin>>b[i][j];
		}
	}
	for(int i = 0;i<2;i++){
		for(int j = 0;j<4;j++){
			c[i][j] = a[i][j]+b[i][j];
		}
	}
	for(int i = 0;i<2;i++){
		for(int j = 0;j<4;j++){
			cout<<c[i][j]<<" ";
		}
		cout<<endl;
	}
} 
  • 7
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值