编程题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;
}
}