超算考核(第一次)2022.10.28

最大公约数和最小公倍数

#include<iostream> 
using namespace std;
int main(){
    int a,b,i,j,tmp;
    cin>>a
    >>b;
    if(a<b){
        tmp=a;
        a=b;
        b=tmp;
    } 
    //此时有a>=b 
    //1.最大公约数i
    for(i=b-1;i>0;i--){
        if((a%i==0)&&(b%i==0))
        {break;
        }
    } 

    //2.最小公倍数j
        for(j=a;j<=a*b;j++){
        if((j%a==0)&&(j%b==0))
        {break;
        }
    } 
 
     
    //输出
    cout<<i
        <<'\n'    
        <<j; 
     
    return 0; 
}     
 

整数反转:    
#include<iostream>
#include<math.h> 
using namespace std;
int main(){
    int n,i=-1,sum=0,tmp;
    cin>>n;
    tmp=n;
    while(tmp){
        tmp/=10;
        i++;
    }
    while(n){
        sum+=(n%10*pow(10,i));
        i--;
        n/=10;
    }
    cout<<sum;
    return 0;

//数字反转 

#include<iostream>
using namespace std;
int main(){
    int n; 
    cin>>n;
    while(n){
    cout<<n%10;
    n/=10;    
    }
    return 0;

//印符反转      
     
     
  #include<iostream>
using namespace std;
int main(){
    int i,j; 
    const int n=15;//此处以15举例             
    int a[15][15]; //我使用的编译器不能使用int a[n][n],只能接受常数初始化。请直接带入后面这个。 
    for(i=0;i<n;i++){
        for(j=0;j<=i;j++){
        if(j==i||j==0){
            a[i][j]=1;
        }else
            {a[i][j]=a[i-1][j-1]+a[i-1][j];
        }            
        cout<<a[i][j];            
            if(i==j){
            cout<<'\n';
            }else{
            cout<<'\t';
            }
            }
    }
    
    

附:运行结果
1
1       1
1       2       1
1       3       3       1
1       4       6       4       1
1       5       10      10      5       1
1       6       15      20      15      6       1
1       7       21      35      35      21      7       1
1       8       28      56      70      56      28      8       1
1       9       36      84      126     126     84      36      9       1
1       10      45      120     210     252     210     120     45      10      1
1       11      55      165     330     462     462     330     165     55      11      1
1       12      66      220     495     792     924     792     495     220     66      12      1
1       13      78      286     715     1287    1716    1716    1287    715     286     78      13      1
1       14      91      364     1001    2002    3003    3432    3003    2002    1001    364     91      14      1

闰年判断
 #include<iostream>
using namespace std;
int main(){
    int n;
    cin>>n;
    if((n%400==0)||((n%4==0)&&(n%100!=0))){
        cout<<"yes"; 
    }else{
        cout<<"no";
    }
    return 0;
}     
     
 统计单词

#include<iostream>
#include<string.h>
using namespace std;
int main(){
    int cnt=0,number=0;//约定:输入字符'#'表示短文结束 
    char a;
    a=getchar();
    while(a!='#'){    
        if(((a<'a'&&a>'z') ||(a<'A'&&a>'Z'))&&cnt==1){
            number++;
            cnt=0;
        }
        a=getchar();    
    }

    cout<<number;
    return 0;
}

   

前1000个素数
 #include<iostream>
using namespace std; 
int isprime(int i,int knownprime[],int cnt);
int main()
{
    int i=3,cnt=1,loc=0;
    const int number=1000;
    int prime[number]={2};
    cout<<"2"<<'\t';
    for(i=3;cnt<number;i++){
        loc=isprime(i,prime,cnt);
    if(loc==0){
    prime[cnt]=i;
    printf("%d\t",i); 
        if((cnt+1)%5==0)
        {cout<<'\n';
        }
    cnt++;
    loc=0;
    }
    }
    return 0;
}
int isprime(int i,int knownprime[],int cnt)
{int t=0,ret=0;
for(;t<cnt;t++){
if(i%knownprime[t]==0){
ret=1;break;}
}
return ret;
}

冒泡排序(指针)    

#include<iostream>
using namespace std;
void swap2(int*a,int*b);
int main(){
    int i,j,tmp;
    const int size=3;//此处以15举例 
    int a[3];//我使用的编译器只支持常数定义数组大小。此处更改为int a[size]. 
    for(i=0;i<size;i++){
        cin>>a[i];
    }
    for(i=0;i<size;i++){
        for(j=0;j<(size-i-1);j++){
        if(a[j]>a[j+1]){
            swap2(&a[j],&a[j+1]);        
        }                                        
        }
    }
    for(i=0;i<size;i++){
        cout<<a[i]
        <<' ';
    }
    return 0;    

void swap2(int*a,int*b){
    int tmp=0;
    tmp=*a;
    *a=*b;
    *b=tmp;
}

 冒泡排序(引用)

#include<iostream>
using namespace std;
void swap1(int&a,int&b);
int main(){
    int i,j,tmp;
    const int size=5;//此处以15举例 
    int a[5];//我使用的编译器只支持常数定义数组大小。此处更改为int a[size]. 
    for(i=0;i<size;i++){
        cin>>a[i];
    }
    for(i=0;i<size;i++){
        for(j=0;j<(size-i-1);j++){
        if(a[j]>a[j+1]){
            swap1(a[j],a[j+1]);        
        }                                        
        }
    }
    for(i=0;i<size;i++){
        cout<<a[i]
        <<' ';
    }
    return 0;    

void swap1(int&a,int&b){
    int tmp;
    tmp=a;
    a=b;
    b=tmp;
}

   回文质数

#include<iostream>
#include<math.h>
using namespace std;
int main(){
    int n,isprime=1,i;
    cin>>n;
    //判断质数 
    for(i=2;i<n;i++){
        if(n%i==0){
            isprime=0;
            break;
        }
    }
    //判断回文
    int a,b,t,s,cnt=-2,ishuiwen=1;
    s=n;    
    do{
    n/=10;
    cnt++;    
    } while(n);
    
    do{
    a=n%10;
    t=pow(10,cnt);
    b=n%t;
    cnt-=2;
    if(a!=b){
        ishuiwen=0;
        break;
    }
    n=n-a-b*pow(10,cnt);
    }while(n);
    n=s; 
    //输出
    if(isprime==1&&ishuiwen==1){
        cout<<n
            <<"是回文质数。";
    } 
    else cout<<"不是回文质数。"; 

 个人信息
#include<string>
#include<iostream> 
using namespace std;
int main(){
string name;
int classes,number;
cin>>classes 
    >>name
    >>number;
cout<<classes
    <<'\n'
    <<name
    <<'\n'
    <<number;
    return 0;    
}

类的基本功能(可能有误,还没有系统学习)

basicuses.h文件:

#ifndef BASICUSES_H
#define BASICUSES_H

class Basicuses
{
    public:
        Basicuses();
        ~Basicuses();
        void push(stack ptrs,elementtype item);
        elementype pop(stack ptrs);
        struct snode;
        
    protected:
        char* stsck ptrs;
        char elementtype item;
        typedef int position;
        int maxsize;
};

#endif

basicuses.cpp文件:

#include "Basicuses.h"

Basicuses::Basicuses()
{
}

Basicuses::~Basicuses()
{
}
void push(stsck ptrs,elementtype item){
if(ptrs->top==maxsize-1){
        cout<<"堆栈满了";
        return ;
    }else{
        ptrs->data[++(ptrs->top)]=item;
        return ;
    }

elementype pop(stack ptrs){
    if(ptrs->top==-1){
            cout<<"堆栈已空";
            return NULL;
             
    }else{
            return(ptrs->data[(ptrs->top)--]);
    }
}
struct snode{
    elementtype data[maxsize];
    int top;
};

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值