C++刷题四

(一)输入一行电报文字,将字母变成其下一字母(如’a’变成’b’……’z’变成’a’其它字符不变)

(1)
#include <iostream>
using namespace std;
int main()
{
    int i=0;
    char a[i];
    while(cin>>a[i])
    {
        if(a[i]>='a'&&a[i]<'z')
        {
            a[i]=(int)a[i]+1;
            cout<<a[i];
        }
        else if(a[i]=='z')
            cout<<'a';
        else
            cout<<a[i];
        i++;
    }
    return 0;
}
方法(2)
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int main()
{
    int i=0;
    char a[100];
    gets(a);
    int len=strlen(a);
    while (a[i]!='\0')
    {
        if (a[i]>='a'&&a[i]<'z')
            a[i]+=1;
        else if (a[i]=='z')
            a[i]='a';
            i++;
    }
    for(i=0; i<len; i++)
        cout<<a[i];
    return 0;
}


(二)求一个3×3矩阵对角线元素之和。

#include <iostream>
using namespace std;
int main()
{
    int a[3][3],i,j;
    int s1,s2;
    for(i=0;i<3;i++)
        for(j=0;j<3;j++)
        cin>>a[i][j];
    s1=a[0][0]+a[1][1]+a[2][2];
    s2=a[0][2]+a[1][1]+a[2][0];
    cout<<s1<<" "<<s2<<endl;
    return 0;
}


(三)用筛法求N(<1000)之内的素数。

(1)
#include <iostream>
using namespace std;
int main()
{
    int n,i,j;
    cin>>n;
    for(i=1; i<n; i++)
    {
        for(j=2;j<i;j++)
        {
            if(i%j==0)
                break;
        }
        if(j==i)
        cout<<i<<endl;
    }
    return 0;
}
(2)
#include <iostream>
#include <cmath>
using namespace std;
bool isprimer(int );
int main()
{
    int n,i;
    cin>>n;
    for(i=2; i<n; i++)
    {
        if(isprimer(i))
            cout<<i<<" "<<endl;
    }
}
bool isprimer(int n)
{
    int r;
    for (r=2; r<=sqrt(n); ++r)
        if(n%r==0)
            break;
    if(r>sqrt(n))
        return n;
}


(四)有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。

#include <iostream> 
using namespace std; 
int main() 
{ 
    int n,i,m,k,*p; 
    cin>>n; 
    int a[n]; 
    p=a;   //指针p指向num
    for(i=0;i<=n;i++) 
        *(p+i)=i+1;   以1至n为序给每个人编号
    i=0; //i为每次循环时计数变量
    k=0; //k为按1,2,3报数时的计数变量
    m=0; //m为退出人数

    while(m<n-1)   //当退出人数比n-1少时(即未推出人数大于1时) 执行循环体
    { 
        if(*(p+i)!=0) 
            k++;   //将推出的人的编号置为0
        if(k==3) 
        { 
            *(p+i)=0; 
            k=0; 
            m++; 
        } 
        i++; 
        if(i==n)i=0;   //报数到尾后,i恢复为0
    } 
    while(*p==0)p++; 
    cout<<*p<<endl; 
    return 0; 
} 
 

(五)写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的消息。

#include <iostream>
#include <cmath>
using namespace std;
int is_prime(int n)
{
    int r;
    if(n==1)
        return 0;
    else
    {
        for (r=2; r<=sqrt(n); ++r)
            if(n%r==0)
                break;
        if(r>sqrt(n))
            return 1;
    }
}
int main()
{
    int flag,n;
    int is_prime(int);
    cin>>n;
    flag=is_prime(n);
    if(flag==1)
        cout<<"prime"<<endl;
    else
        cout<<"not prime"<<endl;
    return 0;
}


心得体会:每天都有人在进步,我努力让自己能够成为他们中的一员!每天积累一些代码,总会对自己有帮助的。继续加油!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值