1. 数字比较
定义一个函数check(n,d),让它返回一个布尔值,如果数字d在正整数n的某位中出现则返回true,否则返回false。
例如:check(325719,3)==true;check(77829,1)==false;
【样例输入1】
325719 3
【样例输出1】
true
【样例输入2】
77829 1
【样例输出2】
false
#include<iostream> #include<string> #include<cstring> using namespace std; int check(string a,char b){ for(int i = 0;i < a.length(); i++){ if(a[i] == b){ return 1; } } return 0; } int main(){ string c; char d; cin>>c; cin >> d; if(check(c,d)==1){ cout << "true"; }else{ cout << "false"; } return 0; }
2. 图像旋转
【问题描述】
输入一个n行m列的黑白图像,将它顺时针旋转90度后输出。
输入:第一行包含两个整数n和m,表示图像包含像素点的行数和列数。1 <= n <= 100,1 <= m <= 100。接下来n行,每行m个整数,表示图像的每个像素点灰度。相邻两个整数之间用单个空格隔开,每个元素均在0~255之间。
输出:m行,每行n个整数,为顺时针旋转90度后的图像。相邻两个整数之间用单个空格隔开。
【样例输入】
3 3
1 2 3
4 5 6
7 8 9
【样例输入】
7 4 1
8 5 2
9 6 3
#include<iostream> using namespace std; int a[101][101]; int main(){ int m,n; cin >> m >> n; for(int i=1;i<=m;i++){ for(int j=1;j<=n;j++){ cin>>a[i][j]; } } for(int j=1;j<=n;j++){ for(int i=m;i>=1;i--){ cout<<a[i][j]<<" "; } cout<<endl; } }
1. 算术表达式求值
两位正整数的简单算术运算(只考虑整数运算),算术运算为:
+,加法运算; -,减法运算; *,乘法运算; /,整除运算; %,取余运算。
算术表达式的格式为(运算符前后可能有空格):运算数 运算符 运算数
请输出相应的结果。
输入:一行算术表达式;
输出:输出计算结果,保留两位小数;
要求:使用函数的方法来计算。
【样例输入】
32+64
【样例输出】
96.00
#include <iostream> #include <iomanip> using namespace std; int add(int a, int b){ return a+b; } int sub(int a, int b){ return a-b; } int mul(int a, int b){ return a*b; } double div(int a, int b){ return a*1.0/b; } int main(){ int m, n; char x; double c; cin >> m >> x >> n; if(x=='+'){ c=add(m,n); } if(x=='-'){ c=sub(m,n); } if(x=='*'){ c=mul(m,n); } if(x=='/'){ c=div(m,n); } cout << fixed << setprecision(2) << c << endl; return 0; }
2. 区间内的真素数
找出整数M到N之间的真素数;
真素数的定义: 如果一个正整数为素数,且其反序也为素数,那么这个正整数就为真素数。例如,11,13 均为真素数,因为11的反序还是为11,13 的反序为 31 也为素数。
输入:两个数 M 和 N,空格间隔,1 <= M <= N <= 100000。
输出:按从小到大输出 M 和 N 之间(包括 M 和 N )的真素数,逗号间隔。如果之间没有真素数,则输出 No。
【样例输入】
10 35
【样例输出】
11,13,17,31
#include<iostream> #include<cmath> using namespace std; //13 int fanxu(int n)//返回n的反序数 { int sum=0,l; while(n!=0){ l=n%10; // sum=sum*10+l; //sum = 3 n/=10; //1 } return sum; //31 } int prime(int n){ //7 int i; if(n==1){ return 0; } for(i=2;i<=sqrt(n);i++){ if(n%i==0){ return 0; } } return 1; } int main(){ int n,m,v=1,i; cin >> m >> n; for(i=m;i<=n;i++){ if(prime(i)==1&&prime(fanxu(i))==1){ if(v==0){ cout<<","; } v=0; cout<<i; } } if(v==1){ cout<<"No"<<endl; } return 0; }
3. 哥德巴赫猜想
哥德巴赫猜想的命题之一是:大于6的偶数等于两个素数之和,输入两个数字m和n,将m和n之间(包括m和n)所有的偶数表示成两个素数之和。
输入:一行两个正整数m和n,其中5<m<n<100;
输出:将m和n之间所有偶数表示成两个素数之和,如果有多种分解方法,输出包含最小素数的那一个,例如10=5+5,10=3+7,我们只用输出10=3+7就可以了;
【样例输入】
6 10
【样例输出】
6 = 3 + 3
8 = 3 + 5
10 = 3 + 7
#include <iostream> using namespace std; bool prime(int n){ if(n==1){ return false; }else{ for(int i = 2;i < n;i++){ if(n%i ==0){ return false; } } return true; } } int main(){ int m,n; cin >> m>> n; for(int i=m;i<= n;i++){ if(i % 2 == 0){ for(int j = 2;j < i;j++){ if(prime(j)&&prime(i-j)){ cout << i << " = " << j << " + " << (i-j) << endl; break; } } } } return 0; }