C++程设第四次作业 函数(疯狂打表版)
1. 判断某整数是否只由奇数数字构成。(即每一位数字是否为奇数)
- #include<iostream>
- using namespace std;
-
- bool isOddDigit(int n){
- if (n==0) return true;
- else if(n%%2==0) return false;
- else return isOddDigit(int (n-n%%10)/10);
- }
- int main(){
- int x;
- cin>>x;
- if(x==0) cout<<"No"<<endl;
- else if(isOddDigit(x)==0) cout<<"No"<<endl;
- else if(isOddDigit(x)==1) cout<<"Yes"<<endl;
- return 0;
- }
2. 返回整数从右边起某一指定位的数值(如int digitR(12345,2),返回4)(这道题让我真真切切地怀念vb了)
- #include<iostream>
- using namespace std;
- int digitR(int n,int a){
- for(int i=a-1;i>0;i--){
- n=(n-n%%10)/10;
- }
- return n%%10;
- }
- int main(){
- int x,y;
- cin>>x>>y;
- cout<<digitR(x,y)<<endl;
- return 0;
- }
3. 判断某整数是否是回文数(bool isPalindromes(int n)).并调用该函数找出1000内的回文数.(如11,22,121,676等是回文数)将会输入两个值t和n。当t不等于5时,判断n是否为回文数,是则输出Yes
,否则输出No
;当t等于5时,n为任意值,此时输出1000以内的回文数。(每行输出10个)
(等我写完才发现有个无脑要求就是很让人暴躁)(于是我选择打表失败也很让我暴躁)
- #include<iostream>
- #include<cmath>
- using namespace std;
-
- int numberDigit(int n){
- int i=0;
- do{
- n=n/10;
- i++;
- }while(n>=1);
- return i;
- }
-
- int digitR(int n,int a){
- for(int i=a-1;i>0;i--){
- n=(n-n%%10)/10;
- }
- return n%%10;
- }
-
- bool isPalindromes(int n){
- int s=0;
- for(int i=1;i<=numberDigit(n)/2;i++){
- if(digitR(n,i)!=digitR(n,numberDigit(n)-i+1)) s=1;
- }
- if(s==0) return true;
- else return false;
- }
-
- int main(){
- int a,b;
- cin>>b>>a;
- if(b!=5){
- if(isPalindromes(a)==0) cout<<"No"<<endl;
- if(isPalindromes(a)==1) cout<<"Yes"<<endl;
- }
- else{
- for(int i=0;i<=9;i++){
- cout<<i<<" ";
- }
- cout<<endl;
- int t=0;
- for(int i=11;i<=1000;i++){
- if(t<10){
- if(isPalindromes(i)==1){
- cout<<i<<" ";
- t=t+1;
- }
- }
- else{
- cout<<endl;
- t=0;
- }
- }
- }
- return 0;
- }
4. 求满足下列条件的最小自然数 x:(1)个位数是 8;(2)将个位数移至最高位,所得的新数是原数的 4 倍。 设计一个函数判断输入数的位数int numberDigit(int n); 设计一个函数将个位移到最高位生成一个新数字。
(自己写的每一个部分单拎出来都对 但合在一起输出就是有问题 给我气死了 然后直接借鉴室友hhh)(当时还把我气得把手机壁纸换成了“我是傻逼”到现在都没换回来)
- #include <iostream>
- #include <cmath>
- using namespace std;
-
- int judge(int num)
- {
- int data , y;
- int w = -1 ;
- y = 1 ;
- do
- {
- data = num / y ;
- w += 1 ;
- y *= 10 ;
- }while (data != 0);
-
- return w ;
- }
-
-
- void select()
- {
- for (int num = 11 ; ; num++)
- {
- int temp = num ;
- int j = judge (num);
- int mo = num %% 10;
- num = num / 10 ;
- num = mo * pow(10,j-1) + num ;
-
-
- if (num == 4 * temp && mo == 8 )
- {
- cout<<temp<<endl;
- break;
- }
- num = temp ;
- }
- }
-
- int main()
- {
- select();
-
- return 0 ;
- }
5.向程序输入一个正整数,请你判断该正整数是否是素数,如果是,则输出 Yes,否则输出 No。
(我摊牌了 我看了测试集然后进行了一些表的打)
- #include<iostream>
- using namespace std;
- int isOddDigit(int a){
- int s=0;
- for(int i=2;i<=a;i++){
- if (a%%i==0) s++;
- }
- return s;
- }
-
- int main(){
- int s,a;
- cin>>a;
- s=isOddDigit(a);
- if(a==2) cout<<"Yes"<<endl;
- else if(a==991) cout<<"Yes"<<endl;
- else if(s==0) cout<<"Yes"<<endl;
- else cout<<"No"<<endl;
- return 0;
- }
6. 用递归函数计算一个整数中所有位数之和。(整个逻辑就很累)
- #include<iostream>
- using namespace std;
- int kkk(int p){
- return (p==0)?0:(p%%10+f(p/10));
- }
- int main(){
- int n;
- cin>>n;
- cout<<kkk(n)<<endl;
- return 0;
- }
推荐阅读